Agent的"思考" - 智能体

什么是智能体?

智能体是一个能够感知环境、进行推理、制定计划、做出决策并自主采取行动以实现特定目标的AI系统。

智能体以大语言模型为核心,集成记忆、知识库和工具等功能为一体,构造了完整的决策、执行和记忆能力,拥有主观能动性

与普通的AI大模型不同的是,智能体能够:

  1. 感知环境:通过各种输入渠道获取信息(多模态),理解用户需求和环境状态
  2. 自助规划任务步骤:将复杂任务分解为可执行的子任务,并设计执行顺序
  3. 主动调用工具完成任务:根据需要选择并使用各种外部工具和API,扩展自己能力的边界
  4. 进行多步推理:同哥思维链逐步分析问题并推导解决方案
  5. 持续学习和记忆过去的交互:保持上下文连贯性,利用历史交互改进策略
  6. 根据环境反馈调整行为:根据执行结果动态调整策略,实现闭环优化

这样说可能还是会迷茫,但是大概率用过这个功能,比如豆包的思考,这就是AI逐步智能化的体现:

通过智能体,让AI会像人类一样先思考后回答,让答案更准确:

智能体的分类

跟人的成长阶段一样,智能体也是可以不断进化的,按照自主性和规划能力,智能体可以分为几个层次:

  • 反应式智能体

    根据当前的输入和固定的规则做出反应,像简单的聊天机器人,没有真正的规划能力

  • 有限规划智能体

    能进行简单的多步骤执行,但执行的计划通常都是预设的,或者是有严格限制的,"能干事,但干不了复杂的大事"。

    简单的例子,就是智能体将问题怎么拆解,怎么去思考问题,都是被人为提前定好的,不是智能体自己规划的

  • 自助规划智能体

    能够根据任务目标 "自主" 分解任务、制定计划、选择工具并一步步执行,直到完成任务。

    比如25年很火的Manus,它的核心亮点在于其 "自助执行的能力"。

    我们可以在开源的Manus的复刻版 --- OpenManus,这类智能体通过"思考-行动-观察"的循环模式工作

感兴趣的可以把代码下下来看看,后面我会专门出一篇文章聊一下我自己是怎么去学习OpenManus

智能体实现的关键技术

CoT思维链

CoT(Chain of Thought)思维链是一种让AI像人类一样"思考"的技术,帮助AI在处理复杂问题时能够按照步骤思考。

对于复杂的推理类问题,先思考后执行,这样的效果往往更好,可以让模型在生成答案时展示推理过程

CoT的实现方式其实很简单,可以在输入Prompt时,给模型提供额外的提示或引导,比如"让我们一步一步思考这个问题",让模型以逐步推理的方式生成回答,还可以运用Prompt的优化技巧few shot,给模型提供包含思维链的示例问题和答案,让模型学习如何构建自己的思维链,在OpenManus早期的版本中,有CoT的系统提示词

vbnet 复制代码
You are an assistant focused on Chain of Thought reasoning. For each question, please follow these steps:  
  
1. Break down the problem: Divide complex problems into smaller, more manageable parts  
2. Think step by step: Think through each part in detail, showing your reasoning process  
3. Synthesize conclusions: Integrate the thinking from each part into a complete solution  
4. Provide an answer: Give a final concise answer  
  
Your response should follow this format:  
Thinking: [Detailed thought process, including problem decomposition, reasoning for each step, and analysis]  
Answer: [Final answer based on the thought process, clear and concise]  
  
Remember, the thinking process is more important than the final answer, as it demonstrates how you reached your conclusion.
css 复制代码
你是一名专注于 "思维链"(Chain of Thought)推理的助手。针对每个问题,请遵循以下步骤:
拆解问题:将复杂问题分解为更小、更易于处理的部分。
逐步思考:详细思考每个部分,清晰展示你的推理过程。
综合结论:将每个部分的思考整合起来,形成完整的解决方案。
给出答案:提供最终简洁的答案。
你的回复需遵循以下格式:思考:[详细的思考过程,包括问题拆解、每一步的推理依据及分析]答案:[基于思考过程得出的最终答案,清晰简洁]
请记住,思考过程比最终答案更重要,因为它能体现你得出结论的逻辑路径。

Agent Loop 执行循环

Agent Loop 是智能体最核心的工作机制,指智能体在没有用户输入的情况下,自主重复执行推理和工具调用的过程。

在传统的聊天模型中,每次用户提问后,AI回复一次就结束了,但在智能体中,AI回复后可能会继续自主执行后续动作(如调用工具、处理结果、继续推理),形成一个自主执行的循环,直到任务完成(或者超出预设的最大步骤)

我们可以在OpenManus中找到这段Agent Loop的执行循环代码:

