graph TB
A[用户输入任务] --> B[理解任务意图]
B --> C{需要规划吗?}
C -->|是| D[任务分解与规划]
C -->|否| E[直接执行]
D --> F[选择工具/行动]
E --> F
F --> G[执行工具调用]
G --> H[观察执行结果]
H --> I{任务完成?}
I -->|否| J[更新记忆]
J --> F
I -->|是| K[生成最终答案]
K --> L[返回用户]
style A fill:#e1f5ff
style L fill:#c8e6c9
style C fill:#fff9c4
style I fill:#fff9c4
style K fill:#a5d6a7
# Agent Prompt Template 示例
System Prompt:
你是一个智能助手,能够使用多种工具来帮助用户完成任务。
你的职责是:
1. 理解用户意图
2. 分析需要使用哪些工具
3. 按步骤执行任务
4. 提供清晰的答案
Available Tools:
- search(query: str): 搜索互联网信息
- calculator(expression: str): 执行数学计算
- database_query(sql: str): 查询数据库
Context:
{历史对话记录}
{相关知识片段}
User Query:
{用户问题}
Please think step by step and use tools when necessary.
🔄 三、Agent的主要类型
3.1 ReAct Agent(推理-行动)
ReAct 是"Reasoning and Acting"的缩写,采用"走一步看一步"的策略,交替进行推理和行动。
graph LR
A[用户问题] --> B[Thought 1: 思考]
B --> C[Action 1: 执行工具]
C --> D[Observation 1: 观察结果]
D --> E[Thought 2: 再思考]
E --> F[Action 2: 再执行]
F --> G[Observation 2: 再观察]
G --> H{完成?}
H -->|否| E
H -->|是| I[Final Answer]
style A fill:#e1f5ff
style B fill:#fff9c4
style E fill:#fff9c4
style I fill:#c8e6c9
ReAct特点:
灵活性高:根据每步结果动态调整策略
可解释性强:每步都有明确的思考过程
适用场景:不确定性高、需要探索的任务
缺点:可能需要多次迭代,效率相对较低
3.2 Planning Agent(规划型)
Planning 采用"先规划后执行"的策略,提前制定完整的行动计划。
graph TB
A[用户问题] --> B[分析任务]
B --> C[制定完整计划]
C --> D[Plan: Step 1, 2, 3...]
D --> E[执行 Step 1]
E --> F[执行 Step 2]
F --> G[执行 Step 3]
G --> H[汇总结果]
H --> I[Final Answer]
style A fill:#e1f5ff
style C fill:#f3e5f5
style D fill:#f3e5f5
style I fill:#c8e6c9
Planning特点:
效率高:一次规划,按计划执行
结构清晰:任务分解明确,易于管理
适用场景:任务明确、步骤可预测的场景
缺点:灵活性较低,难以应对突发情况
3.3 Reflexion Agent(反思型)
Reflexion 具有自我反思和改进能力,从失败中学习。
graph TB
A[任务] --> B[尝试执行]
B --> C{成功?}
C -->|是| D[完成]
C -->|否| E[反思失败原因]
E --> F[生成改进策略]
F --> G[更新记忆]
G --> B
style A fill:#e1f5ff
style D fill:#c8e6c9
style E fill:#ffccbc
style F fill:#fff9c4
graph TB
A[需求分析] --> B{任务是否明确?}
B -->|明确| C{流程是否固定?}
B -->|不明确| D[选择Agent]
C -->|固定| E[选择Workflow]
C -->|灵活| D
D --> F[Agent特点]
F --> F1[自主决策]
F --> F2[灵活应变]
F --> F3[探索性强]
E --> G[Workflow特点]
G --> G1[流程固定]
G --> G2[可预测性]
G --> G3[易于调试]
style D fill:#c8e6c9
style E fill:#bbdefb
style A fill:#fff9c4
选择建议:
选择Agent:任务不确定、需要灵活决策、探索性场景
选择Workflow:流程明确、步骤固定、需要精确控制
混合使用:Workflow中嵌入Agent节点,或Agent调用Workflow工具
💾 七、Memory(记忆)系统
7.1 记忆类型
7.2 记忆管理策略
graph LR
A[新消息] --> B{记忆容量检查}
B -->|未满| C[直接存储]
B -->|已满| D[记忆压缩]
D --> E[摘要提取]
D --> F[重要性评分]
D --> G[时间衰减]
E --> H[更新记忆]
F --> H
G --> H
C --> I[记忆库]
H --> I
style A fill:#e1f5ff
style I fill:#c8e6c9
style B fill:#fff9c4
7.3 Session管理
会话管理方案:
Session ID:为每个用户会话分配唯一标识符
后端管理:使用FastAPI/Flask等框架管理会话状态
持久化存储:将会话数据存储到Redis/数据库
上下文窗口:控制传递给LLM的历史消息数量
百万级扩展:使用Qwen-Agent的长上下文能力扩展到百万token
# Session管理示例
from fastapi import FastAPI, HTTPException
from typing import Dict, List
import uuid
app = FastAPI()
# 会话存储(实际应用中使用Redis)
sessions: Dict[str, List[dict]] = {}
@app.post("/chat")
async def chat(session_id: str = None, message: str = ""):
# 创建或获取会话
if not session_id:
session_id = str(uuid.uuid4())
sessions[session_id] = []
if session_id not in sessions:
raise HTTPException(status_code=404, detail="Session not found")
# 获取历史消息
history = sessions[session_id]
# 添加用户消息
history.append({"role": "user", "content": message})
# 调用Agent(这里简化)
response = agent.run(messages=history)
# 保存Agent响应
history.extend(response)
# 记忆管理:保留最近N条消息
if len(history) > 20:
# 保留系统提示词 + 最近10轮对话
history = [history[0]] + history[-20:]
sessions[session_id] = history
return {
"session_id": session_id,
"response": response[-1]["content"]
}
🚀 八、Agent实践应用
8.1 典型应用场景
应用场景
Agent类型
核心能力
技术要点
智能客服
ReAct Agent
问答、知识检索、工单处理
RAG + 多轮对话 + 工具调用
数据分析助手
Planning Agent
SQL查询、数据可视化、报告生成
Code Interpreter + 数据库工具
智能OA
多Agent系统
流程自动化、智能提醒、报表
系统集成 + 工作流编排
研究助手
Reflexion Agent
文献检索、信息整合、报告撰写
搜索 + RAG + 多步推理
标书生成
Planning Agent
模板匹配、内容生成、格式化
RAG + 文档处理 + 生成
8.2 智能客服Agent架构
graph TB
A[用户问题] --> B[意图识别]
B --> C{问题类型}
C -->|知识查询| D[RAG检索]
C -->|业务操作| E[工具调用]
C -->|闲聊| F[直接回复]
D --> G[知识库]
G --> H[重排序Rerank]
H --> I[生成答案]
E --> J[订单查询]
E --> K[退款处理]
E --> L[工单创建]
J --> I
K --> I
L --> I
F --> I
I --> M{满意度}
M -->|不满意| N[转人工]
M -->|满意| O[结束对话]
style A fill:#e1f5ff
style O fill:#c8e6c9
style N fill:#ffccbc
graph LR
A[基础概念] --> B[单Agent开发]
B --> C[工具系统设计]
C --> D[记忆管理]
D --> E[多Agent协作]
E --> F[生产部署]
B --> B1[LangChain入门]
B --> B2[Qwen-Agent实践]
C --> C1[Tool定义]
C --> C2[Function Calling]
E --> E1[AutoGen]
E --> E2[协作模式]
F --> F1[性能优化]
F --> F2[监控告警]
style A fill:#e1f5ff
style F fill:#c8e6c9