Benny97's picture
Upload folder using huggingface_hub
fc77315 verified
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)