先了解几个概念,Agent在执行的时候,有提前定义几个Agent的执行状态:

python 复制代码
class AgentState(str, Enum):
    """Agent execution states"""
    IDLE = "IDLE"					// 空闲中
    RUNNING = "RUNNING"		// 运行中
    FINISHED = "FINISHED"	// 已完成
    ERROR = "ERROR"				// 异常

对Agent需要限制最大的思考步长,不能让Agent无限的思考下去,同时考虑出现死循环的情况,需要有个最大步长

python 复制代码
max_steps: int = 20

我们来对这run()代码做一下拆解

第一步:检查状态

python 复制代码
if self.state != AgentState.IDLE:
    raise RuntimeError(f"Cannot run agent from state: {self.state}")

第二步:初始化用户请求(User Prompt)

python 复制代码
if request:
    self.update_memory("user", request)

第三步:状态及上下文的管理

python 复制代码
results: List[str] = []
async with self.state_context(AgentState.RUNNING):

第四步:主循环,直到Agent达到最大步骤或者Agent的执行任务的状态为已完成

python 复制代码
 while (
     self.current_step < self.max_steps and self.state != AgentState.FINISHED
):

第五步:具体执行动作step()

python 复制代码
self.current_step += 1
logger.info(f"Executing step {self.current_step}/{self.max_steps}")
step_result = await self.step()

第六步:检查Agent是否卡在循环中和是否达到最大步长

python 复制代码
 if self.is_stuck():
           self.handle_stuck_state()
           results.append(f"Step {self.current_step}: {step_result}")
python 复制代码
if self.current_step >= self.max_steps:
           self.current_step = 0
           self.state = AgentState.IDLE
           results.append(f"Terminated: Reached max steps ({self.max_steps})")

我们可以用Java来把这段代码写一下

java 复制代码
public String run() {  
    List<String> results = new ArrayList<>();
  	int MAX_STEPS = 20;
    while (currentStep < MAX_STEPS && !isFinished) {  
        currentStep++;  
        // 这里实现具体的步骤逻辑 - 伪代码
        String stepResult = executeStep();  
        results.add("步骤 " + currentStep + ": " + stepResult);  
    }  
    if (currentStep >= MAX_STEPS) {  
        results.add("达到最大步骤数: " + MAX_STEPS);  
    }  
    return String.join("\n", results);  
}

ReAct模式

ReAct(Reasoning + Acting)是一种结合推理和行动的智能体架构,它模仿人类解决问题时的"思考-行动-观察"的循环

目的是通过交互式的决策去解决复杂问题,这也是目前最常用的智能体的工作模式之一。

核心思想:

  1. 推理(Reasion):将原始问题拆成多步骤的任务(对应上文step),明确当前要执行的步骤,第一步干什么,第二步干什么
  2. 行动(Act):调用外部工具执行动作,比如调用搜索引擎、打开浏览器访问网页等
  3. 观察(Observe):获取工具返回的结果,反馈给智能体进行下一步决策。比如将打开的网页代码输入给AI
  4. 循环迭代:不断重复上述3个过程,知道任务完成或者达到终止条件(如达到最大思考和执行的步长)

所需支持的系统

除了上面我们介绍的工作机制外,智能体的实现还依赖于很多支持系统

  • AI大模型,这个是肯定要有的,由大模型提供了思考、推理和决策的核心能力,越强的AI大模型通常执行任务的效果越好
  • 记忆系统,智能体需要记忆系统来存储对话历史、中间结果和执行状态,这样才能够进行连续的对话并根据历史对话分析接下来的工作步骤
  • 知识库,尽管大语言模型拥有丰富的参数知识,但针对特定领域的专业知识往往需要额外的知识库支持,比如之前我有讲到过的一篇文章,通过RAG检索增强生成 + 向量数据库等技术,智能体可以检索并利用专业知识回答问题
  • 工具调用,工具是扩展智能体能力边界的关键,智能体通过工具调用可以访问搜索引擎、数据库、API接口等外部服务,极大的增强了其解决问题的实际能力,MCP其实也是工具调用的一种

综合上面所说的四类技术,结合CoT、Agent Loop、ReAct等机制,就可以构建一个完整的、有自助规划能力的AI智能体

智能体工作流

当我们面对复杂任务时,单一的智能体可能无法满足需求,因此智能体**工作流(Agent Workflow)**应运而生

通过简单的任务编排,允许多个智能体协同工作,各司其职

智能体工作流编排的精髓在于 将复杂任务分解为连贯的节点链,每个节点由最适合的智能体处理,节点间通过条件路由进行灵活连接,形成一个高效、可靠的执行网络。

Prompt Chaining 提示链工作流

