🤖 第2节 Agent原理分析

AI Agent: Autonomous Intelligent Agents

🎯 一、什么是AI Agent?

1.1 Agent的定义

AI Agent(智能体)是一个能够感知环境、自主决策并采取行动以实现特定目标的智能系统。与传统的AI应用不同,Agent具有自主性、反应性、主动性和社交能力。

💡 核心特征:
Agent = LLM(大脑) + Planning(规划) + Memory(记忆) + Tools(工具)

1.2 Agent的核心组件

AI Agent 智能体 🧠 LLM 大脑/推理 📋 Planning 规划/决策 💾 Memory 记忆/上下文 🛠️ Tools 工具/执行
四大核心组件:
  • LLM(大脑):负责理解、推理和生成,是Agent的核心决策引擎
  • Planning(规划):将复杂任务分解为可执行的子任务,制定行动计划
  • Memory(记忆):存储短期和长期信息,提供上下文支持
  • Tools(工具):与外部环境交互的接口,如API、数据库、搜索引擎等

⚙️ 二、Agent工作原理

2.1 Agent的基本工作流程

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

2.2 Prompt Template结构

Agent的核心是通过精心设计的Prompt来驱动LLM进行推理和决策。一个完整的Agent Prompt通常包含以下部分:

Prompt Template组成:
  1. System Prompt(系统提示词):定义Agent的角色、能力和行为规范(类似JD职位描述)
  2. Context(上下文):包含历史对话、相关知识等背景信息
  3. Tools Description(工具描述):可用工具的名称、功能、参数说明
  4. User Query(用户问题):当前需要处理的任务或问题
  5. Output Format(输出格式):期望的响应格式,如JSON、思维链等
# 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

🛠️ 四、Tool(工具)系统

4.1 什么是Tool?

Tool是Agent与外部世界交互的接口,让Agent能够执行实际操作。每个Tool都需要明确的定义,包括名称、描述和参数。

💡 核心理念:
AI会将Tool定义转换成文字描述 → LLM理解并决策 → 返回要调用的工具和参数

4.2 Tool定义格式

# Tool定义示例(Python装饰器方式) from typing import Annotated @tool def search_web( query: Annotated[str, "搜索关键词"], max_results: Annotated[int, "最大结果数量"] = 10 ) -> str: """ 在互联网上搜索信息 Args: query: 要搜索的关键词或问题 max_results: 返回的最大结果数量,默认10条 Returns: 搜索结果的文本摘要 """ # 实际搜索逻辑 results = perform_search(query, max_results) return format_results(results) # Tool定义示例(JSON格式) { "name": "search_web", "description": "在互联网上搜索信息", "parameters": { "type": "object", "properties": { "query": { "type": "string", "description": "要搜索的关键词或问题" }, "max_results": { "type": "integer", "description": "返回的最大结果数量", "default": 10 } }, "required": ["query"] } }

4.3 Tool调用流程

1. Tool定义 name, description parameters 2. 转换为文本 添加到Prompt 3. LLM推理 决定是否调用 选择参数 4. 执行Tool 调用实际函数 5. 返回结果 Observation 6. 生成答案 基于结果回复 示例: 用户:"北京今天天气怎么样?" LLM决策:调用 get_weather(city="北京")

4.4 常见Tool类型

Tool类型 功能描述 应用场景
搜索工具 互联网搜索、知识库检索 信息查询、实时数据获取
计算工具 数学计算、代码执行 数值计算、数据分析
数据库工具 SQL查询、数据CRUD 业务数据操作
API工具 调用第三方服务 系统集成、外部服务
文件工具 读写文件、文档处理 文档管理、数据导入导出

👥 五、多Agent协同

5.1 什么是多Agent系统?

多Agent系统是由多个专业化的Agent协同工作,每个Agent负责特定领域或任务,通过协作完成复杂目标。

💡 设计理念:
将Agent看作不同的"人",每个Agent有自己的JD(职位描述),明确职责边界

5.2 多Agent协同模式

