Agentic AI 概述
智能体系统的关键构成包括:
- 规划(Planning),即模型将复杂任务分解为可执行的子任务;
- 工具使用(Tool Usage),即通过函数调用或代码生成与外部世界交互以获取实时信息或执行计算;
- 反思(Reflection),即模型能够自我评估和批判性地修正其中间产出以提升最终质量;
- 多智能体协作(Multi-Agent Collaboration),即为不同子任务分配具有特定角色的智能体。
这种智能体范式的主要优势在于,它能够利用现有语言模型解决单一提示-响应模式下无法处理的复杂问题。通过检索增强生成(RAG)、迭代式调用和与外部工具的结合,智能体系统有效克服了传统语言模型的知识截止、幻觉和缺乏特定领域知识等局限性。要成功构建和应用智能体 AI,必须掌握扎实的提示工程最佳实践,并建立一套稳健的自动化评估体系,这对于系统迭代和优化至关重要。
语言模型(LM)基础
核心定义与训练
语言模型(LM)是一种机器学习模型,其根本任务是根据给定的输入文本预测下一个最可能出现的词。模型的性能源于其训练过程,该过程主要分为两个阶段:
- 预训练(Pre-training): 在此阶段,模型在来自互联网、书籍等海量公开文本语料库上进行训练。其核心目标是学习语言的统计规律,即“下一个词预测”。经过预训练后,模型具备了广泛的世界知识和生成流畅文本的能力。
- 后训练(Post-training): 预训练模型本身不易直接使用。后训练阶段旨在使模型更易用、更符合人类偏好。主要包括:
- 指令遵循训练(Instruction Following Training): 使用“指令-期望输出”格式的数据集对模型进行微调,使其能够理解并执行特定任务。
- 基于人类反馈的强化学习(RLHF): 利用人类对模型生成内容优劣的偏好数据,通过奖励机制来调整模型,使其输出更符合人类的价值观和期望。
应用与交互
经过充分训练的语言模型已广泛应用于日常工作和生活中,主要形式包括:
- AI 编码助手
- 特定领域的 AI 协作者(Co-pilots)
- 以 ChatGPT 为代表的对话式接口
与这些模型交互的主要方式有两种:
- 云端 API 调用: 通过向模型提供商的服务器发送 API 请求来获取模型生成的结果。这是最常见的应用集成方式。
- 本地托管: 将模型(通常是规模较小的模型)部署在本地机器甚至移动设备上,适用于对计算资源要求不高的场景。
高效语言模型使用的最佳实践
提示(Prompting)是指导语言模型生成期望输出的关键。以下是经过验证的最佳实践策略:
策略 | 描述 | 目的 |
---|---|---|
清晰具体的指令 | 提供详细、描述性的指令,而非简短模糊的请求。模型无法读取用户的思想,因此必须明确说明需求。 | 确保模型准确理解任务要求。 |
少样本示例 | 在提示中包含一两个输入和期望输出的范例(Few-shot Examples)。 | 引导模型遵循特定的输出风格或格式。 |
提供上下文与参考 | 在提示中提供相关的背景信息或参考资料,并要求模型仅基于这些信息作答。 | 减少事实性错误和“幻觉”(Hallucination),尤其适用于检索增强生成(RAG)。 |
给予模型“思考时间” | 要求模型先进行一步步的推理或阐述自己的解题思路,再给出最终答案,即“思维链”(Chain of Thought, CoT)。 | 提高模型在复杂推理任务上的准确性。 |
分解复杂任务 | 将一个包含多个步骤的复杂任务拆分成一系列简单的、连续的提示。 | 降低单次请求的复杂度,确保每个步骤的输出质量。 |
系统性追踪与日志 | 像传统软件工程一样,对模型的输入输出进行系统性的记录和追踪。 | 便于调试、审计和问题排查。 |
自动化评估 | 在开发早期就建立自动化评估流程,例如使用“问答对”的基准测试集,或利用一个语言模型作为“裁判”(LM as a Judge)来评估另一个模型的输出质量。 | 为模型选型、提示优化和系统迭代提供量化依据,尤其在模型快速更新换代时至关重要。 |
提示路由 | 开发一个前端模块(Prompt Router)来识别用户查询的意图,并将其分发给最合适的提示模板或语言模型。 | 优化成本和性能,为不同类型的任务匹配最适合的资源。 |
语言模型的局限性与解决方案
局限性
尽管语言模型功能强大,但它们仍存在一些固有的局限性:
- 幻觉(Hallucination): 模型可能生成看似合理但实际上不正确或无中生有的信息。
- 知识截止(Knowledge Cutoff): 模型的知识仅限于其预训练数据截止的日期,无法获取最新的信息。
- 缺乏归因(Lack of Attribution): 模型无法明确指出其生成信息的具体来源。
- 数据隐私(Data Privacy): 模型未在组织的专有或私有数据上进行训练。
- 上下文长度限制(Limited Context Length): 虽然不断增加,但输入上下文的长度总是有限的,且更长的上下文会带来更高的成本和延迟。
解决方案
为了应对这些挑战,社区发展出了有效的解决方案:
检索增强生成(Retrieval-Augmented Generation - RAG)
RAG 是一种将外部知识库与语言模型相结合的技术,能有效解决上述大部分局限性。
- 工作原理:
- 预处理与索引: 将组织的专有文档(如公司政策、产品手册)分割成小文本块(Chunks)。
- 嵌入与存储: 使用嵌入模型(Embedding Model)将每个文本块转换为向量,并存储在向量数据库中。
- 检索: 当用户查询到来时,同样将其转换为向量,并在数据库中进行相似性搜索,找出最相关的 K 个文本块。
- 增强生成: 将检索到的文本块作为上下文注入到提示中,要求语言模型仅基于此上下文回答问题。
- 优势:
- 通过提供事实依据,显著减少幻觉。
- 由于信息来源明确,天然地解决了归因问题。
- 允许模型利用私有和最新数据。
- 通过仅检索相关信息,高效利用了有限的上下文窗口。
工具使用与函数调用(Tool Usage and Function Calling)
该技术允许语言模型与外部世界进行交互,以获取实时信息或执行特定操作。
- 工作原理:
- 意图识别与格式化输出: 当用户提出需要外部信息(如“旧金山今天天气如何?”)的请求时,模型不会直接回答,而是生成一个结构化的、可被软件解析的输出(例如,一个函数调用
get_weather(location='San Francisco')
)。 - 外部执行: 围绕模型的软件框架解析这个输出,并实际执行相应的 API 调用(如调用天气 API)。
- 信息反馈与合成: 软件将从 API 获取的真实数据(如天气信息)反馈给语言模型。
- 生成自然语言响应: 语言模型基于返回的真实数据,生成一段对用户友好的、自然的回答。
- 意图识别与格式化输出: 当用户提出需要外部信息(如“旧金山今天天气如何?”)的请求时,模型不会直接回答,而是生成一个结构化的、可被软件解析的输出(例如,一个函数调用
- 扩展应用: 模型还可以生成可执行的代码(如 Python),由外部的沙箱环境(Sandbox)安全地执行,并将执行结果返回给模型用于后续的推理。
Agentic AI 介绍
Agentic AI 是上述解决方案的系统化集成,代表了语言模型用法的高级阶段。其核心特征是模型能够与环境交互、进行推理并采取行动。
核心定义:推理与行动
智能体系统可以被定义为一个结合了**推理(Reasoning)和行动(Action)**的循环。
- 推理: 利用思维链等技术,让模型思考和规划如何完成任务。
- 行动: 利用工具使用(API 调用、代码执行)和信息检索(RAG、网络搜索)等方法与外部世界交互。
智能体工作流
一个典型的智能体工作流如下:
- 规划(Plan): 接收到一个复杂任务后,智能体首先将其分解成一系列更小、更具体的步骤。
- 行动(Act): 针对每个步骤,智能体决定使用哪个工具来收集所需信息或执行操作(例如,调用 API 获取客户订单信息)。
- 观察与记忆(Observe & Memorize): 智能体接收并处理工具执行后的返回结果(观察),并将其存储在记忆中(如对话历史或临时存储)。
- 总结(Conclude): 在收集了所有必要信息后,智能体综合所有步骤的结果,得出最终结论或生成最终的答复。
示例:客户支持 AI 智能体
- 用户请求: “我能为产品 Foo 申请退款吗?”
- 智能体工作流:
- 规划: 将任务分解为:a) 检查退款政策;b) 查询客户订单信息;c) 检查产品状态;d) 做出决定。
- 行动: a) 通过 RAG 查询内部政策文档;b) 调用订单系统 API;c) 调用产品数据库 API。
- 观察与记忆: 整合政策、订单和产品信息。
- 总结: 根据收集到的信息,起草回复并可能触发后续的退款流程 API 调用。
Agentic AI 的设计模式
构建智能体系统时,可以采用以下几种核心设计模式:
模式 | 描述 | 应用示例 |
---|---|---|
规划(Planning) | 这是所有智能体系统的关键第一步。要求模型在行动前,先将复杂任务分解为一系列简单的子任务。 | 在执行研究任务前,先规划出需要搜索的关键词、要访问的网站和信息整合的步骤。 |
反思(Reflection) | 利用模型进行自我批判和改进。一次模型调用的输出可以作为下一次调用的输入,并附带批判性反馈,以迭代提升质量。 | 代码重构: 第一次调用模型,要求它“检查这段代码并提供建设性反馈”。第二次调用时,将原始代码和模型自己生成的反馈一起提供给它,并要求“根据这些反馈重构代码”。 |
工具使用(Tool Usage) | 智能体的核心能力之一,通过 API 调用或代码生成来与外部系统交互。 | 使用计算器工具进行精确计算,或调用天气 API 获取实时数据。 |
多智能体协作 | 将一个大型任务分解,并分配给多个具有不同角色和专长(通过不同提示或 Persona 定义)的智能体。这些智能体可以协同工作,共同完成目标。 | 智能家居自动化: 创建一个“气候控制智能体”、一个“灯光控制智能体”和一个“安防智能体”,由一个中央协调器统一管理,共同响应外部触发和用户命令。 |
关键问题
- 关于智能体评估: 传统的“LM 作为裁判”的方法可以升级为“智能体式评审”。例如,可以采用反思模式,让一个扮演“高级工程师”角色的 LM 来评审另一个扮演“初级工程师”的 LM 的评估结果,从而获得更可靠的评估质量。
- 关于如何入门: 建议从简单开始。首先在模型提供商的“Playground”环境中手动试验提示。熟悉后再通过简单的 API 调用进行编程交互。在充分理解模型行为后,再考虑引入复杂的智能体框架。
- 关于伦理与幻觉: 幻觉是模型的概率天性所致,难以完全根除。应用构建者应主动设立“护栏”(Guardrails),例如使用一个小型、快速的分类器模型来检查输入查询和模型输出,以过滤掉不安全或不适当的内容。
- 关于微调的数据量: 建议从少量样本(例如几十个)开始,测试模型是否展现出期望的行为。如果方向正确,再逐步增加数据量,并可以考虑使用语言模型自身来生成更多合成数据以扩充数据集。