AI Agent
AI 智能体通过观察环境、选择动作并借助工具执行操作,以循环方式追求目标,直到任务完成。本文介绍智能体的工作原理。
AI 智能体是一种通过反复观察环境、决定下一步并采取行动来追求目标的系统,之后会利用行动结果决定接下来做什么。经典教材《人工智能:一种现代方法》将智能体定义为任何通过传感器感知环境、并通过执行器对环境采取行动的事物;这个定义涵盖恒温器、游戏程序和机器人。自 2023 年以来,这个术语主要指基于大型语言模型(LLM)构建的智能体:模型读取目标,调用网页搜索、代码执行或业务 API 等工具,读取各工具返回的结果,并持续执行,直到判断任务已经完成。能够编辑和测试整个代码仓库的编程助手、能搜索并引用数十个来源的研究助手,以及通过截图和点击操作桌面的计算机使用智能体,都以这种方式工作。
AI 智能体的工作原理#
LLM 智能体在循环中运行。模型接收目标、已有对话内容和可用工具列表,然后要么给出最终答案,要么发出工具调用。外围程序称为智能体运行框架,它会检查操作是否获准、执行操作,并将结果作为新的观察追加到模型的上下文中。模型根据这些证据决定下一步。ReAct 提示确立了将书面推理与行动交替进行的模式;当前的推理模型则通过强化学习进行训练,以便在长串工具调用中按这种方式工作。
大多数智能体都结合了相同的四个构建模块。模型可以是通用 LLM,也可以是视觉语言模型,负责决定每一步操作。工具是由名称、用途和参数 JSON 架构描述的函数;模型上下文协议(MCP)让一个智能体能够连接其他团队发布的工具。记忆涵盖保存当前任务的上下文窗口,以及智能体用于搜索较早信息的文件、数据库或向量数据库;智能体技能则封装可复用指令,并仅在任务需要时加载。规划会将目标拆分为多个步骤,跟踪完成情况,并在某一步失败时修改计划。
AI 智能体与模型和工作流的比较#
根据 Anthropic 关于构建有效智能体的指南中广泛采用的定义,只有由 LLM 自主控制流程和工具使用的系统才称为“智能体”。
- AI 模型:模型将一个输入映射为一个输出,例如将图像映射为检测到的目标列表。智能体会调用模型(通常多次),并决定如何处理模型的输出。
- 智能体工作流:LLM 调用和工具会按照开发者预先设定的代码路径执行,例如先提取、再分类、最后总结。在智能体中,模型会自行决定任务需要多少步骤,以及每个步骤使用哪些工具。
- 聊天机器人:聊天机器人会逐条回复消息。智能体会在消息之间采取行动,并能在没有人参与的情况下工作数分钟或数小时。
- 多智能体系统:多个拥有独立角色和上下文的智能体在编排层的管理下协作完成一项任务,由编排层分配工作并合并结果。
AI 智能体的类型#
Russell 和 Norvig 提出的经典教材分类体系按照智能体对环境进行推理的程度对其排序:
- 简单反射智能体:根据当前输入和固定的条件—动作规则作出反应,例如恒温器或运动触发灯。
- 基于模型的反射智能体:维护内部状态,以跟踪当前无法观察到的部分环境信息,例如已经见过哪些人。
- 基于目标的智能体:搜索或规划能够实现既定目标的行动序列,例如路线规划器。
- 基于效用的智能体:根据效用分数在不同结果之间进行选择,权衡速度、成本和风险。
- 学习型智能体:通过经验(通常借助奖励)改进自身行为。
LLM 智能体属于基于目标的智能体,它们通过文本进行规划;通过工具使用任务上的强化学习训练的智能体也属于学习型智能体。
构建简单的视觉智能体#
基于摄像头的智能体通过检测模型感知环境,并通过代码采取行动。在这个基于模型的反射智能体中,Ultralytics YOLO26跟踪会为视频帧中的每个人分配一个持久 ID;智能体会保存已经采取过行动的 ID,因此每个人只会触发一次警报,而不是每帧触发一次:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
alerted = set() # The agent's memory of people it has already acted on
for frame, result in enumerate(model.track(video, stream=True, classes=[0])):
# Perceive: IDs of the people tracked in this frame
ids = set(result.boxes.id.int().tolist()) if result.boxes.is_track else set()
# Decide and act: alert once for each person not seen before
for track_id in sorted(ids - alerted):
print(f"Frame {frame}: person {track_id} entered, alert sent")
alerted |= ids打印出的日志会为每个新出现的人物各输出一行,这说明状态带来的差异:仅使用模型时,每帧都会再次报告所有人物。
实际应用#
- 智能体编程:编程智能体会读取代码仓库、编辑文件、运行测试,并针对失败反复迭代,直到修改通过测试。
- 研究与分析:研究代理会执行大量搜索、阅读资料并撰写附有引用的报告,通常会把问题拆分给多个子代理处理。
- 制造业:视觉检测代理将缺陷检测器与工厂系统结合起来;当缺陷集中出现时,它会暂停传送带、记录缺陷并创建维护工单。
- 具身智能:仓库和家用机器人通过摄像头感知环境,规划抓取动作或行进路线,并通过电机执行,每秒多次完成闭环控制。
可靠性与安全#
长任务中错误会不断累积,因为一个错误步骤可能使之后的每一步都偏离正轨,因此团队会使用代理评估基准和真实运行轨迹对代理进行端到端测量。能够读取网页、电子邮件或文件的代理可能遇到提示注入:内容中植入的指令试图引导代理偏离原定方向。因此,执行框架会限制每种工具的权限,在沙盒中运行代码,并在付款或删除等不可逆操作前征求人工确认。代理能力正在迅速提升:METR 发现,从 2019 年到 2025 年初,前沿代理能够以50% 的可靠性完成的软件任务长度大约每七个月翻一番。










