mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1213 字
3 分钟
从Chatbot到Agent:打造能自主干活的AI
2025-12-26

你有没有想过,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, Tool
from langchain_openai import ChatOpenAI
# 定义工具
tools = [
Tool(
name="数据库查询",
func=query_database,
description="查询销售数据,输入SQL语句"
),
Tool(
name="网络搜索",
func=search_web,
description="搜索网络信息,输入搜索关键词"
)
]
# 创建Agent
llm = 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 result

3.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
# 定义Agent
researcher = 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 Server
from 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/
作者
Souloss
发布于
2025-12-26
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时