import gradio as gr from db import MongoDao import requests from PIL import Image from io import BytesIO from agent.agent import Agent import json import pandas as pd from utils import Service brand_list = Service.get_brand_list() init_product_list = Service.get_init_state_product_list(brand_list[0]) with gr.Blocks() as demo: gr.Markdown("## 侵权识别系统", elem_id="header") with gr.Row(): with gr.Column(): # 左侧控制面板 brand_state = gr.State(value=brand_list[0]) brand_dropdown = gr.Dropdown( brand_list, label="品牌选择", value=brand_list[0], interactive=True) product_dropdown = gr.Dropdown( init_product_list, value=init_product_list[0], label="商品列表", interactive=True ) check_button = gr.Button("查询侵权") infringement_result = gr.Textbox( label="侵权识别结果", interactive=False, lines=3 ) with gr.Column(): # 右侧展示面板 # 1. 图片展示区(顶部) image_display = gr.Gallery( label="商品图片", columns=3, # 每行显示3张图片 height="auto", object_fit="contain", # 保持图片比例 interactive=False, show_share_button=False ) # # 2. 商品信息区(中部) # product_info = gr.Textbox( # label="商品信息", # interactive=False, # lines=5 # 增加显示行数 # ) product_info = gr.Dataframe( headers=["", ""], row_count=5, col_count=2, value=[ ["商户名称", "某某专卖店"], ["商品ID", "SP20230001"], ["上架时间", "2023-05-15"], ["价格", "¥299"], ["销量", "1,208件"] ], interactive=False # 设为True可允许编辑 ) # 事件绑定(保持不变) brand_dropdown.change( fn=Service.on_brand_change, inputs=brand_dropdown, outputs=product_dropdown ) # search_button.click(search_by_cust_id, inputs=search_box, outputs=[product_info, image_display]) # check_button.click(check_infringement, inputs=[...], outputs=infringement_result) demo.launch(server_name="0.0.0.0", server_port=7860)