太棒了!我们可以加一版结合 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. 功能详解
- 用户输入:通过 Gradio 提供的文本框,用户可以输入如 “我要下单”、“处理订单” 等命令。
- GPT 智能决策:使用 GPT 分析用户输入的自然语言,判断用户要执行哪个操作(提交订单、处理订单或完结订单)。
- 订单状态图:每一步的执行情况都通过 Graphviz 绘制一个简单的状态图,展示“下单→处理→完结”的流程。
- JSON 记录:每一次操作的日志和返回的状态会以 JSON 格式输出,方便查看每一步的执行情况。
4. 运行示例
- 启动 FastAPI 服务:首先启动
FastAPI
后端服务。
uvicorn main:app --reload
- 启动 Gradio 前端界面:然后启动
Gradio
前端。
python gradio_app.py
- 在浏览器中输入:访问生成的
Gradio
界面,输入如 “我要下单”,系统会根据智能决策生成订单,并展示状态图和操作日志。
✅ 后续拓展方向
功能 | 描述 |
---|---|
🛠️ 自定义操作流程 | 支持用户定义更多的业务操作,例如取消订单、修改订单等。 |
🌍 数据持久化 | 配合数据库持久化订单状态,实现更复杂的业务流程。 |
🧠 多轮对话支持 | 使用 LangChain 实现多个步骤之间的上下文记忆,实现更智能的多轮对话流程。 |
📦 图表美化 | 增加图表美化,例如使用不同的颜色表示不同的状态,或绘制 Gantt 图等。 |