惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
IT之家
IT之家
B
Blog
博客园_首页
量子位
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
J
Java Code Geeks
H
Help Net Security
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
D
DataBreaches.Net
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News

慕雪的寒舍

【Linux】腾讯云服务器被攻击后,我是怎么排查挖矿木马的 【Agent】Multica使用心得 【AI】叙界S3备份需求,多Agent赛马 【Nginx】使用OpenResty Lua拦截Artalk广告昵称 【AI】给Codex加上rm防误删Hook 【AI】渐进式披露能省Token,但要管住Agent Loop 【Mac】修改Mac的hostname,告别局域网IP乱入 【随笔】招商银行visa金卡申请和绑定海外谷歌账户支付 【工具】用AI随手写博客 【测开】adb shell am start 启动跳链时 & 符号被截断的解决方法 【Appium】安装 xcuitest 驱动时 npm install 报错的解决方法 【2026】新年快乐! 【Mac】解决MacBook WiFi玄学问题“连上WiFI但是没网络”的折腾经历 【AI】智谱AutoGLM部署教程:AutoDL云服务器+本地PhoneAgent配置 【Agent.10】OpenAI接口输出格式约束(response_format) 【Agent.09】LangChain里面使用MCP工具 【Hexo】简单记录如何在服务器上部署hexo-friend-article 【ConfyUI】在MacBook上用ConfyUI部署阿里Z-Image最新开源模型 【AI】AI老是喜欢写总结文档,咋办? 【Agent.08】LangChain的第一个Demo:从零开始构建Agent 【Mac】MacBookPro无法连接第2个外接显示器问题解决 【Mac】为Mac配置基本开发环境 【Agent.06】使用openai sdk实现多轮对话 【Agent.05】OpenAI接口Function Calling工具调用详解 【MCP】无敌了,chrome-devtools-mcp杀死浏览器AI自动化的比赛! 【随笔】本地部署AI的现状和AI本地部署的价值
【Agent.07】什么是Agent?从Chat到ReAct的AI进化之路
慕雪年华 · 2025-10-25 · via 慕雪的寒舍

距离上次更新本文已经过去了 200 天,文章部分内容可能已经过时,请注意甄别。

欢迎阅读慕雪撰写的AI Agent专栏,本专栏目录如下

  1. 【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?
  2. 【AI】AI对26届及今后计算机校招的影响
  3. 【Agent.01】AI Agent智能体开发专题引言
  4. 【Agent.02】市面上常见的大模型有哪些?
  5. 【Agent.03】带你学会写一个基础的Prompt
  6. 【Agent.04】AI时代的hello world:调用OpenAI接口,与大模型交互
  7. 【Agent.05】OpenAI接口Function Calling工具调用详解
  8. 【Agent.06】使用openai sdk实现多轮对话
  9. 【Agent.07】什么是Agent?从Chat到ReAct的AI进化之路
  10. 【Agent.08】LangChain的第一个Demo:从零开始构建Agent
  11. 【Agent.09】LangChain里面使用MCP工具
  12. 【Agent.10】OpenAI接口输出格式约束(response_format)

本专栏所有代码都会归档至 musnows/agent-blog 开源仓库。

在前面几篇文章中,我们已经学习了如何与大模型交互、如何写好Prompt、如何进行Function Calling等基础知识。现在,我们终于来到了这个专栏的核心主题——Agent

本文有部分内容由AI辅助编写,仅供参考

1. 写在前面

说到AI Agent这个最近大火的关键词,很多人可能会觉得这是一个非常高端难懂的概念。但其实,AI Agent的本质就是一个能够自主思考和行动的AI助手

如果说Chat LLM是一个只能说话的顾问,那么Agent就是一个既能说话又能干事的智能助手。这个转变,就是通过我们前面学习的Function Calling和Agent框架来实现的。

本文将从概念层面带大家理解Agent到底是什么,它和传统的Chat LLM有什么区别,以及它是如何工作的。

2. Agent和Chat LLM的区别

