LLM Agent 与应用#
本页内容9 个部分
查看概览图
从补全到自主开发,
差别在反馈闭环
Agent 以 LLM 为大脑,感知环境、制定计划、使用工具、执行动作并从反馈中调整——ReAct 是这个闭环最小的实现。
Function Calling / Tool Use
把工具描述成 JSON Schema 交给模型,模型输出结构化调用,运行时执行后把结果回灌进上下文。
检索增强生成
检索把外部知识塞进上下文,解决知识时效性和幻觉;难点在切分粒度、召回质量与重排。
推理能力增强
用推理时的额外计算换正确率:CoT、自洽性投票、搜索与验证器打分。
从 8b 拆出 · Agent / ReAct / Function Calling / RAG / 多 Agent / Test-Time Compute / AI Coding
1. Agent 基本概念#
LLM Agent 是以大语言模型为核心"大脑"的自主系统,能够感知环境、制定计划、使用工具、执行动作并从反馈中调整行为。
Agent 的核心组件
- Planning(规划):将复杂任务分解为子任务,制定执行计划。包括 Task Decomposition(任务分解)和 Self-Reflection(自我反思/纠错)
- Memory(记忆):短期记忆(in-context,即对话上下文)和 长期记忆(外部存储,如向量数据库,通过 RAG 检索)
- Tool Use(工具使用):调用外部 API、搜索引擎、代码执行器、数据库等扩展 LLM 的能力边界
- Action(执行):根据规划和工具返回结果执行具体操作
2. ReAct 框架#
**ReAct(Reasoning + Acting)**是最经典的 Agent 范式,交替进行"思考"和"行动":
Question: 2024年诺贝尔物理学奖得主是谁?他们的贡献是什么?
Thought 1: 我需要搜索2024年诺贝尔物理学奖的信息。
Action 1: Search["2024 Nobel Prize Physics"]
Observation 1: 2024年诺贝尔物理学奖授予 John Hopfield 和 Geoffrey Hinton...
Thought 2: 找到了获奖者信息,现在我需要总结他们的贡献。
Action 2: Finish["2024年诺贝尔物理学奖授予...用神经网络进行机器学习的基础性发现"]
ReAct 交替生成推理文本、调用工具并读取观察结果,便于检查行动和证据。可见推理文本不等于忠实的内部因果解释;检索也可能过时或错误,最终答案仍需对照工具返回的证据验证。
3. 工具调用(Function Calling / Tool Use)#
工具调用是 Agent 的核心能力。现代 LLM API 普遍支持结构化的 function calling:
工具调用流程
- 工具定义:以 JSON Schema 描述可用工具的名称、参数、功能
- 模型决策:LLM 根据用户请求决定是否需要调用工具、调用哪个工具、传什么参数
- 执行与返回:系统执行工具调用,将结果返回给 LLM
- 综合回答:LLM 综合工具返回结果生成最终回答
训练 Function Calling 的方式:在 SFT 数据中加入工具调用格式的样本(如 Gorilla、ToolLLM 数据集),让模型学会何时调用工具、如何构造参数、如何使用返回值。
4. RAG(检索增强生成)#
**RAG(Retrieval-Augmented Generation)**通过检索外部知识库,为 LLM 补充上下文证据,有助于降低部分事实错误;信息是否最新、相关且准确,取决于资料库、检索和答案生成各环节。
RAG 标准流程
- 索引阶段:文档分块(Chunking)→ Embedding 编码 → 存入向量数据库(FAISS / Milvus / Chroma)
- 检索阶段:Query Embedding → 向量相似度搜索(ANN)→ Top-K 文档召回
- 生成阶段:将检索到的文档拼接在 prompt 中 → LLM 基于上下文生成回答
4.1 RAG 常见问题#
- 分块策略:固定长度分块 vs 语义分块(按段落/章节)vs 递归分块。Chunk 太大导致噪声多、超出上下文窗口;太小导致语义不完整。常用 256~512 tokens,overlap 50~100 tokens
- Embedding 模型选择:BGE、E5、GTE 等开源模型,或 OpenAI text-embedding-3-small。可参考 MTEB,但最终应在目标语言、领域和查询分布上评估召回率、延迟与成本
- 重排序(Reranking):向量检索召回 Top-K 后,用 Cross-Encoder(如 BGE-Reranker)对 query-document 对精排,显著提升准确率
- RAG vs 长上下文:Gemini 1.5 支持 1M tokens 上下文,是否 RAG 还有必要?要按任务比较:小型资料集可直接放入上下文;大型或频繁更新的语料通常更适合检索。长上下文存在位置敏感和成本问题,检索则可能漏掉证据,两者也可结合
5. 多 Agent 协作系统#
单个 Agent 能力有限,多 Agent 系统通过分工协作解决更复杂的任务。
| 框架/方法 | 核心思路 | 典型应用 |
|---|---|---|
| AutoGen | 多 Agent 对话框架,Agent 之间通过消息传递协作 | 代码生成(Coder + Reviewer + Executor) |
| CrewAI | 基于角色的 Agent 团队,每个 Agent 有明确职责和工具 | 研究报告撰写、市场分析 |
| LangGraph | 基于图的 Agent 工作流,支持条件分支和循环 | 复杂的多步骤决策流程 |
| MCP(Model Context Protocol) | Anthropic 提出的标准化协议,统一 LLM 与外部工具/数据源的连接方式 | 工具集成标准化、跨平台 Agent |
6. 推理能力增强(Test-Time Compute)#
2024-2025 年的核心趋势:通过在推理时投入更多计算来提升模型能力,而非仅靠更大的训练预算。
关键方法
- Chain-of-Thought (CoT):让模型"逐步思考",在输出答案前展示推理过程。通过提示词"Let's think step by step"或在训练数据中加入推理链
- Self-Consistency:采样多条推理路径,选择多数一致的答案(多数投票),显著提升数学和逻辑推理准确率
- Tree-of-Thought (ToT):将推理过程建模为树搜索,每一步探索多个可能分支,用 LLM 评估并剪枝
- Thinking / Extended Thinking:如 DeepSeek-R1、OpenAI o1/o3——模型在回答前进行长链内部推理。公开的 DeepSeek-R1 报告使用 GRPO 等训练步骤;不能由此推断所有闭源推理模型采用同一算法
**区分 R1-Zero 与 R1:**R1-Zero 从预训练基座直接进行推理 RL,没有先做冷启动 SFT;R1 则先使用冷启动数据 SFT,再做推理 RL、拒绝采样与混合数据 SFT,最后做覆盖更多场景的 RL。“纯 RL”描述的是 R1-Zero 的这一后训练阶段,不表示基座不需要预训练或整个系统不含人为设计。
7. AI Coding 的使用方式与提效#
AI Coding 工具是 LLM Agent 在软件工程领域的核心落地场景,已经从"辅助补全"演进到"自主开发":
7.1 AI Coding 的三个阶段#
| 阶段 | 代表工具 | 交互模式 | 自主程度 |
|---|---|---|---|
| 代码补全 | GitHub Copilot(早期)、TabNine | Tab 键接受/拒绝补全建议 | 低:只预测当前行/块 |
| 对话式编程 | ChatGPT、Claude Chat | 自然语言描述需求 → 模型生成代码片段 | 中:可以生成函数/类级别代码 |
| Agent 式自主开发 | Claude Code、Cursor Agent、Devin | 描述目标 → Agent 自主读取代码库、编辑文件、运行测试、迭代修复 | 高:可以完成跨文件、多步骤任务 |
7.2 生成代码不符预期时的提效方法#
四种策略让 AI Coding 输出更准确
-
更精确的上下文:不要只给"帮我写一个 API"——提供类型定义(TypeScript 接口、Pydantic Model)、接口文档(API 签名、参数说明)、已有的测试用例。上下文越明确,模型越少猜测
# 差: "写一个用户注册函数" # 好: "基于以下 Pydantic model 写一个用户注册函数, # 使用 bcrypt 哈希密码,返回 JWT token: # class UserCreate(BaseModel): # email: str # password: str # min 8 chars" -
分步拆解:把复杂需求拆成小步骤,逐步生成和验证。"先写数据模型 → 再写 CRUD → 最后写路由"比"帮我写一个完整的用户管理系统"效果好得多
-
示例驱动:给出具体的输入输出示例,比抽象描述更有效
# 示例驱动提示 # 输入:["hello", "world", "hello"] # 输出:{"hello": 2, "world": 1} # 请写一个函数实现上述功能 -
迭代修正:指出具体错误而非让模型"重新生成"。"第 15 行的 sort 应该是降序,且需要处理空列表的边界情况"比"这段代码有 bug,重写"能得到更精准的修复
**面试关键点:**AI Coding 的核心提效不在于"让 AI 写完所有代码",而在于人机协作模式——人负责需求拆解、架构决策、边界条件思考,AI 负责模式化代码生成、文档查阅、重构优化。理解这种协作模式在面试中能展示工程成熟度。
8. 综合理解检查 速查#
Q RAG 中 Chunk 大小怎么选?Reranking 有什么用?
Chunk 大小:太大→噪声多、超上下文窗口;太小→语义不完整。常用 256~512 tokens,overlap 50~100 tokens。最佳实践:先按语义边界(段落/章节)分割,再控制长度。
Reranking:向量检索(双编码器)速度快但精度有限,召回 Top-K 后用 Cross-Encoder 对 (query, doc) 对精排,显著提升最终准确率,代价是 次 encoder forward。
一句话:向量检索负责召回,Reranker 负责精排,两阶段各司其职。
LLM Agent 与应用 · 从 8b 拆出 · 深度学习面试笔记
MCP 是工具和数据连接协议,不是多 Agent 调度算法;是否使用多 Agent 还要看任务拆分、通信开销和独立验证的收益。
原始资料:ReAct、RAG、DeepSeek-R1 技术报告。
延伸阅读#
- LLM 结构化输出:怎样让生成结果满足接口要求的结构?