1213 字
3 分钟
从Chatbot到Agent:打造能自主干活的AI
你有没有想过,AI应该不只是”陪聊”?
“帮我研究一下竞品,写一份分析报告。”
Chatbot会说:“好的,请告诉我竞品是谁…”
但Agent会:搜索竞品信息 → 整理数据 → 分析对比 → 生成报告。全程自动。
这就是Chatbot和Agent的区别:一个被动回答,一个主动干活。
本文要点
- Chatbot vs Agent的本质区别
- Agent的核心循环:感知→决策→执行→反思
- ReAct、Plan-and-Execute等主流架构
- Multi-Agent协作模式
- 记忆系统:让AI记住你
- MCP协议:Agent的工具标准
- Agent开发框架选择
一、Chatbot vs Agent:本质区别
1.1 核心差异
flowchart TD
N0["用户问题"]
N1["AI回复"]
N0 --> N1
N1["AI回复"]
N2["结束"]
N1 --> N2
N3["目标"]
N4["规划"]
N3 --> N4
N4["规划"]
N5["执行"]
N4 --> N5
N5["执行"]
N6["反思"]
N5 --> N6
N6["反思"]
N7["调整"]
N6 --> N7
N7["调整"]
N8["完成"]
N7 --> N8
1.2 一个具体例子
任务:研究竞品并写报告
flowchart TD
N0["Agent收到任务"]
N1["自动规划步骤"]
N0 --> N1
1.3 Agent的核心能力
1. 自主规划 - 将复杂任务分解为子任务 - 制定执行计划 - 动态调整策略
2. 工具使用 - 调用API获取信息 - 执行代码、操作文件 - 与外部系统交互
3. 环境感知 - 理解当前状态 - 获取反馈信息 - 持续监控进展
4. 自我反思 - 评估执行结果 - 发现问题并修正 - 持续优化策略二、Agent的核心循环
2.1 循环流程
┌─────────────────────────────────────────────────────────────┐│ Agent 核心循环 │├─────────────────────────────────────────────────────────────┤│ ││ ┌──────────┐ ││ │ 感知 │ ← 接收任务、理解环境状态 ││ │(Perceive)│ 获取上下文、用户意图 ││ └────┬─────┘ ││ ↓ ││ ┌──────────┐ ││ │ 决策 │ → 分析任务、规划步骤 ││ │ (Plan) │ 选择工具、制定策略 ││ └────┬─────┘ ││ ↓ ││ ┌──────────┐ ││ │ 执行 │ → 调用工具、执行操作 ││ │ (Act) │ 与环境交互、获取结果 ││ └────┬─────┘ ││ ↓ ││ ┌──────────┐ ││ │ 反思 │ → 评估结果、发现问题 ││ │(Reflect) │ 调整策略、记录经验 ││ └────┬─────┘ ││ │ ││ └────────────────→ 循环直到完成 ││ │└─────────────────────────────────────────────────────────────┘2.2 各环节详解
感知(Perceive)
感知什么?- 用户的目标和意图- 当前环境状态- 可用的工具和资源- 之前的执行历史
输入:用户请求、环境信息、历史记录输出:结构化的任务理解决策(Plan)
flowchart TD
N0["- 任务分解:大任务"]
N1["子任务"]
N0 --> N1
执行(Act)
执行什么?- 调用工具/API- 操作文件/数据库- 与外部系统交互- 记录执行结果
输入:执行计划、具体操作输出:执行结果反思(Reflect)
反思什么?- 结果是否达到预期?- 有没有更好的方法?- 发现了什么问题?- 需要调整什么?
输入:执行结果、预期目标输出:调整策略、经验记录三、主流Agent架构
3.1 ReAct Agent
Reasoning(推理)+ Acting(行动),最经典的Agent架构。
flowchart TD
N0["Task"]
N1["Thought"]
N0 --> N1
N1["Thought"]
N2["Action"]
N1 --> N2
N2["Action"]
N3["Observation"]
N2 --> N3
N3["Observation"]
N1["Thought"]
N3 --> N1
N1["Thought"]
N4["..."]
N1 --> N4
代码示例(LangChain):
from langchain.agents import initialize_agent, Toolfrom langchain_openai import ChatOpenAI
# 定义工具tools = [ Tool( name="数据库查询", func=query_database, description="查询销售数据,输入SQL语句" ), Tool( name="网络搜索", func=search_web, description="搜索网络信息,输入搜索关键词" )]
# 创建Agentllm = ChatOpenAI(model="gpt-4o", temperature=0)agent = initialize_agent( tools=tools, llm=llm, agent="zero-shot-react-description", verbose=True)
# 执行任务result = agent.run("找出销售额最高的产品并分析原因")3.2 Plan-and-Execute Agent
先规划再执行,适合复杂多步骤任务。
mindmap
root((核心思想:将规划和执行分离))
执行流程:
1. 规划阶段:生成完整计划
2. 执行阶段:按计划逐步执行
3. 验证阶段:检查结果是否达标
示例:
任务:"组织团建活动"
Step 1 规划:
1. 调研团队成员偏好(预算:500元/人)
2. 筛选合适地点(考虑交通便利性)
3. 确定活动内容(投票决定)
4. 预订场地和餐饮
5. 发送通知和行程安排
6. 活动当天协调
Step 2 执行:
按计划逐步执行,每步检查是否成功,失败则重新规划
适用场景:
- 任务步骤明确
- 需要全局规划
- 执行顺序重要
3.3 Reflection Agent
加入自我反思能力,持续改进。
flowchart TD
N0["执行"]
N1["反思"]
N0 --> N1
N1["反思"]
N2["改进"]
N1 --> N2
N2["改进"]
N3["再执行"]
N2 --> N3
N3["再执行"]
N4["..."]
N3 --> N4
N5["- 结构清晰吗?"]
N6["需要调整第三段"]
N5 --> N6
N7["- 论据充分吗?"]
N8["需要补充数据"]
N7 --> N8
N9["- 语言流畅吗?"]
N10["需要润色"]
N9 --> N10
N11["- 是否达标?"]
N12["达标"]
N11 --> N12
代码示例:
def reflection_agent(task, max_iterations=3): for i in range(max_iterations): # 执行任务 result = execute(task)
# 反思 critique = reflect(result, task)
# 判断是否达标 if is_satisfactory(critique): return result
# 改进 task = improve_task(task, critique)
return result3.4 架构选择指南
| 任务特点 | 推荐架构 | 理由 |
|---|---|---|
| 需要实时决策 | ReAct | 边想边做,灵活应对 |
| 步骤明确、顺序重要 | Plan-and-Execute | 全局规划,稳步推进 |
| 需要高质量输出 | Reflection | 迭代改进,保证质量 |
| 超复杂任务 | 组合使用 | 结合各架构优势 |
四、Multi-Agent协作
4.1 为什么需要多Agent?
单个Agent的局限:- 能力有限,难以面面俱到- 复杂任务容易出错- 角色切换困难
多Agent的优势:- 专家分工,各司其职- 相互审核,减少错误- 并行处理,提高效率4.2 协作模式
模式1:流水线协作
顺序传递,每个Agent负责一个环节:
软件开发场景:用户需求 → PM Agent(写PRD) → Architect Agent(设计方案) → Developer Agent(写代码) → QA Agent(测试) → 输出成果
特点:简单直观,适合流程化任务模式2:层级管理
mindmap
root((Manager Agent负责分配和协调:))
Manager Agent
Worker Agent 1(研究)
Worker Agent 2(写作)
Worker Agent 3(审核)
Manager职责:
- 理解用户需求
- 分配任务给合适的Worker
- 收集和整合结果
- 评估质量
特点:中心化管理,适合复杂协调
模式3:平等协作
mindmap
root((多个Agent平等对话,共同解决问题:))
Researcher Agent
↓ ↓
→ 对话协商
↓
最终答案
特点:灵活协商,适合需要讨论的任务
4.3 代码示例(CrewAI)
from crewai import Agent, Task, Crew
# 定义Agentresearcher = Agent( role="研究员", goal="收集和整理信息", backstory="你是专业的研究员,擅长收集和整理信息", allow_delegation=False)
writer = Agent( role="作家", goal="撰写高质量文章", backstory="你是专业的作家,擅长写作和编辑", allow_delegation=True)
# 定义任务research_task = Task( description="研究AI Agent的最新发展", agent=researcher)
write_task = Task( description="撰写一篇关于AI Agent的文章", agent=writer)
# 创建团队并执行crew = Crew( agents=[researcher, writer], tasks=[research_task, write_task])
result = crew.kickoff()五、记忆系统
5.1 为什么需要记忆?
问题:AI不记得之前的对话
用户:"我叫张三"AI:"好的张三"(新对话)用户:"我是谁?"AI:"我不知道您的名字"
解决:记忆系统5.2 记忆类型
┌─────────────────────────────────────────────────────────────┐│ Agent 记忆系统 │├─────────────────────────────────────────────────────────────┤│ ││ 短期记忆(Working Memory) ││ ├── 当前对话上下文 ││ ├── 最近几轮交互 ││ ├── 滑动窗口管理(保留最近N条) ││ └── 或摘要压缩(超过阈值时压缩) ││ ││ 长期记忆(Long-term Memory) ││ ├── 用户偏好和画像 ││ ├── 历史交互记录 ││ ├── 学习到的知识 ││ └── 向量数据库存储,按需检索 ││ ││ 工作记忆(Episodic Memory) ││ ├── 当前任务的执行状态 ││ ├── 已完成步骤 ││ └── 待办事项 ││ │└─────────────────────────────────────────────────────────────┘5.3 实现思路
class AgentMemory: def __init__(self): self.short_term = [] # 短期记忆:对话历史 self.long_term = VectorDB() # 长期记忆:向量数据库 self.working = {} # 工作记忆:任务状态
def remember(self, content, memory_type="short"): if memory_type == "short": self.short_term.append(content) # 超过阈值时压缩 if len(self.short_term) > 10: self.compress_short_term() elif memory_type == "long": self.long_term.add(content)
def recall(self, query, memory_type="all"): results = [] if memory_type in ["short", "all"]: results.extend(self.short_term) if memory_type in ["long", "all"]: results.extend(self.long_term.search(query)) return results
def compress_short_term(self): # 用LLM压缩历史对话 summary = llm.summarize(self.short_term) self.short_term = [summary]六、MCP协议
6.1 什么是MCP?
MCP(Model Context Protocol)是Anthropic提出的一个开放协议,用于标准化LLM与外部工具的连接。
问题:- 不同AI应用有不同的工具接口- 工具开发者需要适配多个平台- 重复造轮子
MCP解决方案:- 统一的工具接口标准- 一次开发,处处可用- 类似USB接口的"即插即用"6.2 MCP架构
┌─────────────────────────────────────────────────────────────┐│ MCP 架构 │├─────────────────────────────────────────────────────────────┤│ ││ MCP Host(宿主应用) ││ ┌─────────────────────────────────────────┐ ││ │ Claude Desktop / Cursor / 其他AI应用 │ ││ └────────────────┬────────────────────────┘ ││ │ MCP Protocol ││ ↓ ││ MCP Client(客户端) ││ ┌─────────────────────────────────────────┐ ││ │ 管理连接、路由请求、处理响应 │ ││ └────────────────┬────────────────────────┘ ││ │ ││ ↓ ││ MCP Server(服务器) ││ ┌─────────────────────────────────────────┐ ││ │ 工具1: 文件系统操作 │ ││ │ 工具2: 数据库查询 │ ││ │ 工具3: API调用 │ ││ │ ... │ ││ └─────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────┘6.3 MCP工具示例
# 一个简单的MCP服务器示例from mcp.server import Serverfrom mcp.types import Tool, TextContent
server = Server("my-tools")
@server.list_tools()async def list_tools(): return [ Tool( name="get_weather", description="获取指定城市的天气", inputSchema={ "type": "object", "properties": { "city": {"type": "string", "description": "城市名称"} }, "required": ["city"] } ) ]
@server.call_tool()async def call_tool(name, arguments): if name == "get_weather": city = arguments["city"] weather = get_weather_data(city) return [TextContent(type="text", text=f"{city}的天气:{weather}")]6.4 MCP的优势
标准化:统一的工具接口可复用:一次开发,多处使用安全性:权限控制、审计日志可扩展:轻松添加新工具社区支持:丰富的开源工具库七、Agent开发框架
| 框架 | 特点 | 适用场景 | 学习曲线 |
|---|---|---|---|
| LangGraph | 状态机、复杂流程控制 | 复杂Agent工作流 | 中 |
| CrewAI | 多Agent协作、角色扮演 | 团队协作场景 | 低 |
| AutoGen | 微软开源、对话式 | 研究原型 | 中 |
| OpenAI Assistants API | 官方支持、简单易用 | 快速开发 | 低 |
| Semantic Kernel | 微软企业级 | 企业集成 | 中 |
选择建议:
- 快速原型:OpenAI Assistants API
- 多Agent协作:CrewAI
- 复杂工作流:LangGraph
- 企业应用:Semantic Kernel
可视化图解
7.1 Agent执行流程图
┌─────────────────────────────────────────────────────────────┐│ ReAct Agent 执行示例 │├─────────────────────────────────────────────────────────────┤│ ││ 任务:分析竞品XX公司 ││ ││ ┌─────────────────────────────────────────────────────┐ ││ │ Thought 1: 需要先了解XX公司的基本信息 │ ││ │ Action 1: search("XX公司 简介") │ ││ │ Observation 1: XX公司成立于2015年,主营业务是... │ ││ └─────────────────────────────────────────────────────┘ ││ ↓ ││ ┌─────────────────────────────────────────────────────┐ ││ │ Thought 2: 需要了解财务数据 │ ││ │ Action 2: query_api("financial_data", company="XX") │ ││ │ Observation 2: 2024年营收10亿,增长20%... │ ││ └─────────────────────────────────────────────────────┘ ││ ↓ ││ ┌─────────────────────────────────────────────────────┐ ││ │ Thought 3: 信息足够,生成分析报告 │ ││ │ Action 3: write_report(analysis) │ ││ │ Observation 3: 报告已生成 │ ││ └─────────────────────────────────────────────────────┘ ││ ↓ ││ ┌─────────────────────────────────────────────────────┐ ││ │ Final Answer: XX公司分析报告 │ ││ │ [详细报告内容...] │ ││ └─────────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────┘7.2 Multi-Agent协作图
┌─────────────────────────────────────────────────────────────┐│ Multi-Agent 协作模式 │├─────────────────────────────────────────────────────────────┤│ ││ 用户需求 ││ ↓ ││ ┌────────────────┐ ││ │ Manager Agent │ ││ │ (任务分解) │ ││ └───────┬────────┘ ││ │ ││ ┌────────────┼────────────┐ ││ ↓ ↓ ↓ ││ ┌──────────┐ ┌──────────┐ ┌──────────┐ ││ │Researcher│ │ Writer │ │ Reviewer │ ││ │ Agent │ │ Agent │ │ Agent │ ││ │ (研究) │ │ (写作) │ │ (审核) │ ││ └────┬─────┘ └────┬─────┘ └────┬─────┘ ││ │ │ │ ││ └────────────┼────────────┘ ││ ↓ ││ ┌────────────────┐ ││ │ 整合结果 │ ││ └────────────────┘ ││ ↓ ││ 最终输出 ││ │└─────────────────────────────────────────────────────────────┘常见问题 FAQ
Q1: Agent和Chatbot有什么区别?
A:
- Chatbot:被动回答,单轮交互,不会主动做事
- Agent:主动规划,多步执行,能调用工具,有自主性
- 关键区别:是否有”自主行动”能力
Q2: 如何防止Agent执行危险操作?
A:
- Human-in-the-loop:关键操作需人工确认
- 权限控制:限制工具的访问范围
- 审计日志:记录所有操作
- 沙箱环境:先在安全环境测试
Q3: Agent适合什么场景?
A:
- 需要多步骤完成的复杂任务
- 需要调用外部工具或API
- 需要自主决策的场景
- 例如:数据分析、代码开发、研究报告、自动化工作流
Q4: 记忆系统怎么实现?
A:
- 短期记忆:对话历史管理(滑动窗口或摘要)
- 长期记忆:向量数据库存储用户信息和偏好
- 工作记忆:任务状态管理
Q5: MCP和传统Function Calling有什么区别?
A:
- Function Calling:模型特定的工具调用机制
- MCP:跨平台的标准协议,更通用
- MCP可以理解为”标准化的Function Calling”
小结
Agent的核心:感知→决策→执行→反思的循环。
从Chatbot到Agent,AI从”聊天”变成了”干活”。
关键技术:
- 架构选择:ReAct适合实时决策,Plan-and-Execute适合复杂规划
- 多Agent协作:专家分工,提升效率
- 记忆系统:让AI能记住你
- MCP协议:标准化的工具连接
Agent是AI应用的高级形态,代表了从”对话”到”行动”的跃迁。
下篇预告
学会了Agent技术,怎么用它提升开发效率?
参考资料
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
从Chatbot到Agent:打造能自主干活的AI
https://blog.souloss.com/posts/machine-learning/llm/from-chatbot-to-agent/ 部分信息可能已经过时
相关文章 智能推荐
1
AI Agent 实战指南
AI AI Agent 实战指南系列——从基础概念到项目实战,手把手教你构建智能体应用,涵盖最新大模型架构创新。
2
AI Agent:打造能自主干活的智能体
AI 工程指南 AI Agent——打造能自主干活的智能体
3
Agent 基础概念:从 Chatbot 到智能体
AI AI Agent 核心概念解析——感知-规划-执行-反思循环、ReAct 架构、与 Chatbot 的本质区别
4
Agent 测试策略:从单元到集成
AI 深度解读 Agent 测试——单元测试、集成测试、LLM-as-judge、模糊测试
5
让AI使用工具:Function Calling实战
AI 让AI使用工具——Function Calling实战