要理解Agent,首先要知道它和我们平时使用的Chat LLM(比如DeepSeek的网页聊天框)有什么本质区别。

2.1. Agent和Chat的区别?

传统的Chat LLM就像是只能说话的顾问,你问它答,一问一答的。它只能生成文本回答,没办法真正帮你做事。而Agent则完全不同,它能主动思考问题,规划执行步骤,还能调用各种工具和API来完成任务。

当然啦,现在很多AI的网页端也在进化,开始加入网络搜索、代码知识库这些工具功能,算是朝着Agent的方向转变了(比如豆包)。但我们这里说的,还是Agent和普通Chat LLM最核心的概念区别。

2.2. 为什么需要Agent?

想象一下这个场景:你需要AI帮你预订一张机票。这也是之前在Function Calling中作为示例的场景。

Chat LLM的处理方式

由于Chat LLM没有能力访问外部工具,所以他只能给我们提出购买机票的建议

1
2
3
4
5
6
用户:帮我预订一张明天从北京到上海的机票
Chat LLM:对不起,我无法直接预订机票。但我可以告诉你如何操作:
1. 打开携程/去哪儿/飞猪等订票网站
2. 输入出发地:北京,目的地:上海
3. 选择出发日期:明天
4. 选择航班并完成支付...

Agent的处理方式

Agent可以接触我们预先定义好的工具,帮我们实现预订机票的这个流程。

1
2
3
4
5
6
7
用户:帮我预订一张明天从北京到上海的机票
Agent:[思考]用户需要预订机票,我需要:
1. 搜索可用航班
2. 选择合适的航班
3. 执行预订操作
[行动]调用search_flights工具 → [分析结果] → 调用book_flight工具 → [完成任务]
Agent:已为您成功预订明天从北京到上海的CA1234航班,08:30起飞,票价1280元。预订号:BK123456789。

这就是本质区别:Chat LLM只能"说",而Agent能"做"。这一点,在先前的Function Calling章节已经展示给大家了。

在AI时代,我们需要的不仅仅是一个能聊天的助手,更需要一个能帮我们解决实际问题的智能助手,进一步提升各类事情的效率。

Agent的出现解决了很多现实问题:

  1. 任务自动化:一些涉及到决策的复杂的多步骤任务,现在可以让Agent自动完成,大大减少了人工干预。
  2. 工具集成:Agent能够调用各种API和工具,这样AI的能力边界就被大大扩展了,能够和几乎任何已有的系统进行集成和协作,完全打破了原始的只能通过OpenAPI人工编写脚本进行定死的任务处理的范式。
  3. 智能决策:Agent可以根据实际情况自主判断和选择最佳解决方案。而且通过工具与环境交互,Agent还能不断优化自己解决问题的策略。像人一样选择最优解。

在软件开发、数据分析、客户服务这些场景中,Agent的价值就更加明显了。比如本专栏最终要实现的测试用例生成Agent,就能自动完成代码分析、测试用例编写、覆盖率检查这一整套复杂的任务流程。

不过需要注意的是:Agent并不是万能的,只有涉及到需要利用大模型的思考能力进行决策的场景,才有必要使用Agent来实现。如果是一些诸如静态扫描代码流水线、自动化脚本测试这种已经“固定死”的场景,没有必要盲目蛮干的上Agent,没有任何意义,甚至会降低效果!

简单来说,一个任务中,需要根据数据进行下一步操作决策的节点越多,就越适合引入Agent。反之,如果没有什么需要动态决策的场景,一个传统的写死的脚本依旧是更好的选择。

3.1. 什么是ReAct?

ReAct(Reasoning and Acting,推理-行动)是Agent最核心的工作机制。这个概念是姚顺雨(Shunyu Yao)等研究人员在2022年提出的,现在已经成为了Agent框架的标准设计模式[1]

