File size: 2,931 Bytes
a5c06b5 7a4d019 a5c06b5 7a4d019 270176f 7a4d019 a5c06b5 270176f a5c06b5 270176f a5c06b5 2a624da a5c06b5 270176f a5c06b5 |
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
import gradio as gr
import pandas as pd
from agents.brain import AutoWarehouseAgent
agent = AutoWarehouseAgent()
def df_from_input(df):
return pd.DataFrame(df) if df else pd.DataFrame()
def run_agent(message, slotting_df, picking_df):
print("π₯ INPUT MESSAGE:", message)
print("π SLOT DATA:", slotting_df)
print("π PICKING DATA:", picking_df)
try:
raw = agent.run(message, slotting_df, picking_df)
print("β
RAW RESULT FROM AGENT:", raw)
# -----------------------------------------------------
# π STANDARDIZE OUTPUT FORMAT
# -----------------------------------------------------
if isinstance(raw, str):
# Agent returned text only β convert to dictionary
result = {
"report": raw,
"route_image": None,
"slotting_table": pd.DataFrame(),
}
elif isinstance(raw, dict):
# Fill missing pieces
result = {
"report": raw.get("report", "No report generated."),
"route_image": raw.get("route_image", None),
"slotting_table": raw.get("slotting_table", pd.DataFrame()),
}
else:
# Unexpected return type
result = {
"report": "β οΈ Invalid agent output format.",
"route_image": None,
"slotting_table": pd.DataFrame(),
}
# Return EXACTLY 3 items to match UI outputs
return (
result["report"],
result["route_image"],
result["slotting_table"],
)
except Exception as e:
import traceback
print("β ERROR OCCURRED:")
traceback.print_exc()
return (
f"### β Error\n{str(e)}",
None,
pd.DataFrame(),
)
def build_ui():
with gr.Blocks() as demo:
gr.Markdown(
"<h1 style='color:#FF6A00;'>Procelevate Autonomous Warehouse Operator</h1>"
)
query = gr.Textbox(label="Enter your request")
gr.Markdown("### Slotting Data")
slot_df = gr.Dataframe(
headers=["SKU", "Velocity", "Frequency"],
value=[
["A123", "Fast", 120],
["B555", "Medium", 60],
["C888", "Slow", 8],
],
)
gr.Markdown("### Picking Data")
pick_df = gr.Dataframe(
headers=["Aisle", "Rack"],
value=[[5, 14], [3, 10], [12, 7]],
)
btn = gr.Button("Run Agent", variant="primary")
out_report = gr.Markdown()
out_route = gr.Image()
out_slot = gr.Dataframe()
btn.click(
run_agent,
inputs=[query, slot_df, pick_df],
outputs=[out_report, out_route, out_slot],
)
return demo
demo = build_ui()
demo.launch()
|