Update app.py
Browse files
app.py
CHANGED
|
@@ -199,41 +199,35 @@ def init():
|
|
| 199 |
msg.send()
|
| 200 |
|
| 201 |
@cl.on_message
|
| 202 |
-
def main(message):
|
| 203 |
-
|
| 204 |
-
# msg = cl.Message(content=f"Thinking...")
|
| 205 |
-
# await msg.send()
|
| 206 |
-
|
| 207 |
chain = cl.user_session.get("chain")
|
| 208 |
-
cb = cl.
|
| 209 |
stream_final_answer=False, answer_prefix_tokens=["FINAL", "ANSWER"]
|
| 210 |
)
|
| 211 |
cb.answer_reached = True
|
| 212 |
-
res = chain.
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
answer = res["output"]
|
| 217 |
source_elements = []
|
| 218 |
-
|
| 219 |
|
| 220 |
-
#
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
|
| 239 |
-
cl.Message(content=answer, elements=source_elements).send()
|
|
|
|
| 199 |
msg.send()
|
| 200 |
|
| 201 |
@cl.on_message
|
| 202 |
+
async def main(message):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
chain = cl.user_session.get("chain")
|
| 204 |
+
cb = cl.AsyncLangchainCallbackHandler(
|
| 205 |
stream_final_answer=False, answer_prefix_tokens=["FINAL", "ANSWER"]
|
| 206 |
)
|
| 207 |
cb.answer_reached = True
|
| 208 |
+
res = await chain.acall(message, callbacks=[cb], )
|
| 209 |
+
|
| 210 |
+
answer = res["result"]
|
|
|
|
|
|
|
| 211 |
source_elements = []
|
| 212 |
+
visited_sources = set()
|
| 213 |
|
| 214 |
+
# Get the documents from the user session
|
| 215 |
+
docs = res["source_documents"]
|
| 216 |
+
metadatas = [doc.metadata for doc in docs]
|
| 217 |
+
all_sources = [m["source"] for m in metadatas]
|
| 218 |
|
| 219 |
+
for source in all_sources:
|
| 220 |
+
if source in visited_sources:
|
| 221 |
+
continue
|
| 222 |
+
visited_sources.add(source)
|
| 223 |
+
# Create the text element referenced in the message
|
| 224 |
+
source_elements.append(
|
| 225 |
+
cl.Text(content="https://www.imdb.com" + source, name="Review URL")
|
| 226 |
+
)
|
| 227 |
|
| 228 |
+
if source_elements:
|
| 229 |
+
answer += f"\nSources: {', '.join([e.content.decode('utf-8') for e in source_elements])}"
|
| 230 |
+
else:
|
| 231 |
+
answer += "\nNo sources found"
|
| 232 |
|
| 233 |
+
await cl.Message(content=answer, elements=source_elements).send()
|