Update main.py
Browse files
main.py
CHANGED
@@ -15,8 +15,9 @@ from langchain_community.chat_message_histories import ChatMessageHistory
|
|
15 |
from langchain.memory import ConversationBufferMemory
|
16 |
from langchain.schema.runnable import Runnable, RunnablePassthrough, RunnableConfig, RunnableLambda
|
17 |
from langchain.callbacks.base import BaseCallbackHandler
|
18 |
-
from langchain.chains import
|
19 |
-
|
|
|
20 |
import chainlit as cl
|
21 |
from chainlit.input_widget import TextInput, Select, Switch, Slider
|
22 |
@cl.password_auth_callback
|
@@ -89,13 +90,21 @@ async def on_chat_start():
|
|
89 |
########## Chain with streaming ##########
|
90 |
message_history = ChatMessageHistory()
|
91 |
memory = ConversationBufferMemory(memory_key="chat_history",output_key="answer",chat_memory=message_history,return_messages=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
qa = ConversationalRetrievalChain.from_llm(
|
93 |
model,
|
94 |
memory=memory,
|
95 |
chain_type="stuff",
|
96 |
return_source_documents=True,
|
97 |
verbose=False,
|
98 |
-
retriever=retriever
|
|
|
99 |
)
|
100 |
cl.user_session.set("runnable", qa)
|
101 |
#template = """<s>[INST] Vous êtes un chercheur de l'enseignement supérieur et vous êtes doué pour faire des analyses d'articles de recherche sur les thématiques liées à la pédagogie, en fonction des critères définis ci-avant.
|
@@ -164,18 +173,11 @@ async def on_message(message: cl.Message):
|
|
164 |
# ]),
|
165 |
#):
|
166 |
# await msg.stream_token(chunk)
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
async for chunk in runnable.astream(
|
171 |
-
{"question": "Contexte : Vous êtes un chercheur de l'enseignement supérieur et vous êtes doué pour faire des analyses d'articles de recherche sur les thématiques liées à la pédagogie, en fonction des critères définis ci-avant. En fonction des informations suivantes et du contexte suivant seulement et strictement, répondez en langue française strictement à la question ci-dessous à partir du contexte ci-dessous. Si vous ne pouvez pas répondre à la question sur la base des informations, dites que vous ne trouvez pas de réponse ou que vous ne parvenez pas à trouver de réponse. Essayez donc de comprendre en profondeur le contexte et répondez uniquement en vous basant sur les informations fournies. Ne générez pas de réponses non pertinentes. Question : " + message.content},
|
172 |
-
config=RunnableConfig(callbacks=[
|
173 |
-
cl.AsyncLangchainCallbackHandler(stream_final_answer=True)
|
174 |
-
]),
|
175 |
-
):
|
176 |
-
await msg.stream_token(chunk)
|
177 |
|
178 |
-
|
179 |
-
await msg.send()
|
180 |
#memory.chat_memory.add_user_message(message.content)
|
181 |
#memory.chat_memory.add_ai_message(msg.content)
|
|
|
15 |
from langchain.memory import ConversationBufferMemory
|
16 |
from langchain.schema.runnable import Runnable, RunnablePassthrough, RunnableConfig, RunnableLambda
|
17 |
from langchain.callbacks.base import BaseCallbackHandler
|
18 |
+
from langchain.chains import (
|
19 |
+
StuffDocumentsChain, LLMChain, ConversationalRetrievalChain
|
20 |
+
)
|
21 |
import chainlit as cl
|
22 |
from chainlit.input_widget import TextInput, Select, Switch, Slider
|
23 |
@cl.password_auth_callback
|
|
|
90 |
########## Chain with streaming ##########
|
91 |
message_history = ChatMessageHistory()
|
92 |
memory = ConversationBufferMemory(memory_key="chat_history",output_key="answer",chat_memory=message_history,return_messages=True)
|
93 |
+
template = (
|
94 |
+
"Combinez l'historique des discussions et la question de suivi dans "
|
95 |
+
"une question autonome. Historique des discussions: {chat_history}"
|
96 |
+
"Question complémentaire: {question}"
|
97 |
+
)
|
98 |
+
prompt = PromptTemplate.from_template(template)
|
99 |
+
question_generator_chain = LLMChain(llm=model, prompt=prompt)
|
100 |
qa = ConversationalRetrievalChain.from_llm(
|
101 |
model,
|
102 |
memory=memory,
|
103 |
chain_type="stuff",
|
104 |
return_source_documents=True,
|
105 |
verbose=False,
|
106 |
+
retriever=retriever,
|
107 |
+
question_generator=question_generator_chain
|
108 |
)
|
109 |
cl.user_session.set("runnable", qa)
|
110 |
#template = """<s>[INST] Vous êtes un chercheur de l'enseignement supérieur et vous êtes doué pour faire des analyses d'articles de recherche sur les thématiques liées à la pédagogie, en fonction des critères définis ci-avant.
|
|
|
173 |
# ]),
|
174 |
#):
|
175 |
# await msg.stream_token(chunk)
|
176 |
+
cb = cl.AsyncLangchainCallbackHandler()
|
177 |
+
res = await runnable.acall("Contexte : Vous êtes un chercheur de l'enseignement supérieur et vous êtes doué pour faire des analyses d'articles de recherche sur les thématiques liées à la pédagogie, en fonction des critères définis ci-avant. En fonction des informations suivantes et du contexte suivant seulement et strictement, répondez en langue française strictement à la question ci-dessous à partir du contexte ci-dessous. Si vous ne pouvez pas répondre à la question sur la base des informations, dites que vous ne trouvez pas de réponse ou que vous ne parvenez pas à trouver de réponse. Essayez donc de comprendre en profondeur le contexte et répondez uniquement en vous basant sur les informations fournies. Ne générez pas de réponses non pertinentes. Question : " + message.content, callbacks=[cb])
|
178 |
+
answer = res["answer"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
|
180 |
+
await cl.Message(content=answer).send()
|
181 |
+
#await msg.send()
|
182 |
#memory.chat_memory.add_user_message(message.content)
|
183 |
#memory.chat_memory.add_ai_message(msg.content)
|