智能体
智能体 (Agent) 是以大语言模型为核心推理引擎,具备感知环境、自主决策和执行行动能力的 AI 系统。与直接使用 LLM 对话不同,智能体能主动规划任务、调用外部工具、检索知识库、管理上下文记忆——它把 LLM 从"被动回答"升级为"主动做事"。
ReAct 架构
ReAct (Reasoning + Acting) 是智能体最经典的运行框架。它让 LLM 在"思考"和"行动"之间交替循环:
思考 (Thought)
LLM 分析当前状态和目标,决定下一步应该做什么。例如:“用户问的是最新论文,我需要先搜索数据库。”
行动 (Action)
执行具体操作——调用搜索工具、读取文件、执行代码或查询数据库。
观察 (Observation)
获取行动的返回结果,将其作为新的上下文输入。
循环
根据观察结果决定是否需要继续(回到"思考"),或者信息已经足够可以输出最终结果。
ReAct 的核心价值在于可控性和可追溯性——每一步的推理过程都是可见的,出了问题可以定位到具体哪一步的思考或行动出了差错。
子智能体与多智能体协作
当任务复杂到单个智能体难以独立完成时,可以将任务分解给多个子智能体 (Sub-Agent),每个子智能体专注于一个特定子任务。
子智能体的关键设计要素:
- 每个子智能体有单一、明确的职责(如"文献检索"“数据清洗"“代码生成”)
- 由一个主智能体(编排器 / Orchestrator)负责任务分解和调度
- 子智能体之间通过结构化消息传递结果
多智能体协作进一步将多个自主智能体组织成协作系统。常见的协作模式:
| 模式 | 说明 | 优先级 |
|---|---|---|
| 主从式 (Orchestrator) | 一个主智能体分配任务,多个子智能体执行 | ⭐⭐⭐⭐⭐ |
| 流水线式 (Pipeline) | 智能体按顺序处理,上一个的输出是下一个的输入 | ⭐⭐⭐⭐ |
| 辩论式 (Debate) | 多个智能体对同一问题给出不同观点,通过讨论达成结论 | ⭐⭐⭐ |
| 投票式 (Voting) | 多个智能体独立给出答案,汇总投票决定最终结果 | ⭐⭐⭐ |
多智能体框架(如 AutoGen、CrewAI、LangGraph)降低了构建多智能体系统的工程门槛,使得研究者可以快速搭建和实验。
提示词工程 (Prompt Engineering)
提示词工程是设计和优化输入提示以引导 LLM 产生期望输出的技术。它是投入产出比最高的技能——不需要训练模型、不需要写代码,只需要学会"如何问问题"就能显著提升模型表现。
核心技巧:
| 技巧 | 说明 | 优先级 |
|---|---|---|
| 角色设定 (System Prompt) | 为模型设定身份和行为规范,如"你是一位模糊数学专家” | ⭐⭐⭐⭐⭐ |
| 少样本 (Few-shot) | 在提示中提供几个输入-输出示例,让模型"模仿" | ⭐⭐⭐⭐⭐ |
| 思维链 (CoT) | 引导模型逐步推理,详见大语言模型页面 | ⭐⭐⭐⭐⭐ |
| 结构化输出 | 要求模型以 JSON、Markdown 表格等结构化格式输出 | ⭐⭐⭐⭐ |
| 约束与限定 | 明确告诉模型不要做什么、输出长度限制等 | ⭐⭐⭐⭐ |
| 分步指令 | 将复杂任务拆解为编号步骤,逐步引导 | ⭐⭐⭐⭐ |
好的提示词通常具备:清晰的任务描述、足够的上下文、明确的输出格式要求、以及适当的示例。
知识库 (Knowledge Base)
LLM 的知识截止于训练数据的时间点,且可能产生幻觉。知识库为智能体提供外部的、可验证的知识来源。
RAG (Retrieval-Augmented Generation) 是最主流的知识增强方案,其流程为:
- 知识预处理:将文档切分为合适大小的块 (Chunk),用嵌入模型转为向量,存入向量数据库
- 检索:用户提问时,将问题转为向量,在向量数据库中检索最相关的文档块
- 增强生成:将检索到的文档块作为上下文注入 LLM 提示词,LLM 基于这些事实依据生成回答
RAG 是解决 LLM 幻觉问题的主流方案——模型的回答有据可查,用户也可以验证来源。
| 知识库技术 | 说明 | 优先级 |
|---|---|---|
| 向量数据库 | 存储和检索文本嵌入向量(如 Chroma、Milvus) | ⭐⭐⭐⭐⭐ |
| 文档分块策略 | 如何将长文档切分为适合检索的块 | ⭐⭐⭐⭐ |
| 嵌入模型 | 将文本转为语义向量表示 | ⭐⭐⭐⭐ |
| 重排序 (Rerank) | 对初步检索结果进行精细排序 | ⭐⭐⭐ |
工具 (Tools)
工具调用使智能体能与外部系统交互,突破 LLM"只能生成文本"的限制。
LLM 通过函数调用 (Function Calling) 机制描述它需要调用的工具和参数,由外部系统实际执行并返回结果。常见的工具类型:
| 工具类型 | 示例 | 优先级 |
|---|---|---|
| 搜索引擎 | 查询最新信息、论文检索 | ⭐⭐⭐⭐⭐ |
| 代码执行 | 运行 Python 代码进行数据分析、绘图 | ⭐⭐⭐⭐⭐ |
| 文件操作 | 读写文件、创建文档 | ⭐⭐⭐⭐ |
| API 调用 | 调用外部服务(数据库、天气、翻译等) | ⭐⭐⭐⭐ |
| 子智能体 | 将子任务委托给专门的子智能体 | ⭐⭐⭐ |
工具的质量和可用性直接影响智能体的实际能力边界——拥有合适的工具,智能体可以从"对话机器人"升级为"任务完成系统"。
记忆 (Memory)
LLM 本身是无状态的——每次调用都是独立的,它不记得之前的对话。记忆系统让智能体能维护上下文、积累经验。
| 记忆类型 | 说明 | 实现方式 | 优先级 |
|---|---|---|---|
| 短期记忆 | 当前对话的上下文 | 对话历史直接放入提示词 | ⭐⭐⭐⭐⭐ |
| 工作记忆 | 当前任务的中间状态和临时笔记 | 结构化存储 + 动态注入 | ⭐⭐⭐⭐ |
| 长期记忆 | 跨对话持久化的用户偏好、历史知识 | 向量数据库 / 文件存储 | ⭐⭐⭐ |
| 情景记忆 | 对过去成功/失败经验的回忆 | 经验日志 + 检索 | ⭐⭐ |
记忆管理的核心挑战是容量限制——LLM 的上下文窗口有限(几千到几十万 token),不可能把所有历史信息都放进去。因此需要设计策略来决定哪些信息保留、哪些压缩、哪些存入长期记忆。
技能 (Skills)
技能是封装好的、可复用的能力模块。与工具不同,技能是更高层次的抽象——一个技能可能包含特定的提示词模板、工作流程以及需要调用的工具组合。
例如,“论文摘要分析"技能可能包含:特定的系统提示词(角色设定为学术助手)、结构化的分析流程(先提取方法 → 再总结贡献 → 最后评价局限)、以及配套的工具(PDF 解析、搜索引擎)。
技能的价值在于知识封装和一致性保障——将领域专家的工作流程和最佳实践编码为可复用的模块,确保每次执行遵循相同的高质量流程。