Update app.py
Browse files
app.py
CHANGED
@@ -21,6 +21,45 @@ from api_docs_mck import api_docs_str
|
|
21 |
|
22 |
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
daysoff_assistant_template = """
|
25 |
You are a customer support assistant (’kundeservice AI assistent’) for Daysoff.no
|
26 |
By default, you respond in Norwegian language, using a warm, direct and professional tone.
|
@@ -51,12 +90,12 @@ api_url_prompt = PromptTemplate(input_variables=['api_docs', 'question'],
|
|
51 |
|
52 |
api_response_template = """
|
53 |
With the API Documentation for Daysoff's official API: {api_docs} in mind,
|
54 |
-
and
|
55 |
and given this API URL: {api_url} for querying,
|
56 |
here is the response from Daysoff's API: {api_response}.
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
Summary:
|
61 |
"""
|
62 |
|
@@ -102,7 +141,7 @@ def setup_multiple_chains():
|
|
102 |
|
103 |
@cl.on_message
|
104 |
async def handle_message(message: cl.Message):
|
105 |
-
user_message = message.content
|
106 |
llm_chain = cl.user_session.get("llm_chain")
|
107 |
api_chain = cl.user_session.get("api_chain")
|
108 |
|
@@ -121,8 +160,7 @@ async def handle_message(message: cl.Message):
|
|
121 |
},
|
122 |
callbacks=[cl.AsyncLangchainCallbackHandler()])
|
123 |
|
124 |
-
elif any(keyword in user_message for keyword in
|
125 |
-
"faq_ansatte", "faq_utleiere"]):
|
126 |
|
127 |
response = await api_chain.acall(user_message,
|
128 |
callbacks=[cl.AsyncLangchainCallbackHandler()])
|
|
|
21 |
|
22 |
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
|
23 |
|
24 |
+
FAQ_ANSATTE = [
|
25 |
+
"Hvordan registrerer jeg meg som bruker?",
|
26 |
+
"Når får jeg leieinstruks for min bestilling? Informasjon om nøkler etc.?",
|
27 |
+
"Det står barneseng og barnestol under fasiliteter, må dette forhåndsbestilles?",
|
28 |
+
"Kan jeg ta med hund eller katt?",
|
29 |
+
"Jeg har lagt inn en bestilling hva skjer videre?",
|
30 |
+
"Jeg har bestilt firmahytte, men kan ikke reise. Kan jeg endre navn på bestillingen til min kollega eller familiemedlem som vil reise i stedet for meg?",
|
31 |
+
"Kan jeg avbestille min reservasjon?",
|
32 |
+
"Jeg har bestilt utvask. Hva må jeg gjøre i tillegg til dette?",
|
33 |
+
"Jeg er medlem og eier en hytte! Kan jeg bli utleier i DaysOff?",
|
34 |
+
"Bestille opphold?"
|
35 |
+
]
|
36 |
+
|
37 |
+
FAQ_UTLEIERE = [
|
38 |
+
"Hva er betingelser for utleie?",
|
39 |
+
"Hvor lang tid har jeg på å bekrefte en bestilling?",
|
40 |
+
"Hvilke kanselleringsregler gjelder?",
|
41 |
+
"Hvem er kundene deres?",
|
42 |
+
"Kan jeg legge inn rabatterte priser for å lage egne kampanjer?",
|
43 |
+
"Når mottar jeg betaling for leie?",
|
44 |
+
"Jeg fikk en e-post om ny bestilling, men jeg finner den ikke i systemet?",
|
45 |
+
"Hvordan registrerer jeg opptatte perioder i kalenderen?",
|
46 |
+
"Jeg leier ut i andre kanaler. Hvordan kan jeg synkronisere kalenderne?"
|
47 |
+
]
|
48 |
+
|
49 |
+
PERSONVERNSPOLICY_QUESTIONS = [
|
50 |
+
"Hvilke personlige opplysninger samler vi inn?",
|
51 |
+
"Kan dere motta personlig informasjon fra tredjepart?",
|
52 |
+
"Hvordan bruker vi dine personlige opplysninger?",
|
53 |
+
"Med hvem deler vi dine personlige opplysninger?",
|
54 |
+
"Adferdsmessig annonsering?",
|
55 |
+
"Hvordan reagerer vi på « Spor ikke » forespørsler?",
|
56 |
+
"Hva er dine rettigheter?",
|
57 |
+
"Hvordan beskytter vi dataene dine?",
|
58 |
+
"Hvilke data brudd prosedyrer har vi på plass?",
|
59 |
+
"Hvem i vårt team har tilgang til dine data?",
|
60 |
+
"Endringer i denne policyen"
|
61 |
+
]
|
62 |
+
|
63 |
daysoff_assistant_template = """
|
64 |
You are a customer support assistant (’kundeservice AI assistent’) for Daysoff.no
|
65 |
By default, you respond in Norwegian language, using a warm, direct and professional tone.
|
|
|
90 |
|
91 |
api_response_template = """
|
92 |
With the API Documentation for Daysoff's official API: {api_docs} in mind,
|
93 |
+
and the specific user question: {question},
|
94 |
and given this API URL: {api_url} for querying,
|
95 |
here is the response from Daysoff's API: {api_response}.
|
96 |
+
If the response includes a booking ID (bestillingskode), present this information directly to the user without summarizing it.
|
97 |
+
For all other responses, please provide a clear and concise summary (in Norwegian) that directly addresses the user's question,
|
98 |
+
delivered in a manner that reflects the professionalism and warmth of a human customer service agent.
|
99 |
Summary:
|
100 |
"""
|
101 |
|
|
|
141 |
|
142 |
@cl.on_message
|
143 |
async def handle_message(message: cl.Message):
|
144 |
+
user_message = message.content #.lower()
|
145 |
llm_chain = cl.user_session.get("llm_chain")
|
146 |
api_chain = cl.user_session.get("api_chain")
|
147 |
|
|
|
160 |
},
|
161 |
callbacks=[cl.AsyncLangchainCallbackHandler()])
|
162 |
|
163 |
+
elif any(keyword in user_message for keyword in (FAQ_ANSATTE + PERSONVERNSPOLICY_QUESTIONS + FAQ_UTLEIERE)):
|
|
|
164 |
|
165 |
response = await api_chain.acall(user_message,
|
166 |
callbacks=[cl.AsyncLangchainCallbackHandler()])
|