跳转至

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与外部工具交互的标准机制。其工作流程为:

  1. 在系统提示中定义可用的工具(函数名称、参数schema、功能描述)
  2. LLM根据用户请求,决定是否需要调用工具,并生成结构化的函数调用请求
  3. 外部系统执行函数调用,返回结果
  4. 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系统,以获得更大的灵活性和可控性。


评论 #