ReAct的核心思想其实很简单,就是让Agent像人类一样思考问题,然后采取行动。具体来说包含三个步骤:

  • 首先是推理,Agent会分析当前的情况,制定一个行动计划;
  • 然后是行动,根据计划执行具体的工具调用或操作;
  • 最后是观察,看看行动的结果如何,然后根据结果调整策略,执行下一步行动;

这个过程会不断循环进行,直到AI认为任务完成为止。

3.2. ReAct工作流程图

下面是一个典型的Agent ReAct工作流程:

flowchart TD
    A([接收用户任务]) --> B[理解任务需求]
    B --> C[分析任务复杂性]
    C --> D{需要工具调用?}

    D -->|否| E[直接生成回答]
    E --> Z([完成任务])

    D -->|是| F[规划执行步骤]
    F --> G[选择合适工具]
    G --> H[调用工具/函数]
    H --> I[获取执行结果]
    I --> J[分析结果质量]

    J --> K{任务完成?}
    K -->|否| L[更新策略/信息]
    L --> M{需要更多工具?}
    M -->|是| F
    M -->|否| N[继续推理分析]
    N --> F

    K -->|是| O[生成最终回答]
    O --> Z

    style A fill:#90EE90
    style Z fill:#FFB6C1
    style H fill:#FFE4B5
    style I fill:#FFE4B5

3.3. ReAct的具体步骤

让我们用一个具体的例子来说明ReAct是如何工作的。假设用户要求:“帮我分析这个Python文件的性能瓶颈并生成优化建议”。

Step 1: Reasoning(推理)

1
2
3
4
5
6
7
8
9
10
Agent思考:用户需要我分析Python文件的性能瓶颈。我需要:
1. 读取Python文件内容
2. 分析代码结构和复杂度
3. 识别潜在的性能问题
4. 生成优化建议

需要的工具:
- file_reader:读取文件
- code_analyzer:分析代码
- performance_profiler:性能分析

Step 2: Acting(行动)

1
2
3
4
5
6

file_content = file_reader("performance_test.py")

analysis_result = code_analyzer(file_content)

performance_report = performance_profiler(file_content)

Step 3: Observation(观察)

1
2
3
4
5
Agent观察结果:
- 文件读取成功,共156行代码
- 代码分析发现3个嵌套循环
- 性能分析显示时间复杂度为O(n³)
- 内存使用量较大

Step 4: 再次Reasoning(二次推理)

1
2
3
4
5
6
Agent思考:根据分析结果,我发现了以下性能问题:
1. 三重嵌套循环导致时间复杂度过高
2. 大量重复计算
3. 内存使用未优化

现在需要生成具体的优化建议和代码示例。

Step 5: 最终Action(最终行动)

1
Agent生成最终的优化报告和改进代码。

ReAct这种机制有很多优势。首先是透明性,Agent每一步的推理过程都是可见的,这样我们就能很方便地调试和优化它的行为。然后是灵活性,Agent可以根据中间得到的结果随时调整策略,而不是死板地按照预设流程执行。还有可控性,我们可以在关键节点设置检查点,确保Agent不会"跑偏"。最后是扩展性,可以很轻松地集成新的工具和能力。

正是这种"思考-行动-观察"的循环机制,让Agent具备了真正的智能行为,能够处理那些复杂的、需要多步骤才能完成的任务。

4. Agent SDK与OpenAI接口的关系

4.1. 从底层到高层的关系

在我们前面学习的内容中,我们接触了三个层次的东西:直接用requests调用OpenAI API,使用OpenAI Python SDK,以及现在要学习的Agent框架。

这三者之间是什么关系呢?我们可以用一个生活中的例子来理解。

  • 直接调用OpenAI API就像手动炒菜,你需要自己控制火候、掌握时间、放调料等等所有细节,虽然很灵活但操作起来特别复杂。
  • 使用OpenAI SDK就像用电饭煲,它把底层的网络请求和响应处理都封装好了,你只需要把米放进去按下按钮就行,可以更专注于业务逻辑。
  • 而使用Agent SDK就更像去餐厅点餐了,你只需要告诉服务员你想要吃什么菜,后厨也就是Agent框架会自动处理所有的烹饪流程,你等着上菜就行。

