jaczad commited on
Commit
a6ac792
·
1 Parent(s): 551acea

Dodany plik główny

Browse files
Files changed (1) hide show
  1. app.py +79 -0
app.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # %%
2
+ import gradio as gr
3
+ from openai import OpenAI
4
+ from langchain_chroma import Chroma
5
+ from langchain_huggingface import HuggingFaceEmbeddings
6
+
7
+
8
+
9
+ # %%
10
+ client=OpenAI()
11
+
12
+
13
+ # %%
14
+ embeddings = HuggingFaceEmbeddings(model_name='radlab/polish-sts-v2')
15
+
16
+ # %%
17
+ vector_store = Chroma(
18
+ collection_name='baza',
19
+ embedding_function=embeddings,
20
+ persist_directory='baza'
21
+ )
22
+
23
+
24
+
25
+ # Funkcja wyszukiwania najbardziej podobnych fragmentów
26
+ def szukaj(query, konwersacja):
27
+ query+=konwersacja
28
+ context_objects = vector_store.similarity_search(query=query, k=3)
29
+ context = "" # Inicjalizacja pustego ciągu znaków
30
+ for context_object in context_objects:
31
+ context += context_object.page_content + "\n"
32
+ return context
33
+
34
+
35
+
36
+
37
+ # Funkcja wyciągająca z historii tekst jako wsad do kontekstu
38
+ def formatuj_historie_dla_promptu(history):
39
+ prompt = ""
40
+ for message in history:
41
+ role = message["role"]
42
+ content = message["content"]
43
+ prompt += f"{content}\n"
44
+ return prompt
45
+
46
+
47
+
48
+ # Główna funkcja chata
49
+ def odp(message, history):
50
+ kontekst_konwersacji = formatuj_historie_dla_promptu(history)
51
+ Kontekst=szukaj(message, kontekst_konwersacji)
52
+ prompt= f"Konwersacja:\n{kontekst_konwersacji}\nKontekst z bazy wiedzy:\n{Kontekst}\nPytanie użytkownika: {message}"
53
+ response=client.chat.completions.create(
54
+ model='gpt-4o-mini',
55
+ temperature=0.2,
56
+ messages=[
57
+ {'role': 'system',
58
+ 'content': 'Jesteś ekspertem dostępności cyfrowej i masz na imię Jacek. Odpowiadaj krótko na pytania korzystając z kontekstu i historii konwersacji.'},
59
+ {'role': 'user',
60
+ 'content': prompt}
61
+ ]
62
+ )
63
+ history.append({'role': 'user', 'content': message})
64
+ history.append({'role': 'assistant', 'content': response.choices[0].message.content})
65
+ return '', history
66
+
67
+
68
+ ## Interfejs graficzny
69
+ with gr.Blocks(title='Jacek AI') as demo:
70
+ chatbot = gr.Chatbot(type='messages', label='Jacek AI')
71
+ msg = gr.Textbox(autofocus=True, label='Pytaj', show_label=False)
72
+ msg.submit(odp, [msg, chatbot], [msg, chatbot])
73
+ demo.launch()
74
+
75
+
76
+ # %%
77
+
78
+
79
+