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()