全栈 AI Agent 核心技术栈

本文是 AI 岗位知识库 Part B 的第二篇。原理与动手向深度内容见站内 从零开始构建智能体。上一篇:岗位画像与技能地图。


1. LLM API 基础:必须吃透的六个概念

概念要点工程含义
Token模型的输入输出单位,约等于 0.5–0.75 个英文单词 / 0.5–1 个汉字(随分词器浮动)计费、限流、上下文预算都按 token 算
上下文窗口模型一次能「看到」的最大 token 数窗口 ≠ 记忆:塞太满会稀释注意力、涨成本;「大海捞针」能力在中长段表现会衰减
Temperature / Top-p控制采样随机性抽取/分类/工具调用调低(趋近确定),创意生成调高
流式输出(Streaming)token 逐段返回(SSE)前端体验的分水岭;也是超时管理的关键
结构化输出JSON Schema / 函数签名约束输出下游程序能可靠解析的前提;要做 schema 校验与失败重试
System Prompt设定角色、规则、边界是护栏的第一道防线,但不是安全边界——用户不可见内容也可能被诱导泄漏

一份钱的两种算法:按输入/输出 token 计价(API),或自建推理按 GPU 时间计价(开源模型 + vLLM 等)。选型时把「单任务 token 量 × 单价 × 日调用量」算成月度成本表,再谈技术方案。


2. Prompt 工程与上下文工程

2.1 Prompt 工程的稳定招法

  1. 角色 + 任务 + 约束 + 输出格式四段式,规则写成可判定的条目
  2. Few-shot:给 2–5 个覆盖边界情况的示例,比长篇描述有效
  3. 思维链(CoT):让模型先列步骤再作答,对推理类任务有效;注意先推理后结论(结论在前会「锚定」后续推理)
  4. 拆任务:一个 prompt 只做一件事,用代码编排多次调用,比万能大 prompt 可控
  5. 迭代靠评测:每次改动跑评测集——「感觉变好了」不算数

2.2 上下文工程(Context Engineering)

Agent 时代 prompt 工程升级为上下文工程:在有限窗口里,为当前这一步装入最相关的信息。

  • 检索进上下文:RAG 的本质是把「记住」换成「现查」
  • 工具结果管理:大结果落盘存引用,上下文里留摘要 + 指针
  • 历史压缩:长对话做摘要滚动,关键事实抽成结构化记忆
  • 隔离:子 Agent 用干净上下文处理子任务,只把结论带回主线程(同时避免「上下文腐烂」——旧错误信息持续污染决策)

2.3 失败模式清单

指令被忽略、幻觉、上下文超限截断、格式漂移、多轮累积偏差。对策:约束解码/schema 校验、关键信息重复强调、超限预检、每步输出校验。


3. 工具调用(Function Calling)

工具调用是 Agent 与 RAG 的分界线:模型不仅能「说」,还能「做」。

sequenceDiagram
  participant U as 应用
  participant M as LLM
  participant T as 工具(函数/API)
  U->>M: 问题 + 工具清单(name/description/JSON Schema)
  M-->>U: 决定调用 getWeather(city="杭州")
  U->>T: 执行真实函数
  T-->>U: 返回结果
  U->>M: 结果回填上下文
  M-->>U: 生成最终回答

工程要点:

  • 工具描述是给模型看的接口文档:写清何时用、参数含义、失败时的表现;模糊的描述是调用错误的头号原因
  • 参数校验在应用层:schema 校验 + 白名单 + 越权检查,绝不直接信任模型生成的参数去执行写操作
  • 错误回喂:工具失败把错误信息返回给模型,让它重试、换路或求助,而不是直接崩
  • 只读优先:新场景先给只读工具,稳定后再逐步放开写权限

4. RAG:检索增强生成

企业场景第一大利器,完整实战见 FDE 的 AI 落地技术栈 §2。全栈工程师视角的要点:

