Java 工程师 AI 智能体(Agent)完整学习路线

Java 工程师 AI 智能体(Agent)完整学习路线

适用对象:具备 Java / Spring 后端基础,希望系统学习大模型应用与 AI 智能体开发的工程师。

路线主线:基础认知 → 提示词 → 编程调用 → 单智能体 → 工具/RAG → 多智能体 → 框架生态 → 工程化落地

注:

博客:

https://blog.csdn.net/badao_liumang_qizhi

总览路线图

#mermaid-svg-JHDUpGBHa9OZTx6n{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JHDUpGBHa9OZTx6n .error-icon{fill:#552222;}#mermaid-svg-JHDUpGBHa9OZTx6n .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JHDUpGBHa9OZTx6n .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JHDUpGBHa9OZTx6n .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JHDUpGBHa9OZTx6n .marker.cross{stroke:#333333;}#mermaid-svg-JHDUpGBHa9OZTx6n svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JHDUpGBHa9OZTx6n p{margin:0;}#mermaid-svg-JHDUpGBHa9OZTx6n .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JHDUpGBHa9OZTx6n .cluster-label text{fill:#333;}#mermaid-svg-JHDUpGBHa9OZTx6n .cluster-label span{color:#333;}#mermaid-svg-JHDUpGBHa9OZTx6n .cluster-label span p{background-color:transparent;}#mermaid-svg-JHDUpGBHa9OZTx6n .label text,#mermaid-svg-JHDUpGBHa9OZTx6n span{fill:#333;color:#333;}#mermaid-svg-JHDUpGBHa9OZTx6n .node rect,#mermaid-svg-JHDUpGBHa9OZTx6n .node circle,#mermaid-svg-JHDUpGBHa9OZTx6n .node ellipse,#mermaid-svg-JHDUpGBHa9OZTx6n .node polygon,#mermaid-svg-JHDUpGBHa9OZTx6n .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JHDUpGBHa9OZTx6n .rough-node .label text,#mermaid-svg-JHDUpGBHa9OZTx6n .node .label text,#mermaid-svg-JHDUpGBHa9OZTx6n .image-shape .label,#mermaid-svg-JHDUpGBHa9OZTx6n .icon-shape .label{text-anchor:middle;}#mermaid-svg-JHDUpGBHa9OZTx6n .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-JHDUpGBHa9OZTx6n .rough-node .label,#mermaid-svg-JHDUpGBHa9OZTx6n .node .label,#mermaid-svg-JHDUpGBHa9OZTx6n .image-shape .label,#mermaid-svg-JHDUpGBHa9OZTx6n .icon-shape .label{text-align:center;}#mermaid-svg-JHDUpGBHa9OZTx6n .node.clickable{cursor:pointer;}#mermaid-svg-JHDUpGBHa9OZTx6n .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-JHDUpGBHa9OZTx6n .arrowheadPath{fill:#333333;}#mermaid-svg-JHDUpGBHa9OZTx6n .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JHDUpGBHa9OZTx6n .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JHDUpGBHa9OZTx6n .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JHDUpGBHa9OZTx6n .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-JHDUpGBHa9OZTx6n .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JHDUpGBHa9OZTx6n .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-JHDUpGBHa9OZTx6n .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JHDUpGBHa9OZTx6n .cluster text{fill:#333;}#mermaid-svg-JHDUpGBHa9OZTx6n .cluster span{color:#333;}#mermaid-svg-JHDUpGBHa9OZTx6n div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JHDUpGBHa9OZTx6n .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-JHDUpGBHa9OZTx6n rect.text{fill:none;stroke-width:0;}#mermaid-svg-JHDUpGBHa9OZTx6n .icon-shape,#mermaid-svg-JHDUpGBHa9OZTx6n .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JHDUpGBHa9OZTx6n .icon-shape p,#mermaid-svg-JHDUpGBHa9OZTx6n .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-JHDUpGBHa9OZTx6n .icon-shape .label rect,#mermaid-svg-JHDUpGBHa9OZTx6n .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JHDUpGBHa9OZTx6n .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-JHDUpGBHa9OZTx6n .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-JHDUpGBHa9OZTx6n :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 阶段1 基础认知
阶段2 提示词工程
阶段3 编程调用 LLM
阶段4 智能体核心原理
阶段5 工具/MCP/RAG
阶段6 多智能体与编排
阶段7 框架与生态
阶段8 工程化落地

