当前位置: 首页 > web >正文

gradio 订单处理agent

太棒了!我们可以加一版结合 Gradio 界面、多步骤状态图调用日志 以及 GPT智能决策 的版本。这样不仅可以提升用户体验,还能帮助你快速搭建一个完整的业务流演示。

✅ 版本概要

  • Gradio:提供一个简单易用的前端界面,用户输入自然语言发起操作。
  • 多步骤状态图:使用 Graphviz(或 Mermaid)生成业务流状态图,显示从下单到完成的每一步。
  • 调用日志:记录每一步的操作,用户可查看执行的过程。
  • GPT智能决策:根据用户输入的自然语言,自动分析意图并选择相应的业务操作。

✅ 环境依赖安装

pip install openai gradio requests graphviz pydot

✅ 完整代码实现

1. 业务流后端(FastAPI)

首先我们用 FastAPI 完成业务流的接口,模拟电商订单的提交、处理、完成流程。

from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import Dict
import uuid
import time
import openai
import jsonapp = FastAPI()# 存储所有订单的字典
orders_db: Dict[str, Dict] = {}# -------- GPT 分析用户意图 --------
def gpt_analyze_intent(user_input: str) -> str:openai.api_key = "YOUR_OPENAI_API_KEY"  # 替换为你的 OpenAI API 密钥prompt = f"""请根据用户输入的自然语言,判断其意图并返回相应的操作:用户输入:{user_input}可选操作:1. 提交订单:包括订单信息(用户ID、商品ID、数量等)。2. 处理订单:包括验证支付、库存、发货等。3. 完结订单:包括发货、订单完成等。"""response = openai.Completion.create(engine="gpt-4",prompt=prompt,max_tokens=50)return response.choices[0].text.strip()# -------- Step 1: 用户下单 --------
class OrderRequest(BaseModel):user_id: strproduct_id: strquantity: int@app.post("/submit_order")
def submit_order(req: OrderRequest):order_id = str(uuid.uuid4())orders_db[order_id] = {"status": "submitted","user_id": req.user_id,"product_id": req.product_id,"quantity": req.quantity,"timestamp": time.time()}return {"order_id": order_id, "message": "✅ 订单已提交", "status": "submitted"}# -------- Step 2: 系统处理订单(支付、库存) --------
@app.post("/process_order")
def process_order(request: Request):body = await request.json()order_id = body.get("order_id")if order_id not in orders_db:return {"error": "❌ 未找到订单"}orders_db[order_id]["status"] = "processing"orders_db[order_id]["processed_at"] = time.time()return {"order_id": order_id,"message": "🛠️ 订单处理中(支付验证、库存锁定)","status": "processing"}# -------- Step 3: 完结订单(发货、关闭) --------
@app.post("/complete_order")
def complete_order(request: Request):body = await request.json()order_id = body.get("order_id")if order_id not in orders_db:return {"error": "❌ 未找到订单"}orders_db[order_id]["status"] = "completed"orders_db[order_id]["completed_at"] = time.time()return {"order_id": order_id,"message": "📦 订单已完成,进入发货流程","status": "completed"}

2. Gradio 前端(用户输入自然语言)

Gradio 提供了一个简单的界面,用户可以输入自然语言,GPT 将分析意图,决定是“提交订单”、还是“处理订单”、或是“完结订单”。

import gradio as gr
import requests
import json
from graphviz import Digraph# 定义订单操作的状态图
def generate_status_graph():dot = Digraph(comment='Order Workflow')dot.node('A', '提交订单')dot.node('B', '处理订单')dot.node('C', '发货 & 完结')dot.edges(['AB', 'BC'])return dot.render(filename='order_flow', format='png')# GPT 智能决策(处理用户输入并返回操作)
def gpt_decision(user_input):action = gpt_analyze_intent(user_input)return action# 执行业务流操作
def execute_action(user_input):action = gpt_decision(user_input)order_id = Noneif action == "提交订单":resp = requests.post("http://localhost:8000/submit_order", json={"user_id": "user123","product_id": "p456","quantity": 2})order_id = resp.json()["order_id"]elif action == "处理订单":resp = requests.post("http://localhost:8000/process_order", json={"order_id": order_id})elif action == "完结订单":resp = requests.post("http://localhost:8000/complete_order", json={"order_id": order_id})# 调用状态图生成graph_path = generate_status_graph()return graph_path, f"Action: {action}", json.dumps(resp.json(), indent=2)# Gradio 界面
with gr.Blocks() as demo:gr.Markdown("## 电商订单流程自动化")with gr.Row():user_input = gr.Textbox(label="请输入订单操作指令", placeholder="如:我要下单")run_button = gr.Button("开始操作")with gr.Row():chart_output = gr.Image(label="订单流程图")action_output = gr.Textbox(label="GPT 判定的操作", lines=3)json_output = gr.Textbox(label="执行结果 JSON", lines=10)run_button.click(fn=execute_action,inputs=[user_input],outputs=[chart_output, action_output, json_output])demo.launch()

