Spaces:
Runtime error
Runtime error
Create app.py
Browse files
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()
|