一、整体系统架构┌──────────────────┐│ User │└────────┬─────────┘│▼┌─────────────────┐│ Agent ││ ReAct Planner │└────────┬────────┘│┌───────────────┼────────────────┐│ │ │▼ ▼ ▼┌────────────┐ ┌────────────┐ ┌────────────┐│Order Tool │ │Search Tool │ │SQL Tool │└────────────┘ └────────────┘ └────────────┘│▼┌───────────────────┐│ Structured Output ││ JSON Schema │└───────────────────┘│▼┌──────────────┐│ Memory ││ short / long │└──────────────┘二、核心概念Agent 本质LLM 推理 工具调用 状态普通 ChatGPT输入 → 输出Agent输入 ↓ 思考 ↓ 决定是否调用工具 ↓ 获得结果 ↓ 继续思考 ↓ 最终回答三、ReAct 是 Agent 的核心ReAct Reasoning ActingAgent 会Thought: 我要提取订单信息 Action: 调用 extraction_tool Observation: 得到结构化订单 Thought: 订单缺少电话 Action: 继续询问用户流程用户消息 ↓ Thought思考 ↓ Action调用工具 ↓ Observation观察结果 ↓ 继续推理四、Planning规划复杂任务时Agent 会拆任务。例如“帮我处理客户订单并保存数据库”Agent 会1. 提取订单信息 2. 验证字段 3. 查询库存 4. 写入数据库 5. 返回结果这就是 Planning。五、Memory记忆1. Short-term memory当前对话历史。例如chat_history [ {role: user, content: ...}, {role: assistant, content: ...} ]作用多轮对话上下文理解2. Long-term memory长期记忆。例如用户常用地址 用户公司 用户购买偏好通常存Vector DBRedisPostgreSQL六、Tool-based Agent核心思想Agent 自动选择工具。例如用户 帮我提取订单Agent选择 extraction tool为什么需要 JSON SchemaLLM 输出不稳定可能返回 - 自然语言 - 漏字段 - 格式错误JSON Schema 用于强制AI返回固定结构七、订单文本示例用户输入你好我想购买 2 台 iPhone 15 Pro 1 台 MacBook Air 收货人张三 电话13800138000 地址北京市朝阳区xx路88号我们希望 AI 输出{ customer_name: 张三, phone: 13800138000, address: 北京市朝阳区xx路88号, items: [ { product: iPhone 15 Pro, quantity: 2 }, { product: MacBook Air, quantity: 1 } ] }十、JSON Schema这里是关键。order_schema { type: object, properties: { customer_name: { type: string }, phone: { type: string }, address: { type: string }, items: { type: array, items: { type: object, properties: { product: { type: string }, quantity: { type: integer } }, required: [product, quantity] } } }, required: [ customer_name, phone, address, items ] }八、项目结构requirements.txtopenai1.30.0 pydantic2.0.0 python-dotenv1.0.0安装依赖在项目目录运行pip install -r requirements.txt.envOPENAI_API_KEY你的_openai_api_keyschemas.pyfrom pydantic import BaseModel from typing import List class Item(BaseModel): product: str quantity: int class Order(BaseModel): customer_name: str phone: str address: str items: List[Item]memory.pyclass Memory: def __init__(self): self.history [] def add(self, role, content): self.history.append({ role: role, content: content }) def get_history(self): return self.historytools.pyimport os import json from dotenv import load_dotenv from openai import OpenAI from schemas import Order load_dotenv() client OpenAI( api_keyos.getenv(OPENAI_API_KEY) ) def extract_order_info(text: str): response client.chat.completions.create( modelgpt-4.1-mini, messages[ { role: system, content: 你是订单信息提取助手 }, { role: user, content: f 从下面文本提取订单信息 {text} 如果缺失字段返回空字符串。 } ], response_format{ type: json_schema, json_schema: { name: order_schema, schema: Order.model_json_schema() } } ) result response.choices[0].message.content return json.loads(result)main.pyfrom tools import extract_order_info from memory import Memory memory Memory() print(Agent 已启动输入 quit 退出) while True: user_input input(\n用户) if user_input.lower() quit: break memory.add(user, user_input) print(\n[Thought]) print(我需要提取订单信息) print(\n[Action]) print(调用 extract_order_info tool) result extract_order_info(user_input) print(\n[Observation]) print(result) memory.add(assistant, str(result))运行方式进入目录cd agent_project激活 venv.venv\Scripts\activate安装pip install -r requirements.txt运行python main.py测试输入输入我要买2台iPhone 15 Pro 1台MacBook Air 收货人张三 电话13800138000 地址北京市朝阳区88号输出{ customer_name: 张三, phone: 13800138000, address: 北京市朝阳区88号, items: [ { product: iPhone 15 Pro, quantity: 2 }, { product: MacBook Air, quantity: 1 } ] }项目完成一个Tool-based Structured Output Agent包含✅ Agent✅ ReAct✅ Tool Calling✅ Memory✅ JSON Schema✅ Structured Output✅ Pydantic Validation注以上内容为 AI 辅助生成的参考回答仅供参考请自行核实关键信息。