为分类任务微调表示模型
深入讲解为分类任务微调表示模型的完整流程:分类头设计、全量微调 vs LoRA 的选择、小样本场景下的 SetFit 方案,以及过拟合防范与模型评估。
系统梳理 AI Agent 核心概念:从定义与组件、ReAct/CoT/ToT 等推理框架、Memory 与 Tool Use 设计,到多智能体协作、安全对齐与框架选型,覆盖面试高频考点。
本文系统梳理 AI Agent 领域的核心概念与面试高频考点,涵盖定义与组件、推理框架、记忆系统、工具调用、多智能体协作等方向。
AI Agent(智能体) 是一个以大语言模型(LLM)为核心推理引擎的自主系统,能够感知环境、制定计划、调用工具并采取行动来完成用户指定的目标。与传统的"一问一答"式 LLM 调用不同,Agent 具有自主决策和多步执行的能力。
用一句话概括:
Agent = LLM + Memory + Planning + Tool Use + Action
| 组件 | 职责 | 典型实现 |
|---|---|---|
| LLM(大脑) | 核心推理与决策引擎 | GPT-4、Claude、LLaMA |
| Planning(规划) | 任务分解与策略制定 | CoT、ToT、ReAct |
| Memory(记忆) | 存储历史交互与知识 | 对话历史、向量数据库 |
| Tool Use(工具) | 与外部系统交互 | API 调用、代码执行、搜索 |
| Action(执行) | 将决策转化为实际操作 | 函数调用、环境交互 |
用户输入 → LLM 理解意图 → 规划步骤 → 选择工具 → 执行动作
↑ ↓
└──────────── 观察结果 / 更新记忆 ←────────────┘
Agent 的关键特征是循环执行:它不是一次性给出答案,而是在 "思考 → 行动 → 观察" 的循环中逐步逼近目标。
ReAct 是最经典的 Agent 框架之一,由 Yao et al. (2022) 提出。其核心思想是将思维链(Reasoning)和行动(Acting)交替进行。
Thought: 我需要查找关于 X 的信息
Action: search("X 的定义")
Observation: X 是指...
Thought: 现在我知道了 X 的定义,接下来需要...
Action: lookup("X 的应用场景")
Observation: X 常用于...
Thought: 我已经有足够的信息来回答问题了
Action: finish("最终答案...")
Plan-and-Solve(Wang et al., 2023)是对 Zero-shot CoT 的改进,分为两个阶段:
让 LLM 先制定一个完整的解题计划,把复杂任务分解为子任务序列。
Prompt: "Let's first understand the problem and devise a plan to solve it.
Then, let's carry out the plan and solve the problem step by step."
按照计划逐步执行每个子任务。
在 Plan-and-Solve 基础上增加了更细粒度的指令:
| 维度 | ReAct | Plan-and-Solve |
|---|---|---|
| 规划方式 | 边想边做,动态规划 | 先全局规划,再执行 |
| 适用场景 | 需要外部工具的交互任务 | 复杂推理和数学问题 |
| 灵活性 | 高(可随时调整) | 中(计划制定后较固定) |
Reflection 机制让 Agent 具备自我评估和纠错的能力。代表工作包括 Reflexion(Shinn et al., 2023)。
执行任务 → 获得结果 → 自我评估 → 生成反思 → 存入记忆 → 重新尝试
第一次尝试:直接编写代码 → 测试失败
反思:"我忽略了边界条件的处理"
第二次尝试:加入边界条件检查 → 测试通过
Reflection 的价值在于将"试错经验"转化为可复用的知识,本质上是一种基于语言的强化学习。
CoT(Wei et al., 2022)是最基础的推理增强方法。
通过在 Prompt 中提供逐步推理的示例,引导 LLM 展示中间推理步骤,而非直接输出答案。
CoT 是线性的思维过程,一条路走到黑,无法回溯或探索多条路径。
ToT(Yao et al., 2023)将 CoT 从线性扩展为树状搜索。
问题
/ | \
思路A 思路B 思路C
/ \ | \
A1 A2 B1 C1
↓ ↓
评估 评估
↓ ↓
继续探索 剪枝放弃
需要探索和回溯的任务:创意写作、数学证明、策略规划等。
GoT(Besta et al., 2023)进一步将思维结构从树扩展为有向图。
思路A ──→ 思路B
↓ ↓
└──→ 合并节点 ←──┘
↓
最终方案
| 方法 | 结构 | 搜索方式 | 复杂度 | 适用场景 |
|---|---|---|---|---|
| CoT | 线性链 | 无搜索 | 低 | 简单推理 |
| ToT | 树 | BFS/DFS | 中 | 需要探索的推理 |
| GoT | 有向图 | 图搜索 | 高 | 需要融合多路径的复杂推理 |
短期记忆对应 LLM 的上下文窗口(Context Window),存储当前对话中的信息。
长期记忆是持久化存储的知识库,跨越单次对话,供 Agent 在后续任务中检索和使用。
| 技术 | 适用场景 | 代表工具 |
|---|---|---|
| 向量数据库 | 语义检索 | Pinecone、Milvus、Chroma |
| 键值存储 | 精确查找 | Redis |
| 知识图谱 | 关系推理 | Neo4j |
| 关系数据库 | 结构化查询 | PostgreSQL |
以 OpenAI 的 Function Calling 为例:
Step 1:定义工具
{
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "城市名" }
},
"required": ["city"]
}
}
Step 2:LLM 决策
LLM 收到用户消息和工具定义后,判断是否需要调用工具。如果需要,输出结构化的调用请求:
{
"function_call": {
"name": "get_weather",
"arguments": "{\"city\": \"北京\"}"
}
}
Step 3:执行与返回
应用层执行实际的 API 调用,将结果返回给 LLM,LLM 整合结果生成最终回答。
Function Calling 本质上是让 LLM 学会了一种结构化输出能力:
| 类型 | 示例 |
|---|---|
| 信息检索 | 搜索引擎、数据库查询、知识库检索 |
| 代码执行 | Python 解释器、Shell 命令 |
| API 调用 | 天气 API、地图 API、支付 API |
| 文件操作 | 读写文件、解析 PDF/Excel |
| 通信工具 | 发送邮件、Slack 消息 |
通用的 LLM 应用开发框架,提供构建各类 LLM 应用的组件和工具链。
专注于数据索引和检索的框架,核心目标是让 LLM 高效地与自定义数据交互。
| 维度 | LangChain | LlamaIndex |
|---|---|---|
| 核心定位 | 通用 LLM 应用框架 | 数据索引与检索框架 |
| 强项 | Agent、Chain 编排、工具调用 | 数据连接、索引构建、检索优化 |
| 适用场景 | 复杂 Agent、多步工作流 | RAG、知识库、文档问答 |
| 灵活性 | 高,组件可自由组合 | 中,聚焦检索场景 |
| 学习曲线 | 较陡(抽象层多) | 较平缓 |
用户输入
↓
┌─────────────────────────┐
│ 短期记忆 │ ← 当前对话上下文
│ (Context Window) │
│ ┌─────────────────┐ │
│ │ 系统 Prompt │ │
│ │ 检索到的长期记忆 │ ←─── 从长期记忆中检索
│ │ 最近对话历史 │ │
│ │ 当前用户输入 │ │
│ └─────────────────┘ │
└─────────────────────────┘
↓
LLM 推理
↓
┌─────────────────────────┐
│ 长期记忆 │ ← 持久化存储
│ ┌──────────┐ │
│ │ 向量数据库 │ 语义检索 │
│ │ 知识图谱 │ 关系推理 │
│ │ KV 存储 │ 精确查找 │
│ └──────────┘ │
└─────────────────────────┘
相关性 × 时效性 × 重要性 加权检索多智能体系统是由多个 LLM Agent 组成的协作系统,每个 Agent 具有特定的角色、能力和职责,通过通信和协调共同完成复杂任务。
| 优势 | 说明 |
|---|---|
| 专业化分工 | 每个 Agent 专注于特定领域,提升单项能力 |
| 并行处理 | 多个 Agent 可同时处理不同子任务 |
| 鲁棒性 | 单个 Agent 失败不影响整体 |
| 涌现能力 | Agent 间交互可能产生超越个体的能力 |
| 可扩展性 | 易于通过添加新 Agent 扩展系统能力 |
Agent A ←→ 协调者 ←→ Agent B
↕
Agent C
Agent A ←→ Agent B
↕ ↕
Agent C ←→ Agent D
管理 Agent
/ | \
组长A 组长B 组长C
/ \ | / \
a1 a2 b1 c1 c2
所有 Agent 共享一个"黑板",在上面发布和读取信息。
| 策略 | 描述 | 适用场景 |
|---|---|---|
| 顺序传递 | Agent 按固定顺序执行 | 流水线式任务 |
| 讨论投票 | 多个 Agent 讨论后投票决定 | 需要共识的决策 |
| 竞争选优 | 多个 Agent 各自完成,选最优 | 创意生成 |
| 角色分工 | 按角色分配不同子任务 | 复杂项目 |
| 辩论机制 | Agent 互相质疑和改进 | 提升推理质量 |
| 维度 | 软件 Agent | 环境 Agent(机器人/游戏) |
|---|---|---|
| 感知 | 文本/API 数据 | 视觉、触觉、声音等多模态 |
| 行动 | API 调用、文本生成 | 物理运动、环境交互 |
| 反馈 | 即时、确定性 | 延迟、噪声、不确定性 |
| 安全性 | 软错误为主 | 物理安全风险 |
| 实时性 | 通常可接受延迟 | 严格实时要求 |
| 状态空间 | 离散、有限 | 连续、无限 |
| 框架 | 特点 | 适用场景 |
|---|---|---|
| LangChain/LangGraph | 生态丰富,组件化 | 通用 Agent 开发 |
| AutoGen | 多 Agent 对话 | 多 Agent 协作 |
| CrewAI | 角色驱动 | 团队协作模拟 |
| Semantic Kernel | 微软出品,企业级 | .NET/Java 生态 |
| Dify | 低代码可视化 | 快速原型 |
使用强大的 LLM(如 GPT-4)生成训练数据:
1. 生成多样的用户意图
2. 对每个意图,生成合理的工具调用序列
3. 模拟工具返回结果
4. 生成最终回答
5. 人工审核和过滤
| 策略 | 说明 |
|---|---|
| SFT | 有监督微调,学习 "问题→工具调用→回答" 的模式 |
| DPO | 直接偏好优化,让模型偏好正确的工具调用方式 |
| RLHF | 基于人类反馈强化学习,优化端到端表现 |
| Tool-augmented Training | 在预训练阶段就引入工具调用的数据 |
RELATED