From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.5 KiB
61 lines
2.5 KiB
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() |
|
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() |
|
|