Java 工程师 AI 智能体学习路线 · 阶段 8:工程化落地 详解
本阶段目标:让智能体可上线、可观测、可评测、可治理——覆盖可观测性、评测体系、安全护栏、提示词管理、成本控制、部署运维与合规审计。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
8.1 可观测性(Observability)
讲解
LLM 调用是"概率黑盒",必须埋点看清每次请求的链路、Token、延迟、成本、成败。
- 指标(Metrics):用 Micrometer 记录 Token 数、调用次数、耗时、错误率。
- 链路(Tracing):用 Langfuse / OpenTelemetry 追踪一次请求经过哪些 Agent/工具、各步耗时与输入/输出。
- 日志(Logging):结构化记录 Prompt/Response(注意脱敏)。
示例(Micrometer 记录 Token,Spring AI 风格)
@AutowiredMeterRegistryregistry;publicStringask(Stringq){ChatResponseresp=chatClient.prompt().user(q).call();varusage=resp.getMetadata().getUsage();registry.counter("llm.tokens","type","prompt").increment(usage.promptTokens());registry.counter("llm.tokens","type","completion").increment(usage.completionTokens());returnresp.getResult().getOutput().getText();}示例(Langfuse 追踪):为每个会话/任务创建trace,把每次 LLM 调用、工具调用作为span上报,便于回放与排查。
常见场景
- 线上"答非所问"时,回放 trace 看是哪一步工具返回异常。
- 按业务/用户维度统计成本,发现异常调用。
面试知识点
- Q:LLM 应用为什么特别需要可观测?
A:模型输出概率性、链路长(多 Agent/工具)、成本高且易出错;没有链路与指标就无法定位"哪步错了、花了多少、是否超预算"。
8.2 评测体系(Evaluation)
讲解
提示词/模型的改动必须可回归验证,不能凭感觉。
- 评测数据集:维护"输入 → 期望输出/评分标准"的用例集(覆盖典型与边界)。
- 指标:准确率、幻觉率、工具调用成功率、格式合规率、用户满意度。
- 回归测试:每次 Prompt/模型升级跑全量用例,对比前后指标。
- 自动化:CI 中集成评测,不达标则阻断发布。
示例(最小回归测试,示意)
@TestvoidpromptV2_regression(){for(Casec:evalSet){Stringout=agent.run(c.input());assertTrue(scorer.pass(c,out),"用例失败: "+c.id());}}常见场景
- 提示词 A/B:同一数据集对比新旧版本指标。
- 模型替换:升级模型前先跑回归,确认不劣化。
面试知识点
- Q:如何判断一次 Prompt 改版"变好了"?
A:用固定评测集,对比准确率/合规率/人工评分等量化指标,而非单次主观感受;并做回归确保原有好用例不退化。
8.3 安全护栏(Guardrails)
讲解
在输入与输出两端加防护,防止越权、泄露与违规。
- 输入过滤:拦截 Prompt Injection、敏感词、越权指令。
- 输出过滤:拦截泄露密钥/隐私、违规内容。
- 工具权限最小化:Agent 只拥有必要工具权限。
- 敏感操作二次确认(HITL):发消息、删数据、扣款前人工审批。
- 越权防护:校验调用者身份与数据归属。
示例(Advisor 拦截,Spring AI 风格)
// 自定义 Advisor:调用前做输入安全校验,调用后做输出脱敏publicclassGuardrailAdvisorimplementsAdvisor{publicAdvisedResponseadvise(AdvisedRequestreq){securityFilter.checkInput(req.userText());// 输入护栏AdvisedResponser=next.advise(req);r=r.withOutput(piiRedactor.redact(r.output()));// 输出脱敏returnr;}}常见场景
- 客服 Agent 不能泄露其他用户订单(越权防护 + 输出过滤)。
- 运维 Agent 执行"重启"前必须人工确认。
面试知识点
- Q:如何防范 Prompt Injection?**
A:System 强调安全边界与优先级;隔离标记用户输入;输出过滤敏感信息;关键动作人工确认;加护栏规则/模型二次校验。
8.4 提示词与配置管理
讲解
- 版本化:提示词纳入 Git,每次改动有记录、可回滚。
- A/B 对比:新旧提示词在评测集/灰度流量上对比。
- 灰度发布:先对小比例流量生效,观察指标无碍再全量。
- 集中配置:提示词/参数放配置中心(Nacos/Apollo),热更新不重启。
常见场景
- 大促前对"营销话术 Prompt"做灰度,避免全量翻车。
- 回滚到上周效果更好的提示词版本。
面试知识点
- Q:为什么提示词也要版本化和灰度?
A:提示词直接影响输出质量与合规,改动风险高;版本化便于回滚与审计,灰度能在小流量验证后再全量,降低线上事故。
8.5 成本控制
讲解
- 模型分级路由:简单任务用小/便宜模型,复杂任务才用大模型(如路由层判断意图)。
- 缓存:系统提示前缀复用命中 prompt cache;相同问答结果缓存。
- 批处理:离线任务用 batch API 享折扣。
- 预算上限:按用户/业务设 Token 预算,超限降级或限流。
示例(按复杂度路由,示意)
ChatModelmodel=isSimple(task)?cheapModel:strongModel;returnchatClient.mutate().chatModel(model).prompt().user(task).call().content();常见场景
- 分类/摘要用轻量模型,深度推理才上推理模型。
- 高频 FAQ 命中缓存,几乎零成本。
面试知识点
- Q:如何降低高频问答系统的成本?
A:Prompt 缓存复用前缀;RAG 只取相关片段;按任务难度模型路由;限制输出长度;批量调用;结果缓存。
8.6 部署与运维
讲解
- 容器化:Docker + K8s,统一运行环境。
- 原生镜像:Spring Boot 原生镜像(GraalVM)降低冷启动、内存占用。
- 限流:保护下游模型 API,防止突发打满配额。
- 灰度 / 回滚:新版本先小流量,异常一键回滚。
- 弹性:结合队列削峰,长任务异步化。
常见场景
- 夜间批处理任务量大,用队列异步执行避免阻塞在线服务。
- 模型 API 抖动时自动降级到备用模型/兜底文案。
面试知识点
- Q:LLM 服务上线要考虑哪些运维要点?
A:容器化与弹性伸缩、限流保护模型配额、灰度发布与回滚、异步削峰、降级兜底、可观测与告警。
8.7 合规治理
讲解
- 数据隐私:用户 PII(姓名/手机号)在日志与 Prompt 中脱敏。
- 日志脱敏:落盘前过滤密钥、隐私字段。
- 审计留痕:关键动作(调用了什么工具、谁发起、结果如何)可追溯。
- 合规:国内需注意数据出境、内容安全与备案要求。
示例(PII 脱敏,示意)
StringsafeLog=piiRedactor.redact(rawPrompt);// 手机号/身份证打码auditLogger.info("task={} input={}",taskId,safeLog);常见场景
- 金融/医疗行业对日志脱敏与审计有强监管要求。
- 跨境业务需评估数据出境合规。
面试知识点
- Q:LLM 日志里常见哪些合规风险?怎么处理?
A:风险:泄露用户隐私(PII)、密钥、内部规则。处理:落盘前脱敏、访问控制、最小化存储、审计留痕、按合规要求评估出境与备案。
8.8 阶段 8 自测清单
- 能为 Agent 调用接入可观测链路(指标+追踪)
- 能设计一份最小评测数据集做回归
- 能描述敏感工具的人工确认机制
- 能说明提示词版本化与灰度的价值
- 能说出成本控制与合规审计的关键手段
8.9 阶段 8 面试题与参考答案
1. LLM 应用为什么特别需要可观测?
模型输出概率性、链路长(多 Agent/工具)、成本高且易错;没有指标与链路就无法定位哪步出错、花了多少、是否超预算。
2. 如何判断一次 Prompt 改版"变好了"?
用固定评测集对比准确率/合规率/人工评分等量化指标,并做回归确保原有好用例不退化,而非凭单次主观感受。
3. 如何防范 Prompt Injection?
System 强调安全边界与优先级;隔离标记用户输入;输出过滤敏感信息;关键动作人工确认;加护栏规则/模型二次校验。
4. 什么是 HITL?哪些操作必须人工确认?
Human-in-the-Loop,关键节点暂停等人工审批并回流反馈。必须确认:发消息、删数据、扣款、对外发布等不可逆/高风险/强合规动作。
5. 为什么提示词也要版本化和灰度?
提示词直接决定输出质量与合规,改动风险高;版本化便于回滚审计,灰度可在小流量验证后再全量,降低事故。
6. 如何降低高频问答系统的成本?
Prompt 缓存复用前缀;RAG 只取相关片段;按任务难度模型路由;限制输出长度;批量调用;结果缓存。
7. LLM 服务上线要考虑哪些运维要点?
容器化与弹性伸缩、限流保护模型配额、灰度与回滚、异步削峰、降级兜底、可观测与告警。
8. LLM 日志有哪些合规风险?如何处理?
风险:泄露 PII、密钥、内部规则。处理:落盘前脱敏、访问控制、最小化存储、审计留痕、按合规评估出境与备案。
9. 模型分级路由有什么价值?
按任务复杂度选模型:简单任务用便宜/轻量模型降本提速,复杂任务才用强模型保质量,整体在成本与效果间取平衡。
10. 如何对 Agent 做评测回归?
构建评测数据集(输入+期望/评分标准),每次提示词或模型升级在 CI 中全量跑用例,对比准确率、幻觉率、工具成功率等指标,不达标阻断发布。