Farid Karimli
commited on
Commit
·
4de6b1a
1
Parent(s):
4f1706c
Initial streaming implementation
Browse files
code/main.py
CHANGED
@@ -12,7 +12,6 @@ from typing import Optional
|
|
12 |
from dotenv import load_dotenv
|
13 |
|
14 |
load_dotenv()
|
15 |
-
print(os.environ.get("OAUTH_GOOGLE_CLIENT_ID"))
|
16 |
|
17 |
USER_TIMEOUT = 60_000
|
18 |
SYSTEM = "System 🖥️"
|
@@ -248,25 +247,38 @@ class Chatbot:
|
|
248 |
processor = cl.user_session.get("chat_processor")
|
249 |
res = await processor.rag(message.content, chain)
|
250 |
|
251 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
answer_with_sources, source_elements, sources_dict = get_sources(
|
253 |
-
|
254 |
)
|
255 |
processor._process(message.content, answer, sources_dict)
|
256 |
|
257 |
await cl.Message(content=answer_with_sources, elements=source_elements).send()
|
258 |
|
259 |
-
def
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
) -> Optional[cl.User]:
|
265 |
-
return default_user
|
266 |
-
|
267 |
|
268 |
chatbot = Chatbot()
|
269 |
-
cl.
|
270 |
cl.set_starters(chatbot.set_starters)
|
271 |
cl.author_rename(chatbot.rename)
|
272 |
cl.on_chat_start(chatbot.start)
|
|
|
12 |
from dotenv import load_dotenv
|
13 |
|
14 |
load_dotenv()
|
|
|
15 |
|
16 |
USER_TIMEOUT = 60_000
|
17 |
SYSTEM = "System 🖥️"
|
|
|
247 |
processor = cl.user_session.get("chat_processor")
|
248 |
res = await processor.rag(message.content, chain)
|
249 |
|
250 |
+
# TODO: STREAM MESSAGE
|
251 |
+
msg = cl.Message(content="")
|
252 |
+
await msg.send()
|
253 |
+
|
254 |
+
output = {}
|
255 |
+
for chunk in res:
|
256 |
+
if 'answer' in chunk:
|
257 |
+
await msg.stream_token(chunk['answer'])
|
258 |
+
|
259 |
+
for key in chunk:
|
260 |
+
if key not in output:
|
261 |
+
output[key] = chunk[key]
|
262 |
+
else:
|
263 |
+
output[key] += chunk[key]
|
264 |
+
|
265 |
+
answer = output.get("answer", output.get("result"))
|
266 |
+
|
267 |
answer_with_sources, source_elements, sources_dict = get_sources(
|
268 |
+
output, answer, view_sources=view_sources
|
269 |
)
|
270 |
processor._process(message.content, answer, sources_dict)
|
271 |
|
272 |
await cl.Message(content=answer_with_sources, elements=source_elements).send()
|
273 |
|
274 |
+
def auth_callback(self, username: str, password: str) -> Optional[cl.User]:
|
275 |
+
return cl.User(
|
276 |
+
identifier=username,
|
277 |
+
metadata={"role": "admin", "provider": "credentials"},
|
278 |
+
)
|
|
|
|
|
|
|
279 |
|
280 |
chatbot = Chatbot()
|
281 |
+
cl.password_auth_callback(chatbot.auth_callback)
|
282 |
cl.set_starters(chatbot.set_starters)
|
283 |
cl.author_rename(chatbot.rename)
|
284 |
cl.on_chat_start(chatbot.start)
|
code/modules/chat/helpers.py
CHANGED
@@ -36,8 +36,9 @@ def get_sources(res, answer, view_sources=False):
|
|
36 |
source_dict[url_name]["text"] += f"\n\n{source.page_content}"
|
37 |
|
38 |
# First, display the answer
|
39 |
-
full_answer = "**Answer:**\n"
|
40 |
-
full_answer += answer
|
|
|
41 |
|
42 |
if view_sources:
|
43 |
|
|
|
36 |
source_dict[url_name]["text"] += f"\n\n{source.page_content}"
|
37 |
|
38 |
# First, display the answer
|
39 |
+
#full_answer = "**Answer:**\n"
|
40 |
+
#full_answer += answer
|
41 |
+
full_answer = "" # Not to include the answer again
|
42 |
|
43 |
if view_sources:
|
44 |
|
code/modules/chat/langchain/langchain_rag.py
CHANGED
@@ -133,6 +133,10 @@ class Langchain_RAG(BaseRAG):
|
|
133 |
res["qa_prompt"] = self.qa_prompt
|
134 |
return res
|
135 |
|
|
|
|
|
|
|
|
|
136 |
def add_history_from_list(self, history_list):
|
137 |
"""
|
138 |
Add messages from a list to the chat history.
|
|
|
133 |
res["qa_prompt"] = self.qa_prompt
|
134 |
return res
|
135 |
|
136 |
+
def stream(self, user_query, config):
|
137 |
+
res = self.rag_chain.stream(user_query, config)
|
138 |
+
return res
|
139 |
+
|
140 |
def add_history_from_list(self, history_list):
|
141 |
"""
|
142 |
Add messages from a list to the chat history.
|
code/modules/chat_processor/chat_processor.py
CHANGED
@@ -50,4 +50,4 @@ class ChatProcessor:
|
|
50 |
user_query=user_query_dict, config=config, chain=chain
|
51 |
)
|
52 |
else:
|
53 |
-
return chain.
|
|
|
50 |
user_query=user_query_dict, config=config, chain=chain
|
51 |
)
|
52 |
else:
|
53 |
+
return chain.stream(user_query=user_query_dict, config=config)
|