graph TB subgraph "模式1: 顺序协作" A1[用户请求] --> B1[Agent 1: 数据收集] B1 --> C1[Agent 2: 数据分析] C1 --> D1[Agent 3: 报告生成] D1 --> E1[最终结果] end subgraph "模式2: 并行协作" A2[用户请求] --> B2[任务分发] B2 --> C2[Agent A: 任务1] B2 --> D2[Agent B: 任务2] B2 --> E2[Agent C: 任务3] C2 --> F2[结果汇总] D2 --> F2 E2 --> F2 F2 --> G2[最终结果] end style A1 fill:#e1f5ff style A2 fill:#e1f5ff style E1 fill:#c8e6c9 style G2 fill:#c8e6c9

5.3 多Agent系统架构

🎯 协调Agent Coordinator 📊 数据Agent 负责数据收集 和预处理 🔍 分析Agent 负责数据分析 和洞察发现 💡 决策Agent 负责策略制定 和方案推荐 ⚡ 执行Agent 负责任务执行 和结果反馈 🗄️ 共享资源层 • 共享记忆 • 知识库 • 工具池 • 消息队列 • 状态管理 👤 用户
多Agent协同优势:
  • 专业化分工:每个Agent专注于特定领域,提高专业性
  • 并行处理:多个Agent同时工作,提升效率
  • 容错能力:单个Agent失败不影响整体系统
  • 易于扩展:可以灵活添加或替换Agent
  • 职责清晰:明确的边界和接口,便于维护
""

🏗️ 六、主流Agent开发框架

6.1 框架对比

框架 特点 适用场景 推荐指数
LangChain 生态丰富、组件多、社区活跃 快速原型开发、多任务应用 ⭐⭐⭐⭐⭐
Qwen-Agent 阿里出品、中文友好、集成度高 中文场景、企业应用 ⭐⭐⭐⭐⭐
AutoGPT 自主性强、目标导向 自动化任务、探索性项目 ⭐⭐⭐⭐
AutoGen 多Agent协作、微软出品 复杂多Agent系统 ⭐⭐⭐⭐
LlamaIndex 专注RAG、数据索引强 知识库应用、文档问答 ⭐⭐⭐⭐

6.2 Qwen-Agent示例

# Qwen-Agent 基础使用示例 from qwen_agent.agents import Assistant from qwen_agent.tools.base import BaseTool, register_tool # 1. 定义自定义工具 @register_tool('weather_query') class WeatherTool(BaseTool): description = '查询指定城市的天气信息' parameters = [{ 'name': 'city', 'type': 'string', 'description': '城市名称', 'required': True }] def call(self, params: dict) -> str: city = params['city'] # 实际API调用逻辑 return f"{city}今天晴天,温度25度" # 2. 配置LLM llm_cfg = { 'model': 'qwen-max', 'api_key': 'your-api-key' } # 3. 定义系统提示词 system_instruction = """ 你是一个智能助手,能够帮助用户查询天气、计算数学问题等。 请根据用户问题选择合适的工具,并提供准确的答案。 """ # 4. 创建Agent bot = Assistant( llm=llm_cfg, # 大模型配置 system_message=system_instruction, # 系统提示词 function_list=['weather_query'], # 工具列表 files=['knowledge.pdf'] # 知识库文件 ) # 5. 运行Agent messages = [] while True: user_input = input("用户: ") if user_input.lower() == 'exit': break messages.append({'role': 'user', 'content': user_input}) response = bot.run(messages=messages) print(f"Agent: {response[-1]['content']}") messages.extend(response)

6.3 Agent vs Workflow选择

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 记忆类型

短期记忆 Short-term Memory • 当前会话上下文 • 临时工作记忆 长期记忆 Long-term Memory • 历史对话记录 • 用户偏好设置 工作记忆 Working Memory • 任务执行状态 • 中间结果缓存 秒-分钟级 天-月级 任务周期

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

8.3 开发最佳实践

