camparchimedes commited on
Commit
2193cd3
Β·
verified Β·
1 Parent(s): 1fbce43

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -24
app.py CHANGED
@@ -33,6 +33,9 @@ from langchain_core.messages import BaseMessage
33
  from pydantic import BaseModel, Field
34
  from typing import List
35
 
 
 
 
36
  class InMemoryHistory(BaseChatMessageHistory, BaseModel):
37
  messages: List[BaseMessage] = Field(default_factory=list)
38
 
@@ -74,11 +77,9 @@ async def async_post_request(url, headers, data):
74
  return await asyncio.to_thread(requests.post, url, headers=headers, json=data)
75
 
76
 
77
- async def keepalive():
78
- while True:
79
- await asyncio.sleep(10)
80
- await cl.Message(content="").send()
81
 
 
 
82
  @cl.set_starters
83
  async def set_starters():
84
  return [
@@ -103,19 +104,13 @@ async def set_starters():
103
  icon="/public/idea.svg",
104
  )
105
  ]
106
-
107
-
108
-
109
- @cl.on_chat_start # <β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” Chainlit context | cl.config.run.log_level = "INFO"
110
- def setup_multiple_chains():
111
- cl.user_session.set("connection_attempts", 0)
112
- cl.user_session.set("last_connection_time", datetime.now())
113
-
114
- print("Session id:")
115
- #cl.user_session.set("id", session_id)
116
 
117
- #ws_session = WebsocketSession.get_by_id(session_id=session_id) # find other methods for WebsocketSession() to prevent oytage
118
- #init_ws_context(ws_session)
 
 
 
 
119
 
120
  llm = OpenAI(
121
  model="gpt-3.5-turbo-instruct",
@@ -140,7 +135,21 @@ def setup_multiple_chains():
140
  )
141
 
142
  cl.user_session.set("llm_chain", llm_chain)
 
 
 
143
 
 
 
 
 
 
 
 
 
 
 
 
144
 
145
  @cl.on_message
146
  async def handle_message(message: cl.Message):
@@ -193,13 +202,7 @@ async def handle_message(message: cl.Message):
193
 
194
  else:
195
  try:
196
- # --invoke LLM w/ user_message
197
- response = await llm_chain.ainvoke({
198
- "question": user_message,
199
- "chat_history": ""
200
- }, callbacks=[cl.AsyncLangchainCallbackHandler()])
201
-
202
- await cl.make_async.Message(content=response["text"]).send()
203
-
204
  except Exception as e:
205
  await cl.Message(content=f"Error: {str(e)}").send()
 
33
  from pydantic import BaseModel, Field
34
  from typing import List
35
 
36
+ from concurrent.futures import ThreadPoolExecutor
37
+
38
+
39
  class InMemoryHistory(BaseChatMessageHistory, BaseModel):
40
  messages: List[BaseMessage] = Field(default_factory=list)
41
 
 
77
  return await asyncio.to_thread(requests.post, url, headers=headers, json=data)
78
 
79
 
 
 
 
 
80
 
81
+
82
+
83
  @cl.set_starters
84
  async def set_starters():
85
  return [
 
104
  icon="/public/idea.svg",
105
  )
106
  ]
 
 
 
 
 
 
 
 
 
 
107
 
108
+ @cl.on_chat_start
109
+ async def setup():
110
+
111
+ cl.user_session.set("socket_auth", True)
112
+ cl.user_session.set("max_retries", 3)
113
+ cl.user_session.set("connection_attempts", 0)
114
 
115
  llm = OpenAI(
116
  model="gpt-3.5-turbo-instruct",
 
135
  )
136
 
137
  cl.user_session.set("llm_chain", llm_chain)
138
+
139
+ asyncio.create_task(keep_alive())
140
+
141
 
142
+ async def long_running_task(message_content: str):
143
+ loop = asyncio.get_running_loop()
144
+ with ThreadPoolExecutor() as pool:
145
+ llm_chain = cl.user_session.get("llm_chain")
146
+ return await loop.run_in_executor(
147
+ pool,
148
+ lambda: llm_chain.invoke({
149
+ "question": message_content,
150
+ "chat_history": ""
151
+ })
152
+ )
153
 
154
  @cl.on_message
155
  async def handle_message(message: cl.Message):
 
202
 
203
  else:
204
  try:
205
+ response = await long_running_task(message.content)
206
+ await cl.Message(content=response["text"]).send()
 
 
 
 
 
 
207
  except Exception as e:
208
  await cl.Message(content=f"Error: {str(e)}").send()