AI Agent Introduction
一个AI agent包含两个层面的内容:
- Agentic Frameworks 编排层,这是智能体的大脑,负责定义智能体的目标、角色、记忆和规划能力。其核心原理是通过ReAct、Chain of Thought等提示工程的技术,将复杂任务分解为一系列可执行的步骤。现在最主流的就是LangChain。
- Action Layer 行动层,即agent编排规划后,调用行动层的工具来与外部世界(如浏览器或API)进行实际交互。
AI Agent与具身智能(Embodied Intelligence)是两个有交叉但各自独立的研究方向。它们共享一些基础概念(如规划、记忆、工具使用),但在核心问题、技术栈和评估方式上有本质区别:
- AI Agent主要在数字环境中运行(API、网页、代码),核心挑战是推理、规划和工具编排
- 具身智能通过物理或虚拟身体在三维空间中运行,核心挑战是感知-行动闭环、连续控制和物理交互
本笔记主要讨论的是任务导向型AI智能体(Autonomous Task-Solving AI Agents),即在数字环境中通过AI技术编排工作、完成任务的软件智能体。如今业界常说的AI Agent就是这种智能体。具身智能则作为一个独立的顶级板块单独讨论。
关于具身智能的详细讨论,请参考本站的 具身智能 板块。
在我的网站中,如果没有特别提及,"AI Agent"一般指非具身的任务导向型智能体。
OpenAI前科学家Lilian Weng曾给出一个被全行业广泛引用的公式,可以被视为当下AI Agent最公认的定义:
AI Agent = LLM + Planning + Memory + Tools
下面我们逐一展开这个公式中的各个组件。
Planning(规划)
Planning是Agent的核心能力之一,它赋予Agent将复杂任务分解为可管理的子任务的能力。
任务分解(Task Decomposition)
Agent需要将一个高层次的用户需求拆解为一系列具体的、可执行的子目标。常见的分解策略包括:
- 自顶向下分解:先制定宏观计划,再逐步细化每个步骤
- 递归分解:将大任务拆成子任务,子任务再拆成更小的子任务,直到每个任务足够简单
- 基于依赖关系的分解:分析子任务之间的依赖关系,构建任务DAG(有向无环图),识别可并行的步骤
推理模式
Agent的规划能力依赖于底层的推理模式。主流的推理模式包括:
- CoT(Chain of Thought):通过逐步推理来分解问题
- ReAct(Reason + Act):在推理和行动之间交替进行,每一步都基于上一步的观察结果
- Plan-and-Execute:先生成完整计划,再逐步执行,必要时动态调整
这些推理模式的详细介绍见本章节的 Reasoning Patterns 笔记。
子目标设定与调整
优秀的Agent不仅能设定子目标,还能根据执行过程中的反馈动态调整计划。这包括:
- 当某个子任务失败时,决定是重试、跳过还是调整后续计划
- 当发现新信息时,更新对任务的理解并修改计划
- 在多轮交互中持续优化策略
Memory(记忆)
记忆系统是Agent能够处理复杂任务、维持上下文连贯性的关键。按照时间尺度和存储方式,可以分为短期记忆和长期记忆。
短期记忆(Short-term Memory)
短期记忆本质上就是LLM的上下文窗口(Context Window)。它包含:
- 当前对话的历史消息
- 系统提示(System Prompt)中预设的角色和指令
- 当前任务的中间结果和观察
短期记忆的主要限制是上下文窗口的长度。即使当前模型已支持128K甚至更长的上下文,在处理极长的对话或大量工具调用结果时,仍然可能面临信息丢失的问题。
长期记忆(Long-term Memory)
长期记忆使Agent能够跨会话地存储和检索信息,其核心技术包括:
- 向量数据库(Vector Database):将文本转化为向量嵌入(embedding),存储在向量数据库中(如Pinecone、Weaviate、ChromaDB),通过相似度检索来获取相关信息
- RAG(Retrieval-Augmented Generation):将检索到的相关文档注入到LLM的上下文中,使模型能够基于外部知识进行推理。RAG本质上就是一种为LLM提供长期记忆的机制
- 结构化存储:使用关系数据库或知识图谱来存储结构化的事实和关系
记忆管理策略
在实际系统中,记忆管理还涉及以下策略:
- 摘要压缩:对过长的对话历史进行摘要,保留关键信息
- 重要性评分:对记忆中的不同条目赋予重要性权重,优先检索高重要性的内容
- 遗忘机制:淘汰过时或低相关性的记忆条目
Tool Use(工具使用)
工具使用是Agent从"纯推理"走向"实际行动"的关键桥梁。通过调用外部工具,Agent的能力得到了极大的拓展。
Function Calling
Function Calling是当前LLM与外部工具交互的标准机制。其工作流程为:
- 在系统提示中定义可用的工具(函数名称、参数schema、功能描述)
- LLM根据用户请求,决定是否需要调用工具,并生成结构化的函数调用请求
- 外部系统执行函数调用,返回结果
- LLM将工具返回的结果整合到回答中
OpenAI、Anthropic、Google等主要LLM提供商均已支持原生的Function Calling能力。
常见工具类型
Agent常用的工具类型包括:
- API调用:访问天气、新闻、金融数据等外部服务
- 代码执行:通过代码解释器(如Python REPL)执行计算、数据分析
- 搜索引擎:通过Google、Bing等搜索引擎获取实时信息
- 文件操作:读写文件系统、操作数据库
- 浏览器操作:自动化浏览网页、填写表单、提取信息
工具选择与编排
当可用工具数量较多时,Agent需要具备工具选择的能力——根据当前任务需求,从工具库中选择最合适的工具。高级Agent系统还支持工具编排,即将多个工具的调用组合成一个工作流。
Multi-Agent(多智能体协作)
当单个Agent的能力不足以应对复杂任务时,可以引入多个Agent进行协作,每个Agent专注于自己擅长的领域。
角色分工
在Multi-Agent系统中,不同的Agent通常承担不同的角色:
- Manager Agent:负责任务分配和全局协调
- Specialist Agent:负责特定领域的任务(如代码编写、文档搜索、数据分析)
- Critic Agent:负责审查其他Agent的输出,提供反馈
通信机制
Multi-Agent之间的通信方式主要有:
- 共享消息队列:所有Agent通过一个共享的消息通道进行通信
- 点对点通信:Agent之间直接发送消息
- 黑板模式(Blackboard):Agent将中间结果写入共享空间,其他Agent按需读取
代表性框架
- AutoGen(Microsoft):支持多Agent对话和协作的开源框架,Agent之间通过对话进行交互
- CrewAI:基于角色扮演的多Agent框架,每个Agent有明确的角色、目标和背景故事
- MetaGPT:模拟软件公司的组织架构,Agent分别扮演产品经理、架构师、工程师等角色
Agent框架概览
当前主流的Agent框架各有侧重:
| 框架 | 核心定位 | 特点 |
|---|---|---|
| LangChain / LangGraph | 通用Agent编排 | 最成熟的生态系统,丰富的工具集成,LangGraph支持有状态的多步工作流 |
| LlamaIndex | 数据驱动Agent | 擅长RAG和数据索引,适合知识密集型Agent |
| AutoGPT | 自主Agent探索 | 早期自主Agent的代表,强调端到端的自主任务完成 |
| Claude Code | 软件工程Agent | Anthropic推出的编程Agent,深度集成代码理解和生成能力 |
| OpenAI Agents SDK | 轻量级Agent开发 | OpenAI官方框架,提供Swarm式的多Agent编排 |
| Dify / Coze | 低代码Agent平台 | 可视化构建Agent工作流,降低开发门槛 |
选择框架时需要考虑的因素包括:任务复杂度、是否需要多Agent协作、对工具集成的需求、部署环境、以及团队的技术栈偏好。
在实际开发中,许多团队也会选择不依赖特定框架,而是直接基于LLM的API和Function Calling构建定制化的Agent系统,以获得更大的灵活性和可控性。