File size: 2,507 Bytes
3a7b7ae
 
6e94c23
3a7b7ae
 
 
 
 
 
 
 
 
6e94c23
 
 
fc77315
3a7b7ae
 
 
 
 
 
 
 
 
 
 
 
 
 
6e94c23
 
 
 
 
 
 
 
fc77315
 
 
6e94c23
 
 
3a7b7ae
f3a2393
3a7b7ae
6e94c23
3a7b7ae
6e94c23
3a7b7ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
69
import gradio as gr
from search import Search
from langchain_core.messages import AIMessage

async def setup():
    search = Search()
    await search.setup()
    return search

async def process_message(search, username, message, success_criteria, history):
    results = await search.run_superstep(message, username, success_criteria, history)
    
    filter_messages(results)
    print(results)
    return results, search

async def reset():
    new_search = Search()
    await new_search.setup()
    return "", "","", None, new_search

def free_resources(search):
    print("Cleaning up")
    try:
        if search:
            search.free_resources()
    except Exception as e:
        print(f"Exception during cleanup: {e}")


def filter_messages(results):
    if not results:
        return results
    
    ai_indices = [i for i, msg in enumerate(results) if msg.get('role') == 'assistant']
    
    if ai_indices:
        last_ai_index = ai_indices[-1]
        last_ai_message = results[last_ai_index]
        if "Evaluator Feedback" in last_ai_message.get('content', ''):
            results.pop(last_ai_index)
    
    return results

with gr.Blocks(title="Search", theme=gr.themes.Default(primary_hue="emerald")) as ui:
    gr.Markdown("## SearchOps_Assistant")
    search = gr.State(delete_callback=free_resources)

    with gr.Row():
        chatbot = gr.Chatbot(label="Search", height=500, type="messages")
    with gr.Group():
        with gr.Row():
            username = gr.Textbox(show_label=False, placeholder="Enter your username")
        with gr.Row():
            message = gr.Textbox(show_label=False, placeholder="Your request to the Search")
        with gr.Row():
            success_criteria = gr.Textbox(show_label=False, placeholder="What are your success critiera?")
    with gr.Row():
        reset_button = gr.Button("Reset", variant="stop")
        go_button = gr.Button("Go!", variant="primary")
        
    ui.load(setup, [], [search])
    message.submit(process_message, [search,username, message, success_criteria, chatbot], [chatbot, search])
    success_criteria.submit(process_message, [search, username, message, success_criteria, chatbot], [chatbot, search])
    go_button.click(process_message, [search, username, message, success_criteria, chatbot], [chatbot, search])
    reset_button.click(reset, [], [username, message, success_criteria, chatbot, search])

    
ui.launch(inbrowser=True)