camparchimedes commited on
Commit
528c393
ยท
verified ยท
1 Parent(s): 306c0a9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -29
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 start():
107
- cl.user_session.set("socket_auth", True)
 
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 booking funnet med denne koden."
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
- async with timeout(30):
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