应用与 Agent / 工具调用与 Agent 阅读导览入门 6 分钟阅读 查看源文件 ↗

LLM Agent 与应用#

本页内容9 个部分
查看概览图
FOUNDATIONS · 08c

从补全到自主开发,
差别在反馈闭环

Agent 以 LLM 为大脑,感知环境、制定计划、使用工具、执行动作并从反馈中调整——ReAct 是这个闭环最小的实现。

THOUGHT 推理 分析当前状态
ACTION 调用工具 Function Calling
OBSERVATION 读取结果 环境返回
LOOP 再推理 直到目标达成
ReAct:把「想」和「做」交替进行,让模型能根据真实反馈修正计划
①工具调用

Function Calling / Tool Use

把工具描述成 JSON Schema 交给模型,模型输出结构化调用,运行时执行后把结果回灌进上下文。

②RAG

检索增强生成

检索把外部知识塞进上下文,解决知识时效性和幻觉;难点在切分粒度、召回质量与重排。

③Test-Time Compute

推理能力增强

用推理时的额外计算换正确率:CoT、自洽性投票、搜索与验证器打分。

框架 / 方法核心思路典型应用
AutoGen多 Agent 对话框架,Agent 之间通过消息传递协作代码生成(Coder + Reviewer + Executor)
CrewAI基于角色的 Agent 团队,每个 Agent 有明确职责和工具研究报告撰写、市场分析
LangGraph基于图的 Agent 工作流,支持条件分支和循环复杂的多步骤决策流程
MCPAnthropic 提出的标准化协议,统一 LLM 与外部工具 / 数据源的连接方式工具集成标准化、跨平台 Agent
阶段代表工具交互模式自主程度
代码补全GitHub Copilot(早期)· TabNineTab 键接受 / 拒绝补全建议低:只预测当前行 / 块
对话式编程ChatGPT · Claude Chat自然语言描述需求 → 生成代码片段中:函数 / 类级别
Agent 式自主开发Claude Code · Cursor Agent · Devin描述目标 → 自主读代码库、编辑文件、跑测试、迭代修复高:跨文件、多步骤
Thought → Action → ObservationMCP 统一工具接入自主程度决定工具形态

从 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:

工具调用流程

  1. 工具定义:以 JSON Schema 描述可用工具的名称、参数、功能
  2. 模型决策:LLM 根据用户请求决定是否需要调用工具、调用哪个工具、传什么参数
  3. 执行与返回:系统执行工具调用,将结果返回给 LLM
  4. 综合回答:LLM 综合工具返回结果生成最终回答

训练 Function Calling 的方式:在 SFT 数据中加入工具调用格式的样本(如 Gorilla、ToolLLM 数据集),让模型学会何时调用工具、如何构造参数、如何使用返回值。

4. RAG(检索增强生成)#

**RAG(Retrieval-Augmented Generation)**通过检索外部知识库,为 LLM 补充上下文证据,有助于降低部分事实错误;信息是否最新、相关且准确,取决于资料库、检索和答案生成各环节。

RAG 标准流程

  1. 索引阶段:文档分块(Chunking)→ Embedding 编码 → 存入向量数据库(FAISS / Milvus / Chroma)
  2. 检索阶段:Query Embedding → 向量相似度搜索(ANN)→ Top-K 文档召回
  3. 生成阶段:将检索到的文档拼接在 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 输出更准确

  1. 更精确的上下文:不要只给"帮我写一个 API"——提供类型定义(TypeScript 接口、Pydantic Model)、接口文档(API 签名、参数说明)、已有的测试用例。上下文越明确,模型越少猜测

    # 差: "写一个用户注册函数"
    # 好: "基于以下 Pydantic model 写一个用户注册函数,
    #      使用 bcrypt 哈希密码,返回 JWT token:
    #      class UserCreate(BaseModel):
    #          email: str
    #          password: str  # min 8 chars"
    
  2. 分步拆解:把复杂需求拆成小步骤,逐步生成和验证。"先写数据模型 → 再写 CRUD → 最后写路由"比"帮我写一个完整的用户管理系统"效果好得多

  3. 示例驱动:给出具体的输入输出示例,比抽象描述更有效

    # 示例驱动提示
    # 输入:["hello", "world", "hello"]
    # 输出:{"hello": 2, "world": 1}
    # 请写一个函数实现上述功能
    
  4. 迭代修正:指出具体错误而非让模型"重新生成"。"第 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) 对精排,显著提升最终准确率,代价是 O(K)O(K) 次 encoder forward。
一句话:向量检索负责召回,Reranker 负责精排,两阶段各司其职。

LLM Agent 与应用 · 从 8b 拆出 · 深度学习面试笔记

MCP 是工具和数据连接协议,不是多 Agent 调度算法;是否使用多 Agent 还要看任务拆分、通信开销和独立验证的收益。

原始资料:ReAct、RAG、DeepSeek-R1 技术报告。

延伸阅读#