🎯 开发建议:
  1. 明确Agent职责:像写JD一样定义Agent的角色和能力边界
  2. 工具设计原则
    • 单一职责:每个工具只做一件事
    • 清晰描述:让LLM能准确理解工具用途
    • 参数明确:提供详细的参数说明和示例
  3. 测试驱动开发
    • 定义测试数据集(50个问题 + 参考答案)
    • 建立评分规则和指标
    • 使用OpenEval等工具进行评估
  4. 迭代优化
    • 从简单场景开始,逐步增加复杂度
    • 收集真实用户反馈
    • 持续优化Prompt和工具

8.4 常见问题与解决方案

Q1: Agent如何管理不同会话?

使用后端框架(FastAPI/Flask)管理SessionID,将会话数据持久化到Redis或数据库。

Q2: 多Agent的边界如何划分?

将Agent看作不同的"人",每个Agent有明确的JD(职位描述),按业务领域或功能模块划分。

Q3: Agent自主规划是否需要编排流程?

不需要。只需定义工具函数,Agent会根据任务自主规划流程。ReAct走一步看一步,Planning提前规划所有步骤。

Q4: 工具调用策略如何设计?

Agent会自主安排工具调用顺序。如需干预,可在System Prompt中明确说明工具使用规则和优先级。

Q5: 低代码平台(如Dify)适合开发Agent吗?

适合快速搭建POC原型,但上限不高。生产环境建议使用LangChain、Qwen-Agent等高代码框架。

📈 九、Agent技术演进

9.1 发展历程

timeline title Agent技术演进时间线 2020 : GPT-3发布 : 基础对话能力 2021 : 提示词工程兴起 : Few-shot Learning 2022 : ReAct范式提出 : Chain-of-Thought : Tool Use能力 2023 : AutoGPT爆火 : 自主Agent概念 : 多Agent协作 2024 : Function Calling成熟 : MCP协议 : Agent框架百花齐放 2025 : 长上下文Agent : 多模态Agent : Agent OS概念

9.2 未来发展方向

未来Agent Next Gen "" 🎨 多模态 图像+音频+视频 📚 长上下文 百万级token 🧠 自主学习 持续进化 💻 Agent OS 操作系统级 🤖 具身智能 物理世界交互 👥 群体智能 大规模协作
🔮 未来趋势:
  • 多模态Agent:处理文本、图像、音频、视频等多种模态数据
  • 长上下文能力:支持百万级token的超长上下文理解
  • 自主学习:从交互中持续学习和进化
  • Agent OS:操作系统级的Agent框架,统一管理所有Agent
  • 具身智能:与物理世界交互的机器人Agent
  • 群体智能:大规模多Agent协作系统

📚 十、核心要点总结

🎯 Agent核心公式:

Agent = LLM + Planning + Memory + Tools

10.1 关键理解

mindmap root((AI Agent)) 核心组件 LLM大脑 理解推理 决策生成 Planning规划 任务分解 策略制定 Memory记忆 短期记忆 长期记忆 Tools工具 API调用 数据操作 Agent类型 ReAct 走一步看一步 灵活应变 Planning 提前规划 按计划执行 Reflexion 自我反思 持续改进 应用场景 智能客服 数据分析 智能OA 研究助手 开发框架 LangChain Qwen-Agent AutoGPT AutoGen

10.2 设计原则

🏗️ Agent设计五原则:
  1. 单一职责:每个Agent专注于特定领域,职责明确
  2. 工具优先:通过工具扩展能力,而非复杂Prompt
  3. 记忆管理:合理设计记忆策略,平衡上下文和性能
  4. 可观测性:记录Agent的思考和行动过程,便于调试
  5. 渐进式开发:从简单场景开始,逐步增加复杂度

10.3 Agent vs RAG vs Workflow

维度 RAG Agent Workflow
核心能力 知识检索增强 自主决策执行 流程编排执行
灵活性
可控性
适用场景 知识问答、文档理解 复杂任务、探索性场景 固定流程、批处理
开发难度

10.4 学习路径

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

🚀 开始你的Agent之旅

从简单的单Agent开始 → 掌握工具系统 → 探索多Agent协作 → 构建生产级应用

Agent不是魔法,而是精心设计的系统工程

© 2026 AI大模型课程 | 第2节 Agent原理分析