flowchart LR
  DOC["文档解析"] --> CH["分块"] --> E["Embedding"] --> V["向量库"]
  Q["查询"] --> QR["查询改写"] --> S["混合检索<br/>向量+BM25"] --> R["Rerank"] --> C["上下文组装"] --> G["生成+引用"]
  V --> S
  • Embedding:把文本映射为向量,语义相近则距离近。选型看语言支持、维度、效果榜单;换 embedding 模型 = 全库重建索引,要提前规划版本管理
  • 向量库:PGVector(够用、好运维)、专用向量库(Milvus、Qdrant、Pinecone 等)、或 ES/Redis 的向量插件;选型先看数据规模与过滤需求,多数场景千万级以内 PGVector 足够
  • 混合检索是默认起点:向量管语义,BM25 管关键词/编号/专有名词,取长补短
  • 重排(Rerank):粗召回 top-50 → cross-encoder 精排 top-5,性价比最高的质量提升手段之一
  • 权限过滤在检索层:元数据 ACL + 以用户身份过滤,见 权限感知 RAG

进阶方向:查询改写与 HyDE、GraphRAG(知识图谱辅助检索)、Contextual Retrieval(入库时为每个块生成上下文前缀)。


5. Agent 架构:循环、记忆与边界

5.1 Agent 循环(ReAct 为骨架)

flowchart LR
  T["任务"] --> R["Reason<br/>推理下一步"] --> A["Act<br/>调用工具"] --> O["Observation<br/>观察结果"]
  O --> R
  R -->|完成| F["最终答案"]
  R -->|超过步数上限| STOP["强制终止/求助"]

Agent = LLM(大脑)+ 工具(手脚)+ 记忆(状态)+ 循环控制(边界)。循环控制常被新手忽略,却是生产与 Demo 的分界:最大步数、单步超时、预算上限、危险动作熔断。

5.2 记忆分层

层载体例子
工作记忆当前上下文窗口本轮对话 + 工具结果
情景记忆会话历史存储跨轮对话记录、摘要滚动
语义记忆向量库/结构化存储用户偏好、事实卡
程序记忆Prompt/技能库可复用的 SOP、技能描述

5.3 Agent vs 工作流 vs 单次调用

单次调用工作流(代码编排)Agent(模型自主规划)
路径固定预定义分支运行时决定
延迟/成本低中高
可控性高高中,需要护栏
适用翻译/摘要/分类固定 SOP 自动化开放任务、需组合能力

默认从左往右选,能用左边的不用右边的。

5.4 多 Agent 编排

先证明单 Agent 不够再上多 Agent。常见拓扑:

  • 主从式:orchestrator 拆解任务,worker 各司其职,汇总产出(最常用)
  • 流水线式:按阶段接力(如:检索 → 起草 → 审校)
  • 辩论/评审式:多个 Agent 互查,提升可靠性(成本高)

配套协议:MCP(统一模型↔工具/数据源连接,Anthropic 开源,生态成长最快)、A2A(跨 Agent 互操作方向)。

5.5 框架怎么选

框架解决的是编排样板代码,不解决质量——质量来自评测与迭代:

  • LangChain / LangGraph:生态最大;LangGraph 以图状态机表达 Agent 流程,可控性好
  • OpenAI / Anthropic 官方 SDK:直接、透明,适合学习原理与轻量场景;两家都内置工具调用与结构化输出
  • Vercel AI SDK:前端流式 UI 的最快路径(React/Next 生态)
  • 自研轻编排:Agent 循环本身 ~100 行代码,很多成熟团队最终收敛到自研薄层 + 直接调 API

6. 读完马上做

  • 用官方 SDK 写一个最小工具调用:让模型查「天气」(mock 函数)并回答
  • 把同一个任务分别用单次调用、工作流、Agent 三种方式实现,比较成本与可靠性
  • 给你的 RAG 加上混合检索与 rerank,跑前后对比评测

下一篇:从 Demo 到生产:Agent 工程化

Last Updated:
Contributors: rain9