Prompt Chaining 是最常见的智能体工作流模式之一,它的核心思想是将一个复杂任务拆解为一系列有序的子任务

每一步都由LLM处理前序LLM处理的输出结果,逐步推进任务的完成

举个例子,比如你想要在小红书发一个贴,你在思考内容怎么写,可以让智能体工作流来帮你,可以先让LLM-Call-1帮你先生成大纲,后续的LLM-Call-n再根据大纲生成详细内容,最后进行润色和校对,每一步都可以插入校验和中间检查,确保流程正确,内容生成更精准

这种模式结构清晰,易于调试,适合任务可以自然被分解为多个阶段的场景

Routing 路由分流工作流

Routing工作流模式则更像一个智能的路由器,根据输入内容的类型或特征,将任务分发给最合适的下游智能体

举个例子,在客服系统中,可以将常见的问题、退款请求、技术支持等分流到不同的处理模块,再多模型系统中,可以将简单的问题分配给小问题,复杂的问题交给大模型,这样既提高了处理效率,也保证了每类问题都能够得到最优的解答。

Orchestrator-Workers 协调者-执行者工作流

对于复杂的任务、参与任务的智能体增多时,我们可以引入一位 "管理者"会根据任务动态拆解出多个子任务 (看着跟上面的路由器很像,但任务拆解是最关键的不同,不是简单路由了),将这些子任务分配给多个 "工人" 智能体,最后再整合所有工人的结果,这种中央协调机制提高了复杂系统的整体效率,适合任务结构不确定、需要动态分解的复杂场景

Parallelization 并行化工作流

在Parallelization并行化的模式下,任务会被拆分为多个可以并行处理的子任务,最后聚合各自的结果。

比如在代码合规安全审查的场景中,可以让多个智能体分别对同一段代码进行安全审查,最后 "投票" 决定是否有问题。比如在处理超长文档的时候,可以将文档分段,每段由不同的智能体并行的总结,这种模式可以显著提升初六速度,通过 "投票" 机制提升结果的准确度

A2A协议

什么是A2A

A2A(Agent To Agent)是最近比较热门的概念,简单来说,A2A协议就是为 "智能体之间如何直接交流和协作" 制定的一套标准

A2A协议的核心,是让每个智能体都能像 "网络节点" 一样,拥有自己的身份、能力描述和通信接口。

A2A不仅规定了消息的格式和传递方式,还包含了身份认证、能力发现、任务委托、结果回传等机制,这样一来,智能体之间就可以像人类团队一样,相互打招呼、询问对方能做什么,请求协助。

可以把A2A类比为智能体世界里的HTTP协议,HTTP协议让全球不同的服务器和电脑之间能够交换数据,A2A协议则是让不同的厂商、不同的平台、不同能力的智能体能够像团队成员一样互相理解、协作和分工。如果说HTTP协议让互联网成为了一个开放、互联的世界,那么A2A协议则让智能体世界变得开放、协作和高效。

像上面我们其实就有Agent之间的交互,但这都是局限于自己的服务,不涉及第三方的智能体服务

A2A面临的问题

简单和MCP对比一下,虽然A2A和MCP都算是协议(或者说是标准),但二者存在本质上的区别。

MCP协议是智能体和外部工具之间的标准,它规定了智能体如何安全、规范的调用外部的数据库、搜索引擎、代码执行等工具资源

可以把MCP理解为 "智能体-工具" 的HTTP协议,而A2A协议则是智能体之间的通信协议,让不同的AI直接对话、协作和分工。

从安全的角度来看,MCP和A2A处理的是不同层面的安全问题:

  • MCP的安全关注点:主要集中在单个智能体与工具之间的安全交互,主要防范的是工具滥用和提示词注入攻击
  • A2A的安全关注点:更关注智能体网络中的身份认证、授权和信任链,A2A需要解决 "我怎么知道我在和谁通信"、"这个智能体有权限请求这项任务吗?"、"如何防止恶意智能体窃取或篡改任务数据"等问题

A2A面临的安全挑战更加复杂,在处理跨网络、跨平台、多方协作的场景的落地场景还不成熟

对于一个成熟的智能体系统,可能会同时运用MCP和A2A,MCP负责某个智能体内部调用工具完成,A2A负责智能体之间的协作完成任务

相关推荐
牛奔7 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
想用offer打牌12 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
KYGALYX14 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了14 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
爬山算法14 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
Moment15 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
yunteng52115 小时前
通用架构(同城双活)(单点接入)
架构·同城双活·单点接入
一切尽在,你来15 小时前
第二章 预告内容
人工智能·langchain·ai编程
草梅友仁15 小时前
墨梅博客 1.4.0 发布与开源动态 | 2026 年第 6 周草梅周报
开源·github·ai编程
Cobyte16 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc