Spaces:
Sleeping
Sleeping
File size: 2,255 Bytes
6105445 3d242c8 0fb6b90 6105445 0fb6b90 6105445 3d242c8 6105445 3d242c8 0fb6b90 3d242c8 0fb6b90 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import chainlit as cl
# from ollama import chat
from source.aisearch_v1 import aiSearch
from source.convoFlow import classify_query,reformulate_query
import json
@cl.on_chat_start
def on_chat_start():
cl.user_session.set("counter", 0)
@cl.step(type="tool",name="Deep Search", show_input=False)
async def deepsearch(msg):
print(f"Message from user: {msg}")
inst = aiSearch()
stream = await inst.run_search(msg)
return stream
@cl.on_message # this function will be called every time a user inputs a message in the UI
async def main(message: cl.Message):
"""
This function is called every time a user inputs a message in the UI.
It sends back an intermediate response from the tool, followed by the final answer.
Args:
message: The user's message.
Returns:
None.
"""
counter = cl.user_session.get("counter")
msg = cl.Message(content="")
if counter == 0:
query = message.content
cl.user_session.set("curnt_query", query)
resp = classify_query(query)
resp = json.loads(resp)
calrity = resp['clarity']
if calrity:
streams = await deepsearch(query)
async for update in streams:
if update.choices:
await msg.stream_token(update.choices[0].delta.content or "")
cl.user_session.set("counter", 0)
await msg.update()
else:
quetn = "\n".join(resp['follow_up_questions'])
response = "Please answer the following:\n\n" + quetn
cl.user_session.set("clrf_queries", quetn)
await cl.Message(content=response).send()
counter += 1
cl.user_session.set("counter", counter)
elif counter == 1:
or_query = cl.user_session.get("curnt_query")
clr_queries = cl.user_session.get("clrf_queries")
cur_resp = message.content
resp = reformulate_query(or_query,cur_resp,clr_queries)
streams = await deepsearch(or_query+""+resp)
async for update in streams:
if update.choices:
await msg.stream_token(update.choices[0].delta.content or "")
cl.user_session.set("counter", 0)
await msg.update() |