Spaces:
Build error
Build error
Update app.py
Browse files
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 |
-
|
118 |
-
|
|
|
|
|
|
|
|
|
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 |
-
|
197 |
-
|
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()
|