Update app.py
Browse files
app.py
CHANGED
|
@@ -39,11 +39,13 @@ Question: {question}
|
|
| 39 |
============================
|
| 40 |
Answer in Markdown:
|
| 41 |
"""
|
|
|
|
| 42 |
daysoff_assistant_prompt = PromptTemplate(
|
| 43 |
input_variables=["chat_history", "question"],
|
| 44 |
template=daysoff_assistant_template,
|
| 45 |
)
|
| 46 |
|
|
|
|
| 47 |
class APIConnectionError(Exception):
|
| 48 |
"""Raised when API connection fails"""
|
| 49 |
pass
|
|
@@ -68,11 +70,6 @@ async def async_post_request(url, headers, data):
|
|
| 68 |
except requests.RequestException as e:
|
| 69 |
raise APIResponseError(f"API request failed: {str(e)}")
|
| 70 |
|
| 71 |
-
|
| 72 |
-
async def long_running_task():
|
| 73 |
-
loop = asyncio.get_running_loop()
|
| 74 |
-
with ThreadPoolExecutor() as pool:
|
| 75 |
-
return await loop.run_in_executor(pool, your_function)
|
| 76 |
|
| 77 |
@cl.set_starters
|
| 78 |
async def set_starters():
|
|
@@ -102,20 +99,14 @@ async def set_starters():
|
|
| 102 |
#------?-----@cl.Step
|
| 103 |
#------?-----@cl.Context
|
| 104 |
|
|
|
|
| 105 |
@cl.on_chat_start
|
| 106 |
-
async def
|
| 107 |
-
|
|
|
|
| 108 |
cl.user_session.set("max_retries", 3)
|
|
|
|
| 109 |
|
| 110 |
-
async def setup():
|
| 111 |
-
asyncio.create_task(keep_alive())
|
| 112 |
-
|
| 113 |
-
async def keep_alive():
|
| 114 |
-
while True:
|
| 115 |
-
await asyncio.sleep(20)
|
| 116 |
-
await cl.Message(content="", author="system").send()
|
| 117 |
-
|
| 118 |
-
def setup_multiple_chains():
|
| 119 |
llm = OpenAI(
|
| 120 |
model="gpt-3.5-turbo-instruct",
|
| 121 |
temperature=0.7,
|
|
@@ -140,6 +131,21 @@ def setup_multiple_chains():
|
|
| 140 |
|
| 141 |
cl.user_session.set("llm_chain", llm_chain)
|
| 142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
|
| 144 |
@cl.on_message
|
| 145 |
async def handle_message(message: cl.Message):
|
|
@@ -225,26 +231,15 @@ async def handle_message(message: cl.Message):
|
|
| 225 |
error_messages = {
|
| 226 |
APIConnectionError: "Kunne ikke koble til bookingsystemet. Prรธv igjen senere.",
|
| 227 |
APIResponseError: "Det oppstod en feil ved henting av bookingdata.",
|
| 228 |
-
BookingNotFoundError: "Ingen
|
| 229 |
}
|
| 230 |
await cl.Message(content=f"โ {error_messages[type(e)]}\n\nPrรธv igjen, kanskje du feilstavet eller glemte ett siffer eller en bokstav?\n\nHvis du ser denne feilmedlingen gjentatte ganger, vennligst kontakt kundeservice@daysoff.no sรฅ de kan hjelpe deg.").send()
|
| 231 |
return None
|
| 232 |
-
except requests.exceptions.RequestException as e:
|
| 233 |
-
await cl.Message(content="En uventet feil oppstod. Vennligst kontakt kundeservice@daysoff.no").send()
|
| 234 |
-
return None
|
| 235 |
|
| 236 |
else:
|
| 237 |
try:
|
| 238 |
-
|
| 239 |
-
response = await llm_chain.ainvoke({
|
| 240 |
-
"question": user_message,
|
| 241 |
-
"chat_history": ""
|
| 242 |
-
}, callbacks=[cl.AsyncLangchainCallbackHandler()])
|
| 243 |
await cl.Message(content=response["text"]).send()
|
| 244 |
-
except asyncio.TimeoutError:
|
| 245 |
-
await cl.Message(content="Request timed out. Please try again.").send()
|
| 246 |
except Exception as e:
|
| 247 |
await cl.Message(content=f"Error: {str(e)}").send()
|
| 248 |
|
| 249 |
-
except Exception as e:
|
| 250 |
-
await cl.Message(content="Connection error. WTF yo...").send()
|
|
|
|
| 39 |
============================
|
| 40 |
Answer in Markdown:
|
| 41 |
"""
|
| 42 |
+
|
| 43 |
daysoff_assistant_prompt = PromptTemplate(
|
| 44 |
input_variables=["chat_history", "question"],
|
| 45 |
template=daysoff_assistant_template,
|
| 46 |
)
|
| 47 |
|
| 48 |
+
|
| 49 |
class APIConnectionError(Exception):
|
| 50 |
"""Raised when API connection fails"""
|
| 51 |
pass
|
|
|
|
| 70 |
except requests.RequestException as e:
|
| 71 |
raise APIResponseError(f"API request failed: {str(e)}")
|
| 72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
@cl.set_starters
|
| 75 |
async def set_starters():
|
|
|
|
| 99 |
#------?-----@cl.Step
|
| 100 |
#------?-----@cl.Context
|
| 101 |
|
| 102 |
+
|
| 103 |
@cl.on_chat_start
|
| 104 |
+
async def setup():
|
| 105 |
+
|
| 106 |
+
cl.user_session.set("socket_auth", True)
|
| 107 |
cl.user_session.set("max_retries", 3)
|
| 108 |
+
cl.user_session.set("connection_attempts", 0)
|
| 109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
llm = OpenAI(
|
| 111 |
model="gpt-3.5-turbo-instruct",
|
| 112 |
temperature=0.7,
|
|
|
|
| 131 |
|
| 132 |
cl.user_session.set("llm_chain", llm_chain)
|
| 133 |
|
| 134 |
+
asyncio.create_task(keep_alive())
|
| 135 |
+
|
| 136 |
+
|
| 137 |
+
async def long_running_task(message_content: str):
|
| 138 |
+
loop = asyncio.get_running_loop()
|
| 139 |
+
with ThreadPoolExecutor() as pool:
|
| 140 |
+
llm_chain = cl.user_session.get("llm_chain")
|
| 141 |
+
return await loop.run_in_executor(
|
| 142 |
+
pool,
|
| 143 |
+
lambda: llm_chain.invoke({
|
| 144 |
+
"question": message_content,
|
| 145 |
+
"chat_history": ""
|
| 146 |
+
})
|
| 147 |
+
)
|
| 148 |
+
|
| 149 |
|
| 150 |
@cl.on_message
|
| 151 |
async def handle_message(message: cl.Message):
|
|
|
|
| 231 |
error_messages = {
|
| 232 |
APIConnectionError: "Kunne ikke koble til bookingsystemet. Prรธv igjen senere.",
|
| 233 |
APIResponseError: "Det oppstod en feil ved henting av bookingdata.",
|
| 234 |
+
BookingNotFoundError: "Ingen DATA funnet med dette bookingnummeret."
|
| 235 |
}
|
| 236 |
await cl.Message(content=f"โ {error_messages[type(e)]}\n\nPrรธv igjen, kanskje du feilstavet eller glemte ett siffer eller en bokstav?\n\nHvis du ser denne feilmedlingen gjentatte ganger, vennligst kontakt kundeservice@daysoff.no sรฅ de kan hjelpe deg.").send()
|
| 237 |
return None
|
|
|
|
|
|
|
|
|
|
| 238 |
|
| 239 |
else:
|
| 240 |
try:
|
| 241 |
+
response = await long_running_task(message.content)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 242 |
await cl.Message(content=response["text"]).send()
|
|
|
|
|
|
|
| 243 |
except Exception as e:
|
| 244 |
await cl.Message(content=f"Error: {str(e)}").send()
|
| 245 |
|
|
|
|
|
|