3. 功能详解

  1. 用户输入:通过 Gradio 提供的文本框,用户可以输入如 “我要下单”、“处理订单” 等命令。
  2. GPT 智能决策:使用 GPT 分析用户输入的自然语言,判断用户要执行哪个操作(提交订单、处理订单或完结订单)。
  3. 订单状态图:每一步的执行情况都通过 Graphviz 绘制一个简单的状态图,展示“下单→处理→完结”的流程。
  4. JSON 记录:每一次操作的日志和返回的状态会以 JSON 格式输出,方便查看每一步的执行情况。

4. 运行示例

  1. 启动 FastAPI 服务:首先启动 FastAPI 后端服务。
uvicorn main:app --reload
  1. 启动 Gradio 前端界面:然后启动 Gradio 前端。
python gradio_app.py
  1. 在浏览器中输入:访问生成的 Gradio 界面,输入如 “我要下单”,系统会根据智能决策生成订单,并展示状态图和操作日志。

✅ 后续拓展方向

功能描述
🛠️ 自定义操作流程支持用户定义更多的业务操作,例如取消订单、修改订单等。
🌍 数据持久化配合数据库持久化订单状态,实现更复杂的业务流程。
🧠 多轮对话支持使用 LangChain 实现多个步骤之间的上下文记忆,实现更智能的多轮对话流程。
📦 图表美化增加图表美化,例如使用不同的颜色表示不同的状态,或绘制 Gantt 图等。

http://www.xdnf.cn/news/1914.html

相关文章:

  • 通过VSCode远程连接到CentOS7/Ubuntu18等老系统
  • 燃气经营从业人员有哪些类别
  • Doris vs ClickHouse:深入对比MPP数据库聚合操作的核心区别
  • Excel表格批量翻译对照翻译(使用AI助手)
  • ESG跨境电商如何为国内的跨境电商企业打开国外的市场
  • JDK 24:Java 24 中的新功能
  • SOC估算:开路电压修正的安时积分法
  • Doris表设计与分区策略:让海量数据管理更高效
  • 软测面经(私)
  • 分布式队列对消息语义的处理
  • MySQL元数据库完全指南:探秘数据背后的数据
  • 金仓数据库KingbaseES技术实践类深度剖析与实战指南
  • 单片机-89C51部分:2、环境搭建
  • 信奥赛之c++基础(初识循环嵌套与ASCII密码本)
  • browser-use:AI驱动的浏览器自动化工具使用指南
  • van-field组件设置为textarea属性被软键盘遮挡问题
  • Linux下编译MNN
  • Java—ThreadLocal底层实现原理
  • uniapp-商城-36-shop 购物车 选好了 进行订单确认2 支付方式颜色变化和颜色滤镜filter
  • 将AAB转APK的两种好用方法AAB to APK Converter
  • 深入理解Java基本类型
  • 软考-软件设计师中级备考 1、计算机内数据的表示
  • 软件编程命名规范
  • Linux 官方蓝牙协议栈 BlueZ 第一篇:入门与架构概览
  • Fanotify学习
  • 基于深度学习的视频目标跟踪算法研究
  • Android 9.0上开发的,如果设置没启动wifi的话,安卓app如何启动wifi
  • cmake 执行命令
  • 《Java编程思想》读书笔记:第十章 内部类
  • vue3 使用 vite 管理多个项目,实现各子项目独立运行,独立打包