目录

  • [阶段 1:AI / LLM 基础认知](#阶段 1:AI / LLM 基础认知)
  • [阶段 2:提示词工程](#阶段 2:提示词工程)
  • [阶段 3:编程调用 LLM](#阶段 3:编程调用 LLM)
  • [阶段 4:智能体核心原理](#阶段 4:智能体核心原理)
  • [阶段 5:工具调用、MCP 与 RAG](#阶段 5:工具调用、MCP 与 RAG)
  • [阶段 6:多智能体与编排](#阶段 6:多智能体与编排)
  • [阶段 7:框架与生态](#阶段 7:框架与生态)
  • [阶段 8:工程化落地](#阶段 8:工程化落地)
  • 附:阶段周期与产出总表

阶段 1:AI / LLM 基础认知

目标:建立对大模型能力与边界的正确直觉,理解 Token、上下文、参数、成本等核心概念。

1.1 核心术语

1.1.1 Token(词元)

讲解 :模型处理文本的最小单位,文本先被切分为 Token 再转向量计算。英文约 1 Token ≈ 4 字符;中文约 1 Token ≈ 1~2 汉字;代码/公式按子词切分。

示例"你好,世界" 约 5~7 Token;"The quick brown fox" 约 4~5 Token。

场景 :计费按 Token;上下文以 Token 为上限;可用官方 tokenizer 估算成本。

面试知识点:Q:中文为何更费 Token?A:中文无空格、语义密度高,常按字/词根切分,同等语义下 Token 更多。

1.1.2 上下文窗口(Context Window)

讲解 :模型单次可见的最大 Token 数,含"输入 + 历史 + 输出"。超出截断或压缩。

示例 :128K 窗口约 10 万汉字;输入占 120K 则输出仅剩 8K。

场景 :长文档需配合 RAG/摘要;多轮对话需管理长度。

面试知识点:Q:窗口越大越好吗?A:不一定,会带来注意力分散、延迟与成本上升。

1.1.3 Embedding(向量嵌入)

讲解 :把文本映射为稠密向量,语义相近则距离近,是 RAG/检索基础。

示例float[] v = embeddingClient.embed("人工智能是计算机科学的分支");

场景 :知识库检索、去重、聚类。

面试知识点:Q:Embedding 与生成模型区别?A:前者输出向量表征语义,后者输出文本,常配合使用。

1.1.4 微调 vs 推理

讲解 :微调改变权重学新知识(贵、慢);推理是用已有模型处理请求(日常 API)。

场景 :一般业务用推理+Prompt/RAG;仅垂直领域固化风格才微调。

面试知识点:Q:何时用 RAG 而非微调?A:知识易变、需溯源、私有数据优先 RAG。

1.1.5 幻觉(Hallucination)

讲解 :无依据时"自信编造"错误内容。

场景 :事实问答、数据引用、API 名易幻觉。

缓解 :RAG 注入证据、约束拒答、要求引用、人工复核。

面试知识点:Q:如何降低幻觉?A:RAG+约束拒答+引用溯源+多模型验证+人工复核。

1.1.6 知识截止日期

讲解 :训练数据截止某时点,之后事件/新库未知。

场景:问最新资讯可能编造;用搜索/RAG 注入实时信息。

1.2 模型分类

类型 用途 示例
对话/生成 客服、写作 GPT-4o、通义千问、Claude
推理 数学/代码/规划 o1/o3、DeepSeek-R1
多模态 图文理解 GPT-4V、Gemini
Embedding 检索 text-embedding-3
Rerank RAG 精排 BGE-Reranker

面试知识点:推理模型擅长复杂推理但延迟高、成本高;简单任务用普通模型。

1.3 采样参数

  • temperature:0~2,越低越确定;事实/代码用 0~0.3,创意用 0.8~1.0。
  • top_p:仅从累计概率达 top_p 的词集采样;与 temperature 二选一调。
  • top_k:仅取概率最高 k 个词。
  • max_tokens:限制输出长度、控成本。
  • stop:遇指定串停止。
  • frequency/presence penalty:降复读、鼓励新话题。

示例

json 复制代码
{ "model":"gpt-4o", "messages":[{"role":"user","content":"一句话解释 Token"}],
  "temperature":0.2, "top_p":0.9, "max_tokens":200, "stop":["\n\n"] }

面试知识点:Q:temperature=0 完全可复现?A:基本可复现但不保证 100%(推理模型随机性、批处理/实现差异)。

1.4 能力边界

短板:知识时效、精确计算、因果常识、不可复现、幻觉。

启示 :让模型"想/说",把"算/查"交工具。

面试知识点:Q:为何不让 LLM 做精确计算?A:自回归是概率预测,不保算术正确,应借工具执行。

1.5 推理成本

组成:输入+输出 Token(输出更贵);缓存命中降本;推理模型更贵。

优化:压缩 System Prompt 复用前缀命中缓存、模型分级路由、限制 max_tokens、批量调用。

1.6 生态认知

OpenAI / Anthropic / Google / 国产(通义、智谱、DeepSeek、文心)。

解耦 :用 Spring AI ChatClient、LangChain4j ChatLanguageModel 屏蔽厂商差异。

1.7 自测清单

  • 解释 Token 与上下文关系
  • 说明 temperature/top_p 取舍
  • 列举 3 个失败场景
  • 区分微调与推理
  • 说出降本与降幻觉手段

1.8 面试题与参考答案

  1. Token 及中英文差异? 最小处理单位;中文无空格、语义密,约 1~2 字/Token,故更费。
  2. 上下文窗口含什么、超长怎样? 输入+历史+输出;超出截断/压缩致信息丢失。
  3. Embedding 作用? 文本转向量,RAG 中检索语义相近块作证据。
  4. 微调 vs RAG? 知识易变/需溯源→RAG;固化风格→微调。
  5. 幻觉与缓解? 无依据编造;RAG+拒答约束+引用+验证+复核。
  6. temperature=0 可复现? 基本可,但不保证 100%(随机性/实现差异)。
  7. 为何不让 LLM 算精确数? 概率预测不保算术,借工具/解释器执行。
  8. 降本手段? 缓存前缀、RAG 取相关片段、模型路由、限长、批量。
  9. 推理模型取舍? 强于复杂推理但贵且慢,按任务复杂度选。
  10. 多厂商解耦? 抽象层统一接口,便于切换/灰度。

阶段 2:提示词工程(Prompt Engineering)

目标:稳定"指挥"模型产出期望结果,具备结构化输出与高级推理范式能力。

2.1 基础结构(三种角色)

  • System:设定角色/规则/语气,贯穿会话、权重最高。
  • User:当前指令。
  • Assistant :模型回复,也可预填做 Few-shot。
    面试知识点:System 定全局约束,优先级高;User 是当前任务。

2.2 基础技巧

  • 角色设定System: 你是一位 10 年 Spring Boot 架构师。
  • Zero/Few-shot:Few-shot 给"输入→输出"范例提升格式一致性(代价:占 Token、可能带偏)。
  • CoT:要求逐步推理再给答案(代价:更长更贵;推理模型已内化)。
  • Self-Consistency:多路径采样取多数,提复杂题准确率。

2.3 结构化输出

  • JSON Moderesponse_format:{type:"json_object"} 或明确要求只输出 JSON。
  • 函数/Schema 约束:用 JSON Schema 约束字段。
  • 校验兜底:Jackson 反序列化失败则重试。
java 复制代码
try { Result r = objectMapper.readValue(out, Result.class); }
catch (JsonProcessingException e) { /* 重试 */ }

面试知识点:JSON 非法兜底------JSON Mode+Schema 校验+失败重试+限长防截断+降级。

2.4 约束与防漏

  • 拒答边界:只处理 Java 问题,否则回复"抱歉,我无法回答"
  • 格式/长度/语气强制。
  • Prompt Injection 防范:System 强调边界、隔离标记用户输入、输出过滤、关键动作 HITL、护栏二次校验。

2.5 高级范式

  • ReAct:Thought→Action(调工具)→Observation 循环,Agent 核心。
  • Plan-and-Solve:先规划再执行,适步骤清晰任务。
  • Reflexion:失败反思改进重试。
  • Tree-of-Thought :多分支搜索最优。
    面试知识点:ReAct 比 CoT 多了"行动+观察",能接触外部世界。

2.6 评测意识

关注一致性、回归(Prompt 改动跑评测集)、数据集建设。

2.7 自测清单

  • 写带拒答边界的 System Prompt
  • Few-shot 提升分类
  • 稳定输出 JSON
  • 描述 ReAct
  • 设计最小评测集

2.8 面试题与参考答案

  1. 三角色作用? System 全局规则权重高;User 当前指令;Assistant 回复/示例。
  2. Few-shot vs Zero-shot? Few-shot 引格式更稳但费 Token 可能带偏;简单任务 Zero-shot。
  3. CoT 及代价? 逐步推理提准确率;更长更贵,推理模型已内化。
  4. 稳定 JSON? JSON Mode+Schema+校验重试+限长。
  5. Prompt Injection 防范? 边界强调、隔离用户输入、输出过滤、HITL、护栏。
  6. ReAct 与 CoT 区别? ReAct 想+做+观察,能调工具;CoT 只想。
  7. Plan-and-Solve vs ReAct? 可预见流程用前者;不确定需实时信息用后者。
  8. JSON 非法处理? 开启约束+代码校验重试+限长+降级。
  9. 为何 Prompt 需评测? 同 Prompt 可能不一致,改动需回归比对。
  10. Self-Consistency? 多路径采样取多数,提正确率但成本线性升。

阶段 3:编程调用 LLM

目标:用代码把模型接进 Java 应用,掌握流式、错误处理、密钥管理。

3.1 HTTP 直接调用

端点 POST /v1/chat/completions,头 Authorization: Bearer <KEY>

json 复制代码
{ "model":"gpt-4o",
  "messages":[{"role":"system","content":"Java 专家"},{"role":"user","content":"什么是 Stream API?"}],
  "temperature":0.3 }

面试知识点:Key 放请求头而非 Body,避免日志泄露、便于网关拦截。

3.2 SDK 与框架抽象

  • Spring AIChatClient
java 复制代码
String ans = chatClient.prompt().system("Java 架构师").user(q).call().content();
  • LangChain4jChatLanguageModel.generate(...)
    面试知识点:抽象屏蔽厂商差异、内置重试/流式/拦截,便于切换与测试。

3.3 消息模型

SystemMessage/UserMessage/AssistantMessage/ToolMessagePromptChatResponse(含 usage)。

面试知识点:多轮历史全量发会超窗口且增成本,需截断/摘要。

3.4 流式处理

SSE(text/event-stream)逐段推送。

java 复制代码
chatClient.prompt().user(q).stream().content().subscribe(token -> System.out.print(token));

Web 层用 SseEmitter 推前端。成本同非流式;首字延迟低、体验好,但需处理断连/背压。

3.5 错误处理与重试

  • 429 限流、408 超时、5xx、内容拦截。
  • 可重试:429/408/5xx;不可重试:401/403/400/审核拦截。
  • 指数退避+抖动、最大重试、降级兜底(如 Spring Retry @Recover)。
    面试知识点 :429 不立即重试;读 Retry-After 退避+本地限流+降级。

3.6 密钥与配置

  • 放配置中心(Nacos/Apollo),不写死代码;多 Key 轮询分摊配额、支持轮转。
  • 前端绝不持有 Key(盗刷+无法审计)。
    面试知识点:密钥仅服务端,日志脱敏。

3.7 自测清单

  • 裸 HTTP 调一次
  • Spring AI/LangChain4j 对话
  • 流式接口
  • 429 重试/降级
  • Key 放配置中心

3.8 面试题与参考答案

  1. Key 放头还是体? 头,防泄露、便拦截。
  2. 为何用抽象? 屏蔽差异、统一模型、内置能力、易切换。
  3. 多轮历史管理? 拼回历史,但需截断/摘要控成本。
  4. 流式 vs 非流式? 成本同;流式体验好但需处理断连。
  5. 429 处理? 读 Retry-After、退避+限流+降级。
  6. 可/不可重试? 429/408/5xx 可;401/403/400/审核不可。
  7. 前端持 Key? 不能,盗刷且不可审计。
  8. SSE 与 Java 实现? 服务端单向推送;SseEmitter/Flux
  9. 多 Key 轮询价值? 分摊配额、故障切换、轮转。
  10. 成本核算? 解析 usage 按单价累计+可观测归因。

阶段 4:智能体(Agent)核心原理

目标:理解自主循环、工具、记忆构成的 Agent,掌握规划模式与工程风险。

4.1 什么是 Agent

Agent = LLM + Tools + Memory + Planning。区别于普通调用:输出可能是"下一步动作"而非最终答案。

4.2 四大支柱

  • Planning:拆解子任务、定顺序(ReAct 边想边做 / Plan-and-Solve 先规划)。
  • Memory:短期(会话历史)、长期(向量库/库)、压缩(摘要)。
  • Tools:把算/查交给外部能力。
  • Action :将决策落地为工具调用或回答。
    面试知识点:让模型想/说,算/查交工具,提正确降幻觉。

4.3 规划模式

  • ReAct:Thought→Action→Observation。
  • Plan-and-Execute:先计划再执行。
  • Reflexion :失败反思改进重试。
    面试知识点:ReAct 边想边做;Plan-and-Solve 适可预见流程;Reflexion 提复杂任务成功率。

4.4 记忆机制

类型 存储 场景
短期 内存消息 多轮对话
长期 向量库/库 用户偏好/知识
压缩 摘要文本 历史过长压缩
过长→超窗口/成本升/注意力稀释;解决:截断、摘要、长期检索回填。

4.5 执行循环与状态机

java 复制代码
for (int step=0; step<MAX; step++) {
    Decision d = planner.decide(history);
    if (d.isFinal()) return d.answer();
    String obs = toolRegistry.call(d.action(), d.input());
    history.add(new ToolMessage(obs)); // 回灌
}

面试知识点:模型无状态,必须把 Observation 回灌才能形成闭环。

4.6 终止条件

目标达成 / 步数上限 / 人工介入 / 错误熔断。步数上限防死循环与成本失控

4.7 风险与防范

风险 防范
死循环 步数上限+重复检测
工具误用 Schema 校验+预检
成本失控 步数/Token 预算
越权 权限最小化+HITL
不可控输出 护栏+审计

4.8 自测清单

  • 画 ReAct 图
  • 解释长短记忆
  • 死循环防范
  • 对比 ReAct/Plan
  • 列 3 风险对策

4.9 面试题与参考答案

  1. Agent vs 普通调用? 前者是感知-决策-行动-观察循环,能调工具改状态。
  2. 四大支柱? Planning/Memory/Tools/Action。
  3. 想/说 vs 算/查? LLM 擅推理不擅计算/实时,交工具提正确降幻觉。
  4. ReAct vs Plan? 不确定实时→ReAct;可预见→Plan;可结合。
  5. Reflexion? 失败后反思重试,提复杂任务成功率。
  6. 短记忆过长? 超窗口/成本升;截断/摘要/长期回填。
  7. 回灌 Observation? 模型无状态,需基于真实反馈闭环。
  8. 步数上限? 防死循环与成本失控。
  9. 防误删? 权限最小+HITL+预检+dry-run+审计回滚。
  10. 典型风险? 死循环/误用/成本/越权/不可控输出及对应防范。

阶段 5:工具调用、MCP 与 RAG

目标:让 Agent 连接外部世界(工具/MCP)与私有知识(RAG)。

5.1 Function Calling

流程:声明工具(名/描述/Schema) → 用户问 → 模型返回 {name, arguments} → 本地执行 → 结果回灌 → 生成答案。模型不真正执行函数

5.2 Java 注册工具

java 复制代码
public class WeatherTool {
  @Tool(description="查询城市天气")
  public String getWeather(@ToolParam(description="城市") String city){
      return weatherService.query(city);
  }
}
ChatClient c = ChatClient.builder(model).defaultTools(new WeatherTool()).build();

LangChain4j 用 @Tool + @P。防传错参:Schema 描述清晰+方法内校验+关键工具 HITL+失败重试。

5.3 MCP(模型上下文协议)

  • 开放标准,AI 界的"USB-C";MCP Server 暴露工具/资源,MCP Client 连接。
  • 与 FC 关系:FC 是"模型如何表达要调函数";MCP 是"工具如何被标准发现/调用"。
  • 价值:工具一次实现、多应用复用、解耦能力提供与调用。
java 复制代码
List<ToolCallback> tools = mcpClient.listTools().stream().map(McpToolCallback::new).toList();

5.4 RAG 流水线

  1. 加载+切分:PDF/网页/DB;块 200~500 字,留重叠。
  2. Embedding+向量库:Milvus/pgvector/Chroma/Redis/ES。
  3. 检索+Rerank:Top-K 相似度粗排,Rerank 模型精排。
  4. 注入生成:相关块拼 Prompt,可标来源。
java 复制代码
List<TextSegment> hits = vectorStore.search(embed(question),5);
hits = reranker.rerank(question, hits, 3);
String ans = chatClient.prompt().user("资料:\n"+join(hits)+"\n问题:"+question).call().content();

面试知识点:块太大噪声多、太小语义碎;Rerank 提 Top 相关性。

5.5 引用与溯源

给块编号、要求回答附编号;便于点击溯源、纠错、合规。降编造:只给真实片段+约束拒答+校验来源+置信阈值。

5.6 Agentic RAG

Agent 自主决定何时/查什么/多轮检索,与 ReAct 结合(Action=retrieve)。区别于传统"检索一次→生成"。

5.7 自测清单

  • @Tool 注册
  • 说明谁执行函数
  • MCP vs FC
  • 跑通最小 RAG
  • Rerank 作用

5.8 面试题与参考答案

  1. 模型执行函数? 否,只输出决策,本地执行后回灌。
  2. 防传错参? Schema 清晰+方法校验+ HITL+重试。
  3. MCP vs FC? FC 是调用机制;MCP 是工具标准协议,解耦提供与调用。
  4. 块大小? 太大噪声、太小碎;重叠调优。
  5. 为何 Rerank? 粗排快但不精,精排提相关性。
  6. 降编造来源? 真实片段+拒答+来源校验+阈值。
  7. Agentic RAG? Agent 动态控制检索时机/词/多轮。
  8. 向量库角色? 存 Embedding,高效相似检索。
  9. MCP 工程价值? 复用、标准化、易治理。
  10. 完整 RAG 步骤? 加载→切分→Embedding→存库→检索→Rerank→注入→生成

阶段 6:多智能体与编排

目标:掌握协作模式、编排范式、智能体间协议与人类在环。

6.1 为何多智能体

分工→专业化、可控、可并行;复杂任务单 Agent "什么都不精"。

6.2 协作模式

  • Supervisor/Worker:中枢拆解派发汇总,灵活适不确定任务。
  • Pipeline:线性流转,简单可预测。
  • 辩论/投票:多方案交叉验证,成本高。
  • Blackboard :共享黑板逐步汇聚,适探索性任务。
    面试知识点:Pipeline 简单但缺灵活;Supervisor/Worker 动态派发更灵活。

6.3 编排范式

  • 有向图(LangGraph 思想):节点+边+状态,支持循环/分支。
java 复制代码
StateGraph g=new StateGraph();
g.addNode("planner",planner); g.addNode("researcher",r); g.addNode("writer",w);
g.addEdge("planner","researcher");
g.addConditionalEdge("researcher", s-> s.enough()?"writer":"researcher");
  • 状态机:显式状态约束合法路径,便审计。
  • 事件驱动 :消息总线松耦合、可扩展。
    面试知识点:图编排支持分支/循环/并行/中断,表复杂控制流。

6.4 共享状态与消息

统一任务上下文/消息结构(JSON Schema)传递;Supervisor 聚合、去重、排序、仲裁。

6.5 智能体间协议:A2A / ACP / Agent Card

  • A2A(Google)Agent Card(JSON 描述能力/端点/技能)、TaskMessage;HTTP+JSON-RPC,SSE 推进度。
  • ACP:面向 Agent 通信的开放协议,侧重会话与能力协商。
  • Agent Card 示例
json 复制代码
{ "name":"天气Agent", "url":"https://a2a.example.com/weather",
  "skills":[{"id":"get_weather","name":"查天气"}] }

面试知识点:A2A 解决 Agent 间协作(Agent 对 Agent);MCP 解决 Agent 调工具(Agent 对资源),互补。

6.6 任务分解与结果聚合

按技能派发子任务;冲突用仲裁 Agent/投票/可信度加权;关键结论附证据或 HITL。

6.7 人类在环(HITL)

关键节点(发消息/删数据/发布)暂停审批,反馈回灌。兼顾自动化与可控。

6.8 自测清单

  • Supervisor vs Pipeline
  • Agent Card 作用
  • 设计 2-Agent 协作
  • A2A vs MCP
  • HITL 节点

6.9 面试题与参考答案

  1. 多 Agent 适用? 可拆分/需分工/可控/并行/人工介入。
  2. Supervisor vs Pipeline? 前者动态灵活,后者线性简单。
  3. 图编排优势? 分支/循环/并行/中断,节点可测可换。
  4. 信息如何传? 统一消息结构+聚合去重仲裁。
  5. Agent Card? Agent 名片/注册表,供发现与委托。
  6. A2A vs MCP? Agent 对 Agent vs Agent 对资源。
  7. 结果冲突? 仲裁/投票/加权+证据+HITL。
  8. HITL 节点? 不可逆/高风险/强合规处。
  9. Blackboard? 共享黑板逐步汇聚,适探索任务。
  10. 辩论/投票价值与代价? 降偏差但成本翻倍需收敛机制。

阶段 7:框架与生态

目标:选型与落地------弄清 Java 主流框架定位,以 Python 框架为范式参考。

7.1 为何用框架

标准化消息/重试/流式/工具/记忆/编排/可观测,降本提效;但需能下钻原始报文防黑盒。

7.2 Java 主流框架

  • Spring AIChatClient,最贴合 Spring Boot;Advisor 拦截链。
  • LangChain4j :轻量声明式 AiServices + @Tool
java 复制代码
interface Assistant { @SystemMessage("Java 导师") String answer(@UserMessage String q); }
Assistant bot = AiServices.create(Assistant.class, model);
  • Spring AI Alibaba:通义/DashScope 优化,含 Agent Framework + 可视化 Dashboard,国内友好。
  • Semantic Kernel(Java) :微软,Kernel+Plugin(函数集合)+Planner(目标拆解)。
  • 协议 SDK :MCP SDK 接 Server;A2A SDK 做 Agent 协作。
    面试知识点:Spring AI 更 Spring 原生;LangChain4j 更轻量声明式。

7.3 Python 框架(范式参考)

  • LangGraph:有向图+状态编排事实标准。
  • AutoGen:多 Agent 对话协作、代码执行。
  • CrewAI :Role/Crew/Task 岗位化协作。
    学其设计,不迁业务到 Python

7.4 选型建议

现状 推荐
Spring Boot 后端 Spring AI(+Alibaba)
轻量/声明式 LangChain4j
国内通义/可视化 Spring AI Alibaba
微软/插件治理 Semantic Kernel
多 Agent 图编排 框架图能力+LangGraph 思想
跨进程协作 MCP/A2A

防锁定:业务依赖抽象接口、走标准协议、编排与框架解耦。

7.5 自测清单

  • 对比 Spring AI 与 LangChain4j
  • Spring AI Alibaba 特色
  • Semantic Kernel Plugin/Planner
  • 何时参考 Python
  • 给出选型理由

7.6 面试题与参考答案

  1. 用框架? 标准化通用能力、统一治理;但防黑盒。
  2. Spring AI vs LangChain4j? 前者 Spring 原生融合深;后者轻量声明式。
  3. Alibaba 特色? 通义优化+Agent Framework+Dashboard+国内合规。
  4. Semantic Kernel Plugin/Planner? Plugin=函数集合模块化;Planner=目标拆计划。
  5. 何时参考 Python? 范式先在 Python 成熟时学思想,Java/A2A 等价落地。
  6. 抽象解耦厂商? 依赖统一接口,配置/适配器注入,便切换灰度。
  7. MCP/A2A SDK 角色? MCP 接工具;A2A 做 Agent 协作。
  8. 如何选型? 技术栈/模型厂商/协作模式/跨进程需求综合。
  9. 锁定风险? 依赖抽象、走标准、编排解耦。
  10. 成熟框架能力? 模型抽象/工具/记忆/RAG/流式/护栏/编排/可观测。

阶段 8:工程化落地

目标:可上线、可观测、可评测、可治理。

8.1 可观测性

  • Metrics:Micrometer 记 Token/次数/耗时/错误率。
java 复制代码
registry.counter("llm.tokens","type","prompt").increment(usage.promptTokens());
  • Tracing:Langfuse/OpenTelemetry 追链路(每 Agent/工具为 span)。
  • Logging :结构化记录,注意脱敏。
    面试知识点:概率黑盒+长链路+高成本,无观测无法定位/算账。

8.2 评测体系

评测数据集(输入+期望/评分)→ 指标(准确率/幻觉率/工具成功率/合规率)→ 回归(CI 全量跑,不达标阻断)。

java 复制代码
@Test void regression(){ for(Case c:set) assertTrue(scorer.pass(c, agent.run(c.input()))); }

8.3 安全护栏

输入过滤(Prompt Injection/敏感词)、输出过滤(隐私/违规)、工具权限最小化、敏感操作 HITL、越权防护。

java 复制代码
// Advisor:输入护栏 + 输出脱敏
securityFilter.checkInput(req.userText());
r = r.withOutput(piiRedactor.redact(r.output()));

8.4 提示词与配置管理

Git 版本化、A/B 对比(评测集/灰度)、配置中心热更新。改动风险高,需回滚与灰度。

8.5 成本控制

模型分级路由(简单用小模型)、prompt 缓存、批处理、Token 预算上限。

java 复制代码
ChatModel m = isSimple(task)? cheap : strong;

8.6 部署与运维

容器化+K8s、Spring Boot 原生镜像降冷启、限流保护配额、灰度/回滚、队列削峰、降级兜底。

8.7 合规治理

PII 脱敏(姓名/手机)、日志脱敏、审计留痕、数据出境/备案合规。

java 复制代码
auditLogger.info("task={} input={}", id, piiRedactor.redact(raw));

8.8 自测清单

  • 接入可观测
  • 设计评测集回归
  • 敏感工具 HITL
  • 提示词版本化/灰度
  • 降本与合规手段

8.9 面试题与参考答案

  1. 为何需可观测? 概率性+长链路+高成本,无指标难定位/算账。
  2. 判断 Prompt 改好? 固定评测集量化比对+回归不退化。
  3. 防 Injection? 边界强调+隔离输入+输出过滤+HITL+护栏。
  4. HITL 与节点? 不可逆/高风险/强合规处人工确认。
  5. 提示词版本化/灰度? 改动风险高,便回滚审计、小流量验证。
  6. 降本? 缓存前缀+RAG 取相关+路由+限长+批量+结果缓存。
  7. 运维要点? 容器化弹性+限流+灰度回滚+异步削峰+降级+告警。
  8. 日志合规风险? 泄露 PII/密钥;脱敏+访问控制+最小化+审计。
  9. 模型路由价值? 按复杂度平衡成本与效果。
  10. Agent 评测回归? 评测集+CI 全量跑+指标对比+阻断发布。

附:阶段周期与产出总表

阶段 主题 周期 关键产出
1 基础认知 1 周 说清 Token/上下文/成本/边界
2 提示词工程 1--2 周 可复用高质量 Prompt 模板
3 编程调用 LLM 1--2 周 流式对话 Demo
4 智能体核心原理 2--3 周 理解四大支柱、手写 ReAct 循环
5 工具/MCP/RAG 3--4 周 带工具与知识库的助手
6 多智能体与编排 3 周 2--3 个 Agent 协作系统
7 框架与生态 持续 选定主框架并落地
8 工程化落地 2--3 周 可观测/可评测/可部署

推荐学习顺序小结

  1. 上手机器(阶段 1--3):两周内跑通带 System Prompt 的流式对话。
  2. 单智能体(阶段 4--5):加工具+RAG,做出能查资料、调接口的助手。
  3. 多智能体(阶段 6):理解编排与协议,做 2--3 Agent 协作。
  4. 工程化(阶段 7--8):选型框架、补评测与可观测,推向生产。
相关推荐
新知图书1 小时前
本书学习路径与前置知识要求
人工智能·多模态·ai agent·智能体
c_lb72881 小时前
近期AI量化工具选择,学习开发执行要分开
人工智能·python
AI科技星1 小时前
特征值与特征向量不是矩阵特殊解,是变换矩阵下不改变生长方向、仅缩放体量的固有主螺旋脉络 -《全域数学vs传统数学:人类文明进阶200讲》第73讲
人工智能·线性代数·矩阵·数据挖掘·回归·乖乖数学·全域数学
aaPIXa6221 小时前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
科技发布1 小时前
可出具正规收录回执广告平台推荐,朝闻通合规投放满足企业审计需求
大数据·人工智能·科技·媒体
SunnyDays10111 小时前
Java 编辑 PDF:从增删改查到加密保护
java·修改 pdf·编辑 pdf
想要入门的程序猿1 小时前
摄影测量学习()
数码相机·学习
worilb2 小时前
Spring Cloud 学习与实践(13):使用 Seata 解决分布式事务问题
分布式·学习·spring cloud
Promise微笑2 小时前
激光清障仪市场与技术深度分析:基于原理、应用及厂家格局的综述
大数据·人工智能·物联网