Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from deal_agent_framework import DealAgentFramework | |
| from agents.deals import Opportunity, Deal | |
| class App: | |
| def __init__(self): | |
| self.agent_framework = None | |
| def run(self): | |
| with gr.Blocks(title="The Price is Right", fill_width=True) as ui: | |
| def table_for(opps): | |
| return [[opp.deal.product_description, f"${opp.deal.price:.2f}", f"${opp.estimate:.2f}", f"${opp.discount:.2f}", opp.deal.url] for opp in opps] | |
| def start(): | |
| self.agent_framework = DealAgentFramework() | |
| self.agent_framework.init_agents_as_needed() | |
| opportunities = self.agent_framework.memory | |
| table = table_for(opportunities) | |
| return table | |
| def go(): | |
| self.agent_framework.run() | |
| new_opportunities = self.agent_framework.memory | |
| table = table_for(new_opportunities) | |
| return table | |
| def do_select(selected_index: gr.SelectData): | |
| opportunities = self.agent_framework.memory | |
| row = selected_index.index[0] | |
| opportunity = opportunities[row] | |
| self.agent_framework.planner.messenger.alert(opportunity) | |
| with gr.Row(): | |
| gr.Markdown('<div style="text-align: center;font-size:24px">"The Price is Right" - Deal Hunting Agentic AI</div>') | |
| with gr.Row(): | |
| gr.Markdown('<div style="text-align: center;font-size:14px">Autonomous agent framework that finds online deals, collaborating with a proprietary fine-tuned LLM deployed on Modal, and a RAG pipeline with a frontier model and Chroma.</div>') | |
| with gr.Row(): | |
| gr.Markdown('<div style="text-align: center;font-size:14px">Deals surfaced so far:</div>') | |
| with gr.Row(): | |
| opportunities_dataframe = gr.Dataframe( | |
| headers=["Description", "Price", "Estimate", "Discount", "URL"], | |
| wrap=True, | |
| column_widths=[4, 1, 1, 1, 2], | |
| row_count=10, | |
| col_count=5, | |
| max_height=400, | |
| ) | |
| ui.load(start, inputs=[], outputs=[opportunities_dataframe]) | |
| timer = gr.Timer(value=60) | |
| timer.tick(go, inputs=[], outputs=[opportunities_dataframe]) | |
| opportunities_dataframe.select(do_select) | |
| ui.launch(share=False, inbrowser=True) | |
| if __name__=="__main__": | |
| App().run() | |