简单来说,这三个东西的封装层次越来越高,也就是一个依赖链条:

flowchart TD
    A[HTTP] --> B[OpenAI接口]
    B --> C[OpenAI SDK]
    C --> D[Agent SDK]
    D --> E[Agent工具,如cursor]

现在已经有非常多的开源Agent SDK以及封装好的Agent工具,为我们节省了很多工作。本专栏不会告诉大家如何搓一个Agent SDK出来,而是直接转向Agent SDK的应用。

4.2. Agent SDK的架构层次

下面是一个Agent SDK的架构层次图,非实际的架构图,只是一个示例Demo:

flowchart TD
    A[用户输入] --> B[Agent SDK]

    B --> C[ReAct控制器]
    C --> D[Prompt管理器]
    C --> E[工具管理器]
    C --> F[状态管理器]

    D --> G[系统Prompt构建]
    E --> H[Function Calling处理]
    F --> I[对话历史维护]

    G --> J[OpenAI SDK]
    H --> J
    I --> J

    J --> K[OpenAI API]
    K --> L[大模型]

    L --> M[模型响应]
    M --> N[SDK解析]
    N --> O[工具执行]
    O --> P[结果处理]
    P --> Q[最终输出]

    style A fill:#90EE90
    style Q fill:#FFB6C1
    style B fill:#E1F5FE
    style C fill:#F3E5F5

4.3. Agent SDK帮我们做了什么?

Agent SDK本质上是在OpenAI SDK的基础上,封装了以下功能:

首先,是自动化的ReAct循环管理,下面是一个伪代码,展示了二者的区别:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

def manual_agent(user_input):
messages = [{"role": "system", "content": system_prompt}]
messages.append({"role": "user", "content": user_input})


response = openai.chat.completions.create(...)


if response.choices[0].message.tool_calls:


pass




from some_agent_sdk import Agent

agent = Agent(
tools=[tool1, tool2, tool3],
model="gpt-4"
)

result = agent.run("帮我预订机票")

总而言之言而总之,Agent SDK帮我们把上下文管理、工具管理、工具调用、工具返回结果处理等等逻辑都封装好了,不再需要我们自己去解析OpenAI接口的Function Calling返回格式进行处理,也不需要关注Agent在多轮对话中对工具调用状态的思考等等事项。

我们只需要把prompt、模型、工具传入给Agent SDK,剩下的全由Agent SDK代劳!

4.4. 常见的Agent SDK

名称 开发语言 核心特点 仓库
OpenAI Agents SDK Python 官方轻量型Agent SDK,支持多Agent协作、工具调用、会话记忆,原生集成OpenAI模型 官方文档
LangChain Python/JS 生态最成熟,支持OpenAI等多LLM集成,提供完整Agent工作流(工具、记忆、编排) GitHub
Microsoft AutoGen Python 专注多Agent对话协作,深度兼容OpenAI模型,适合复杂任务分工与自动化执行 GitHub
CrewAI Python 轻量级团队式Agent框架,默认支持OpenAI模型,角色定义清晰、任务分配灵活 GitHub
LangGraph Python 状态机式Agent框架,无缝集成OpenAI模型,擅长复杂流程控制与步骤化任务执行 GitHub

5. The end

好啦,通过这篇文章的学习,咱们算是把Agent的核心概念和工作原理搞清楚了。

Agent的核心工作机制就是ReAct,也就是推理-行动-观察的循环。Agent会先分析情况制定计划,然后执行工具调用,观察结果并调整策略,这个循环让Agent具备了真正的智能行为。

后续,将以业界最常用的LangChain Agent SDK为例,为大家展示一个最最简单的Agent的代码编写。


  1. Yao, S., Zhao, J., Yu, D., Du, N., Shafran, I., Narasimhan, K., & Cao, Y. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. International Conference on Learning Representations. https://arxiv.org/abs/2210.03629 ↩︎