hassano94 commited on
Commit
ebe2c15
·
verified ·
1 Parent(s): c02fb77

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -0
app.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # main.py
2
+
3
+ from openai import OpenAI
4
+ import gradio as gr
5
+ from RAG_class import RAG_1177
6
+
7
+ def predict(message, history):
8
+ # Initialize RAG model
9
+ rag = RAG_1177()
10
+
11
+ # Prepare history in OpenAI format
12
+ history_openai_format = []
13
+ for human, assistant in history:
14
+ history_openai_format.append({"role": "user", "content": human })
15
+ history_openai_format.append({"role": "assistant", "content": assistant})
16
+
17
+ # System prompt
18
+ system_prompt = """Du är en omtänksam assistent som ger sjukrådgivningsfrågor baserad dokumentation från 1177.se. Frågorna du kommer få kan delas i tre olika kategorier:
19
+ 1. Relevanta frågor där frågan kan svaras med dokumenten från 1177. När du svarar på dessa frågor ska du även ge källorna i slutet på svaret.
20
+ 2. Relevanta uppföljningsfrågor gällande ett svar. Svara med din bästa förmåga och du behöver INTE ge referenser.
21
+ 3. Relevanta frågor men som inte kan svaras med dokumenten från 1177. Då ska du tydligt säga att du inte kan svara på frågan utifrån 1177.se information och be användaren att omformulera sin fråga. DU ska INTE ge källor.
22
+ 4. Orelevanta frågor, då ber användaren att hålla sig till ämnet och du behöver inte förklara vad för information du har. Du ska INTE ge källor. """
23
+
24
+ # Retrieve documents from RAG model
25
+ documents, urls = rag.retrieve(message, 3)
26
+
27
+ # User prompt
28
+ user_prompt = f"svara frågan utifrån den givna informationen: \n fråga: {message} \n ----------------------------------- \n information från 1177.se:{documents} \n källor: {urls}"
29
+
30
+ # Append prompts to history
31
+ history_openai_format.append({"role": "system", "content": system_prompt})
32
+ history_openai_format.append({"role": "user", "content": user_prompt})
33
+
34
+ # Initialize OpenAI client
35
+ client = OpenAI()
36
+
37
+ # Generate response from OpenAI model
38
+ response = client.chat.completions.create(
39
+ model='gpt-3.5-turbo',
40
+ messages=history_openai_format,
41
+ temperature=0.5,
42
+ stream=True
43
+ )
44
+
45
+ # Yield response progressively
46
+ partial_message = ""
47
+ for chunk in response:
48
+ if chunk.choices[0].delta.content is not None:
49
+ partial_message = partial_message + chunk.choices[0].delta.content
50
+ yield partial_message
51
+
52
+ yield partial_message
53
+
54
+ def main():
55
+ examples = [
56
+ "hur kan jag lindra min huvudvärk?",
57
+ "Vad är symptomen för covid-19?",
58
+ "Vilka läkemedel finns det för smärtlindring?",
59
+ "Hur kan jag bäst lindra mina symtom på pollenallergi?",
60
+ "Jag har svårt att somna på nätterna och känner mig trött under dagen. Vad kan jag göra för att förbättra min sömn?"
61
+ ]
62
+
63
+ description = "AI-chatbot som svarar på dina frågor utifrån dokument från 1177.se."
64
+
65
+ gr.ChatInterface(predict, title="1177 AI-chatbot", examples=examples, description=description).launch(share=True)
66
+
67
+ if __name__ == "__main__":
68
+ main()