Agent 大模型应用开发学习文档
Agent 大模型应用开发学习文档
目标:面向大模型应用开发秋招,把「Agent 概念 → 工程实现 → 项目证据 → 面试表达 → 待补缺口」串起来。
主线项目:云房预警系统 —— 房地产智能监测 Agent 平台
辅助项目:短视频多模态商业分析平台、Qwen3-TTS 推理部署、基于 LLM 的代码漏洞检测。
使用方式:本文档只做“专题总结 + 索引”,具体题目/笔记仍放在各自分类文件夹;文末用“相关文档链接”跳转。
0. 能力地图:要求 → 我的项目证据 → 缺口
| 能力项 | 常见要求 | 我的项目证据 | 当前缺口 | 学习产出 |
|---|---|---|---|---|
| Agent | ReAct、Plan-Execute、工具调用、多轮记忆 | 云房 Agent:LangGraph 编排 Qwen2.5-32B,11 个 Function Calling 工具,Redis 多轮记忆,SSE 流式输出 | ReAct 显式轨迹、Plan-Execute 对比实验 | 画一张 Agent 执行流程图 + 对比表 |
| Function Calling | 工具 schema、参数校验、权限、防幻觉 | 11 个业务工具;无权限/无数据返回结构化拒绝载荷;LLM 不可用降级 | 并行工具、超时重试、幂等设计 | 工具层设计清单 |
| MCP | Host/Client/Server、Tools/Resources/Prompts | 项目未直接使用 | MCP 协议与安全 | 把 2~3 个云房工具封装成 MCP Server |
| LangChain/LangGraph | 状态图、节点边、checkpoint、human-in-loop | LangGraph 编排 Agent | Checkpoint、人工审核节点 | 给云房 Agent 加 checkpoint 小实验 |
| LlamaIndex | QueryEngine、Workflow、RAG 管线 | 未直接使用 | LlamaIndex 对比 | 用 LlamaIndex 复现一个小 RAG |
| RAG | 解析、切分、Embedding、混合检索、重排、引用 | bge-m3 + BM25 双路召回 → RRF → bge-reranker;引用溯源;recall@5 100% | 向量库选型对比、切分策略消融 | FAISS/Milvus/Chroma 对比表 |
| 向量数据库 | FAISS/Milvus/Chroma | 项目使用向量检索,但简历未强调库 | 选型与压测 | 小规模 benchmark |
| Prompt Engineering | System/User Prompt、结构化输出 | 短视频项目:Qwen-VL + 结构化 Prompt 输出多维 JSON | JSON 解析失败重试策略 | Prompt 模板库 |
| 推理优化 | vLLM、量化、TP、prefix caching | Qwen2.5-32B-AWQ 双 4090 TP=2,prefix caching;TTS vLLM-Omni 并发 100 | 成本核算、量化精度对比 | 吞吐/延迟/成本表 |
| 工程化 | FastAPI、Docker、Redis、异步并发 | FastAPI + SSE + Redis + asyncio 压测 | Docker Compose 一键部署 | 补 Dockerfile/compose |
| 评测监控 | 评测集、成本/延迟监控 | 55 条四类评测集;TTFT/token/工具序列埋点看板 | 自动回归、成本面板 | 评测报告模板 |
1. 核心概念速查
| 概念 | 一句话理解 | 项目中的体现 |
|---|---|---|
| LLM | 概率生成模型,不是数据库 | Qwen2.5-32B、Qwen-VL、Qwen3-TTS |
| Token | 模型处理文本的基本单位 | 压测统计 tok/s、TTFT、Token 成本 |
| Context | 一次请求模型可见的信息 | 系统提示词 + 多轮历史 + 工具结果 |
| Context Window | 上下文窗口上限 | 多轮记忆需摘要/截断 |
| Prompt | 给模型的指令与上下文 | System Prompt 约束工具权限与输出格式 |
| User Prompt | 用户输入 | 自然语言问房地产市场问题 |
| System Prompt | 角色、边界、规则 | 无权限如实告知、禁止编造 |
| Tool | 模型可调用的外部能力 | 景气指数、去化预测、预售证检索等 11 个工具 |
| Function Calling | 模型输出结构化调用请求 | 工具选择准确率 100% |
| MCP | 工具/资源的标准化协议 | 待补:把业务工具封装为 MCP Server |
| Agent | LLM + 规划 + 工具 + 记忆 + 执行循环 | LangGraph 编排的云房 Agent |
| Agent Skill | 可复用的能力单元/技能封装 | 可把“查预售证”“算去化”做成 Skill |
2. Agent 模式
2.1 ReAct
要点:Reason → Act → Observe 循环。模型先思考需要什么信息,再调用工具,观察结果后继续推理,直到给出答案。
项目对应:云房 Agent 的 Function Calling + 工具结果回填,本质是工具循环;但需要补显式 ReAct 轨迹记录。
面试表达:
我的 Agent 不是让模型直接回答,而是把业务查询拆成工具调用。模型根据用户问题选择工具,工具返回结构化结果,再把结果送回模型生成分析。为了防止编造,无权限或无数据时返回结构化拒绝载荷。
待补实验:记录一轮 thought/action/observation,对比有无 ReAct 轨迹对工具选择的影响。
2.2 Plan and Execute
要点:先规划步骤,再逐步执行;适合多步任务。与 ReAct 的区别是规划更显式、可审核。
项目对应:云房 Agent 的“市场分析、风险预警、选址参考”天然适合 Plan-Execute。可把一次分析拆成:查指标 → 查预售证 → 算去化 → 生成结论。
待补实验:用 LangGraph 画一个 Planner 节点 + Executor 节点 + Reviewer 节点。
2.3 多 Agent / 工作流
要点:不是所有场景都要多 Agent。单 Agent + 工具 + 状态图通常更稳。多 Agent 适合职责清晰、可并行的子任务。
项目对应:当前单 Agent 足够;短视频项目可拆成“视频理解 Agent”和“商业评估 Agent”两阶段,但工程上仍是流水线。
3. Function Calling 与工具层设计
3.1 工具设计清单
- 工具名、描述、参数 schema 必须清晰;
- 参数做类型校验与业务校验;
- 权限前置:无权限不调用,返回结构化拒绝;
- 无数据不编造,返回“无数据”载荷;
- 工具结果要压缩,避免塞爆 Context;
- 超时、重试、幂等、限流;
- 记录工具序列,便于评测与排障。
3.2 项目证据
云房 Agent 有 11 个 Function Calling 工具对接真实业务库,包括景气指数、去化预测、预售证检索等;工具层做权限对齐,结构化拒绝载荷 + 防幻觉规则;LLM 不可用时自动降级兜底。
3.3 面试高频问法
Q:工具选择准确率 100% 怎么测?
自建 55 条四类评测集,其中工具选择类覆盖应调用、不应调用、无权限、多工具组合等场景;对比期望工具序列与模型实际调用序列。
Q:模型调用错工具怎么办?
先做 schema 约束和工具描述优化;再加权限与参数校验;最后用评测集回归。工程上不让模型直接碰数据库,工具层做白名单和拒绝载荷。
4. LangGraph / LangChain / LlamaIndex
4.1 LangGraph
核心:StateGraph、节点、边、条件边、checkpoint、human-in-loop。
项目对应:云房 Agent 用 LangGraph 编排 Qwen2.5-32B,配合 SSE 流式输出和 Redis 多轮会话记忆。
待补:
- 给 Agent 加 checkpoint,支持中断恢复;
- 加人工审核节点:高风险结论需人工确认;
- 对比“纯 Prompt 工具循环”和“状态图编排”的稳定性。
4.2 LlamaIndex
定位:更偏 RAG/QueryEngine/Workflow。需要知道它与 LangChain 的差异:LlamaIndex 对索引、检索、查询管线抽象更重;LangGraph 对状态机编排更重。
待补产出:用 LlamaIndex 复现一个小型 RAG,和云房 RAG 管线做对比。
5. 记忆系统
| 记忆类型 | 作用 | 项目对应 |
|---|---|---|
| 短期记忆 | 当前多轮对话 | Redis 多轮会话记忆 |
| 长期记忆 | 用户偏好、历史结论 | 待补:用户画像/历史报告摘要 |
| 工具记忆 | 工具调用结果缓存 | 可加 Redis 缓存 |
| 摘要记忆 | 压缩长上下文 | 多轮过长时摘要 |
面试表达:
记忆不是把所有历史都塞进 Context。我的做法是 Redis 存多轮会话,结合业务需要做截断/摘要;工具结果结构化存储,避免重复调用。
6. RAG 知识库
6.1 管线
flowchart LR
A[文档/PDF] --> B[解析与结构化切分]
B --> C[bge-m3 向量召回]
B --> D[BM25 关键词召回]
C --> E[RRF 融合]
D --> E
E --> F[bge-reranker GPU 重排]
F --> G[LLM 生成 + 引用溯源]
6.2 项目证据
云房 RAG:文档结构化切分 → bge-m3 向量与 BM25 双路召回 → RRF 融合 → bge-reranker GPU 交叉编码器重排,回答附引用溯源,检索 recall@5 达 100%。
6.3 待补
- FAISS / Milvus / Chroma 选型对比:数据规模、过滤、持久化、部署成本、生态;
- 切分策略消融:固定窗口 vs 语义切分 vs 结构化切分;
- 引用溯源评测:引用是否支持结论;
- Prompt Injection 防护:检索内容不可信,系统提示词优先级。
7. MCP
7.1 必会概念
- Host / Client / Server;
- Tools / Resources / Prompts;
- 传输:stdio、SSE、HTTP;
- 安全:工具权限、参数校验、审计日志。
7.2 项目练习
把云房 Agent 的 2~3 个工具封装成 MCP Server:
search_presale_certificate:按社区/时间检索预售证;get_prosperity_index:查景气指数;predict_destocking:去化预测。
产出:MCP Server 代码 + 工具 schema + 权限说明 + 调用截图。
面试表达:
我的项目里工具是业务内嵌的 Function Calling。MCP 的价值是把工具标准化,让不同 Host 复用。我会把无权限、无数据、参数错误都做成结构化返回,并在 Server 侧做白名单和审计。
8. Prompt Engineering 与结构化输出
8.1 要点
- System Prompt 写角色、边界、拒绝规则;
- 输出用 JSON Schema / 固定字段;
- few-shot 给正反例;
- 解析失败重试 + 降级;
- 不让模型输出无法验证的结论。
8.2 项目证据
短视频多模态项目:Qwen-VL 视频理解 + MiniMax 商业评估,结构化 Prompt 输出稳定可解析的多维 JSON;FastAPI 异步任务编排、缓存、失败重试、WebSocket 进度推送。
8.3 待补
- JSON 解析失败重试策略;
- 结构化输出与 Function Calling 的结合;
- Prompt 版本管理。
9. 推理部署与性能优化
9.1 指标
- TTFT:首 Token 延迟;
- 吞吐:tok/s、req/s;
- 并发:成功并发数;
- 成功率;
- GPU 利用率、显存;
- 成本:每千 Token / 每请求成本。
9.2 项目证据
- 云房:Qwen2.5-32B-AWQ 双 4090 TP=2,prefix caching,工具调用解析;并发 8 下吞吐 207 tok/s、TTFT 138ms。
- TTS:vLLM-Omni 单卡 RTX 4090 部署 Qwen3-TTS-0.6B,并发约 15 → 100,成功率 100%,端到端吞吐约 19 req/s;asyncio 流式并发压测,CosyVoice/Pocket-TTS 横评。
9.3 面试表达
推理优化不是只看吞吐。我会同时看 TTFT、端到端延迟、成功率、显存和成本。TTS 项目里用梯度并发压测和长短文本分组,避免平均值掩盖长尾。
10. 工程化:FastAPI / Redis / Docker / 异步并发
| 能力 | 项目证据 | 待补 |
|---|---|---|
| FastAPI | 云房后端、短视频异步任务 | 接口鉴权、限流 |
| SSE | Agent 流式输出 | 断线重连 |
| WebSocket | 短视频进度推送 | 心跳与背压 |
| Redis | 多轮会话记忆 | 缓存工具结果、分布式锁 |
| asyncio | TTS 流式并发压测 | 并发上限与背压 |
| Docker | 简历未强调 | 补 Dockerfile + compose |
待补产出:docker-compose.yml 一键起 FastAPI + Redis + vLLM(或 mock LLM)+ 向量库。
11. 评测与监控
11.1 四类评测集
云房自建 55 条四类评测集:
- 工具选择;
- 检索;
- 端到端;
- 权限。
结果:32B 工具选择准确率 100%,端到端正确率 90%。
11.2 监控埋点
- TTFT、Token 数、工具序列;
- 每次调用落库;
- 管理页监控看板;
- 成本统计:输入/输出 Token、模型单价、每请求成本。
11.3 漏洞检测项目的评测补充
独立复现 EMNLP 2025 多阶段漏洞检测方法,补充 Pair-wise Accuracy 与 Token 成本统计。
面试表达:
评测不只看最终答案。我会拆成工具选择、检索、端到端、权限四层;同时记录 Token 成本和延迟,避免“效果好了但成本不可接受”。
12. 安全与可靠性
- 权限对齐:无权限不调用工具;
- 防幻觉:无数据如实告知,拒绝编造;
- 结构化拒绝载荷;
- LLM 不可用降级兜底;
- 工具白名单、参数校验、审计日志;
- RAG 引用溯源;
- Prompt Injection:检索内容不可信;
- 高风险结论人工审核。
13. 面试项目讲述模板
一句话:
我做过一个房地产智能监测 Agent 平台,用 LangGraph 编排 Qwen2.5-32B,接 11 个 Function Calling 工具,配合 RAG 和 vLLM 自部署,解决了自然语言查询业务库和防幻觉的问题。
STAR:
- S:房地产市场数据分散,用户需要自然语言分析;
- T:做 Agent 助手,完成市场分析、风险预警、选址参考;
- A:LangGraph + Function Calling + Redis 记忆 + RAG 混合检索 + 权限对齐 + vLLM;
- R:工具选择 100%、端到端 90%、recall@5 100%、并发 8 吞吐 207 tok/s、TTFT 138ms。
取舍:
- 单 Agent 而非多 Agent:稳定、可评测;
- 工具层做权限,不让模型直接碰库;
- 32B-AWQ 双 4090:成本与效果平衡;
- RAG 混合检索 + 重排:提升召回与引用可信度。
14. 高频面试题清单
- ReAct 和 Plan-Execute 区别?
- Function Calling 的原理?模型真的“调用”函数吗?
- 工具选择准确率怎么评测?
- 如何防止 Agent 编造数据?
- LangGraph 的 StateGraph 怎么用?checkpoint 有什么用?
- Redis 多轮记忆怎么存?上下文超长怎么办?
- RAG 为什么要混合检索?RRF 是什么?
- reranker 和 embedding 召回的区别?
- recall@5 怎么算?100% 是否可信?
- vLLM 的 PagedAttention / prefix caching 是什么?
- AWQ 量化对效果和延迟的影响?
- TTFT 和吞吐怎么压测?
- MCP 的 Host/Client/Server 分别是什么?
- 如何做 Agent 的可观测性?
- 如何做成本/延迟监控?
- Docker 部署 Agent 服务要注意什么?
- 如何防 Prompt Injection?
- 多模态结构化输出怎么保证可解析?
15. 两周学习路线
第 1 周:Agent 内核
- Day 1:核心概念 + 画云房 Agent 架构图;
- Day 2:Function Calling 工具层设计清单;
- Day 3:ReAct / Plan-Execute 对比 + 小实验;
- Day 4:LangGraph 状态图 + checkpoint;
- Day 5:MCP 概念 + 封装 2 个工具;
- Day 6:记忆系统 + Redis 方案;
- Day 7:复盘 + 面试题 1~9。
第 2 周:RAG + 部署 + 评测
- Day 8:RAG 管线复盘 + 切分策略;
- Day 9:FAISS/Milvus/Chroma 对比;
- Day 10:LlamaIndex 小 RAG;
- Day 11:vLLM 指标 + 成本表;
- Day 12:Docker Compose 部署;
- Day 13:评测集与监控看板;
- Day 14:项目讲述 + 模拟面试。
16. 待补实验清单
- [ ] 云房 Agent 加 ReAct 轨迹记录;
- [ ] LangGraph 加 checkpoint + 人工审核节点;
- [ ] 把 2~3 个工具封装成 MCP Server;
- [ ] 用 LlamaIndex 复现小 RAG;
- [ ] FAISS / Milvus / Chroma 小 benchmark;
- [ ] Docker Compose 一键部署;
- [ ] 成本表:每请求 Token / 延迟 / 成本;
- [ ] Prompt 版本管理与 JSON 解析失败重试;
- [ ] 评测自动回归脚本;
- [ ] 安全清单:权限、审计、Prompt Injection。
17. 相关文档链接
说明:图片仍保留在原始 Agent 笔记中;本文档用文字补全图片要点,避免图片信息不可检索。