一、Prompt Demo与生产架构的差异
Demo链路:前端输入问题 -> 后端拼接Prompt -> 调用模型API -> 返回答案。
Demo仅能用于演示,存在6项生产能力缺失。
| 维度 | Prompt Demo | 生产级架构 |
|---|---|---|
| 稳定性 | 单模型、单调用,失败直接报错 | 多模型路由、重试、fallback、熔断、降级响应 |
| 权限 | 用户可查询全部内容 | 检索前权限过滤,工具调用按用户、租户鉴权 |
| 成本 | 仅关注调用能否成功 | Token预算、模型分层、缓存、成本归因、限额管控 |
| 可观测 | 仅记录用户问题和最终答案 | 记录Prompt、检索片段、工具调用、模型输出、Token、延迟、错误信息 |
| 评测 | 人工测试少量样例 | 固定评测集、线上抽样、LLM‑as‑Judge、人工复核闭环 |
| 数据治理 | 文档直接入库,日志随意存储 | PII脱敏、数据留存管控、审计、版本化、删除与授权链路 |
AI应用部分决策依赖概率模型,故障不一定对应某一行代码,错误来源包含Prompt版本、上下文顺序、检索噪声、工具描述、模型采样、权限过滤、输出解析。生产架构需要对输入、执行、输出、反馈做工程化,保证回答可追踪、可回放、可评测、可治理。
二、生产级AI应用分层架构
1.入口层
不只是简单Controller,职责:
1.认证鉴权,确认用户、租户、角色、数据范围。
2.请求标准化,将Web、App、API、Webhook、定时任务统一为内部任务模型。
3.限流防刷,按用户、租户、模型能力、业务场景限流。
4.幂等控制,异步任务、工具调用、支付类操作配置幂等键。
5.敏感内容预处理,PII脱敏、恶意输入检测、Prompt注入初筛。
输出结构化请求对象,不直接透传原始字符串。
2.业务编排层
决定单次请求执行逻辑:
1.判定任务类型:普通问答、RAG问答、Agent多步任务、批处理任务。
2.确定需要的上下文资源:历史会话、用户画像、知识库、实时业务数据。
3.管控工具调用权限,判定哪些工具需要二次确认。
4.选定交互模式:同步、流式、异步。
5.确定输出是否进入评测、人工审核、后处理流程。
规则类逻辑使用代码实现,仅将无法穷举的语言理解交给模型,避免全部逻辑写在Prompt内。
3.模型网关层
统一接入各类大模型、Embedding、Rerank模型,屏蔽不同厂商API差异。
核心能力:
1.多模型路由,依据场景、成本、延迟、语言、上下文长度、成功率选择模型。
2.fallback降级,主模型失败、超时、限额不足切换备用模型。
3.限流熔断,防止第三方供应商异常拖垮业务线程池。
4.Token预算,预估输入输出Token,超预算执行上下文压缩或者模型降级。
5.成本归因,按租户、用户、场景、Prompt版本统计成本。
6.统一观测,记录模型请求、响应、错误、TTFT、总延迟、Token使用量。
模型相关配置维护在配置中心或模型注册表,禁止硬编码进业务代码。
4.Prompt与上下文管理层
Prompt作为可版本化配置,禁止直接写死为代码字符串。
Prompt需要支持:模板版本管理、变量注入、灰度发布、快速回滚、变更审计、运行时绑定版本信息。Prompt变更需要可追踪,允许更高发布频率。
区分三类上下文,不可全部混杂:
| 类型 | 存储内容 | 生命周期 | 核心风险 |
|---|---|---|---|
| RAG | 企业文档、产品手册、制度、代码文档、工单知识 | 跟随知识库更新 | 检索缺失、越权召回、文档过期、引用错配 |
| Memory | 用户偏好、历史决策、长期画像、任务经验 | 跟随用户、会话演进 | 错误记忆固化、隐私泄露、过时记忆干扰 |
| Tool | 查询订单、创建工单、发邮件、改配置、查询数据库 | 运行时按需调用 | 参数错误、权限越界、敏感操作误执行 |
Memory写入需要异步执行,增加Schema校验、置信度过滤、过期策略、人工审核入口,不能当作个人RAG随意写入。
三、同步、流式、异步交互模式
| 模式 | 适用场景 | 优势 | 风险 | 后端设计要点 |
|---|---|---|---|---|
| 同步请求 | 短问答、分类、抽取、低延迟小任务 | 实现简单,调用链路清晰 | 对超时敏感,容易占满线程 | 设置短超时、快速失败、结果缓存 |
| 流式响应 | 聊天、长答案、代码生成、语音前置文本 | 首字体验好,用户等待感知低 | 中途失败处理复杂,前端状态逻辑多 | SSE/WebSocket、TTFT监控、支持生成取消 |
| 异步任务 | 报告生成、批量评测、长文档分析、多工具任务 | 支持排队、重试、恢复 | 任务状态与通知链路复杂 | 任务表、队列、进度事件、幂等补偿逻辑 |
经验选择标准:3秒内稳定完成优先同步;用户需要即时看到输出优先流式;长文档、多工具、批量处理优先异步。不要为模仿ChatGPT将全部接口改为流式。
四、Prompt版本管理
核心5个对象:prompt_template、prompt_version、prompt_release、prompt_run、prompt_eval_result。
| 表名 | 关键字段 | 作用 |
|---|---|---|
| ai_prompt_template | id、tenant_id、name、scene_code、type、status | 管理Prompt逻辑名称 |
| ai_prompt_version | id、template_id、version_no、content、variables_schema、model_config、created_by、change_reason | 保存可回放的Prompt内容 |
| ai_prompt_release | id、template_id、version_id、env、traffic_ratio、tenant_scope、status | 管控灰度与回滚 |
| ai_prompt_run | id、request_id、version_id、variables_hash、input_tokens、output_tokens、created_at | 关联线上请求和Prompt版本 |
两个避坑点:变量不能未清洗直接拼接;避免Prompt版本和代码版本脱节,依靠variables_schema做运行时校验。敏感内容不完整落库,只存储摘要、Hash、关联ID。
五、模型网关路由策略
| 策略 | 核心逻辑 | 适用场景 | 风险 |
|---|---|---|---|
| 固定模型 | 场景绑定单一模型 | 早期系统、低复杂度任务 | 成本、稳定性完全依赖单一供应商 |
| 成本优先路由 | 默认低成本模型,失败或低置信度升级模型 | 分类、摘要、轻量问答 | 低能力模型错误向下传导 |
| 质量优先路由 | 高价值请求优先高能力模型 | 法务、金融、医疗辅助、复杂Agent | 成本高,需要预算管控 |
| 延迟优先路由 | 依据P95/P99延迟、可用区选择模型 | 实时聊天、语音、在线客服 | 可能降低复杂推理质量 |
| 多模型投票 | 多模型并行生成,评审器筛选结果 | 高风险内容、关键报告 | 成本、延迟均较高 |
| fallback链 | 主模型故障切换备用模型 | 绝大多数生产系统 | 备用模型能力差异造成输出不一致 |
Token超预算降级顺序:删除低相关RAG片段 → 压缩早期历史消息 → 缩减工具Schema → 降低最大输出长度 → 切换长上下文模型 → 拒绝执行提示用户缩小范围。
六、工具调用与权限
核心原则:模型仅生成工具调用意图,实际执行必须经过系统校验。
工具调用6道流程:
1.工具注册:登记工具名称、描述、参数Schema、权限标签、风险等级。
2.工具检索:筛选当前任务相关工具,防止上下文膨胀。
3.参数校验:JSON Schema或者强类型对象校验参数。
4.权限校验:基于用户、租户、角色、资源ID做后端鉴权。
5.二次确认:删除、支付、消息发送、配置修改等高风险操作需要用户确认。
6.审计日志:记录模型建议、最终参数、执行人、执行结果、回滚信息。
风险等级枚举:READ_ONLY只读、WRITE_LOW_RISK低风险写、WRITE_HIGH_RISK高风险写。高风险调用转为待确认动作,禁止直接执行。不能依赖第三方服务的server‑side tool,业务侧仍要完成ACL、审计、确认流程。
七、RAG与Memory协作
单次请求标准协作顺序:
1.入口层确认用户身份与权限范围。
2.Memory服务检索用户偏好、长期事实。
3.RAG服务在租户、资源权限范围内检索共享知识库。
4.Context管理层对两类结果做去重、过滤、压缩。
5.编排层分区放置Memory(用户背景)、RAG(证据资料)。
6.模型输出区分资料事实与用户偏好表达方式。
上下文污染类型及防护:
| 污染类型 | 表现 | 防护手段 |
|---|---|---|
| RAG噪声污染 | 检索无关文档误导模型 | Hybrid Search、Rerank、Top‑N压缩、引用校验 |
| 权限污染 | 返回无权限文档片段 | 检索前ACL过滤,租户隔离,审计召回结果 |
| Memory错误固化 | 临时用户表述被当作长期偏好 | 写入置信度、过期时间、用户可编辑、人工复核 |
| 新旧事实冲突 | 新旧版本资料同时进入上下文 | 版本字段、时间过滤、冲突检测 |
| Prompt注入污染 | 文档包含忽略规则类指令 | 文档内容分区、指令优先级、注入检测 |
RAG、Memory结果不能拼接为统一文本,需要标注来源、时间、权限、可信度。
八、可观测与评测
Trace记录内容
分为八大类别:Prompt、检索、Memory、Tool、模型、延迟、成本、结果。完整记录每类对应的关键字段,用于问题排查。
评测指标
Context Recall、Context Precision、Faithfulness、Answer Relevancy、Tool Success Rate、Format Valid Rate、Cost per Success。
LLM‑as‑Judge仅适合大规模初筛、回归对比、线上抽样,关键业务必须人工复核。评测闭环链路:线上失败样本 → 加入数据集 → 固定版本回放 → 定位问题点 → 灰度新策略 → 指标对比 → 正式发布。缺少回放机制,优化只能依靠主观感受。
九、安全与合规
AI应用风险入口多于传统CRUD系统。
| 风险 | 说明 | 处理建议 |
|---|---|---|
| PII泄露 | 日志、Prompt、评测集携带手机号、身份证、邮箱 | 入库脱敏,敏感字段加密,最小化留存 |
| 权限绕过 | 检索、工具调用绕过ACL校验 | 检索前过滤,工具执行前二次鉴权 |
| Prompt注入 | 用户或者文档诱导模型忽略系统规则 | 内容分区、指令优先级、注入检测、拒答策略 |
| 数据留存失控 | 模型请求、观测日志保存时间过长 | 租户、场景维度配置留存周期 |
| 训练数据风险 | 用户敏感数据被用于微调、评测 | 明确授权、脱敏、数据隔离、支持删除 |
| 高风险动作误执行 | 模型触发删除、支付、消息发送工具 | 风险分级、二次确认、审计、补偿方案 |
安全策略不能仅依靠Prompt提示,权限过滤、脱敏、审计、确认流程必须由代码、基础设施强制执行。对接第三方模型需要管控数据边界,遵循最小数据发送原则,必要时脱敏摘要,配置留存周期并审计。
十、Java后端落地
模块拆分
| 模块 | 职责 |
|---|---|
| ai‑api | 对外REST/SSE/WebSocket接口,鉴权,协议适配 |
| ai‑orchestrator | 业务编排,交互模式选择,任务状态机 |
| ai‑prompt | Prompt模板、版本、灰度、渲染、回滚 |
| ai‑context | 上下文组装、Token预算、历史压缩、上下文分区 |
| ai‑gateway | 模型路由、fallback、限流、熔断、成本统计 |
| ai‑rag | 知识库检索、权限过滤、Rerank、引用管理 |
| ai‑memory | 用户记忆写入、检索、冲突处理、过期策略 |
| ai‑tool | 工具注册、参数校验、执行、二次确认、审计 |
| ai‑eval | 评测数据集、评测任务、LLM‑as‑Judge、人工反馈 |
| ai‑observability | Trace、指标、日志、成本、告警 |
核心数据表
ai_request_trace、ai_model_call、ai_context_item、ai_rag_chunk_hit、ai_memory_item、ai_tool_call、ai_eval_dataset、ai_eval_case、ai_eval_run、ai_eval_result。
注意事项:request_id全链路唯一;大字段不存入MySQL本体,业务表仅保存摘要、Hash、引用地址;业务表增加索引与归档策略,避免性能退化。
最小请求链路
Controller → RequestGuard鉴权、限流、脱敏 → Orchestrator选择同步/流式/异步 → ContextAssembler拉取RAG、Memory、历史会话 → PromptService渲染模板版本 → ModelGateway路由模型并记录Token → OutputParser校验结构化输出 → TraceService写入观测数据。
起步阶段优先实现ai‑api、ai‑prompt、ai‑gateway、ai‑rag、ai‑observability;Memory、Tool、Eval后续迭代补充;Trace、Prompt版本不能延后开发。
十一、要点回顾
1.Prompt Demo仅验证回答可行性;生产级架构目标实现长期可控输出。
2.模型网关是模型调用控制面,承担路由、fallback、限流熔断、Token预算、成本归因。
3.Prompt需要版本化,支持变量校验、灰度、回滚、审计。
4.RAG、Memory、Tool分开治理,共享知识、个性化记忆、业务操作不能混杂。
5.可观测、评测是持续优化基础,没有Trace、回放,优化只能依靠主观判断。
6.安全逻辑依靠代码强制实现,Prompt只能辅助,不能替代权限、脱敏、审计、二次确认。
十二、高频面试问题
1.Prompt Demo到生产系统最大差距:工程治理。Demo关注模型输出结果;生产系统关注稳定性、权限隔离、成本控制、可观测、评测回放、数据合规。
2.模型网关作用:屏蔽多供应商差异,实现模型路由、fallback、限流熔断、Token预算、成本统计观测,业务代码不耦合具体模型厂商。
3.交互模式选择:短任务同步;聊天长输出流式;报告生成、批量、多工具任务异步。依据任务耗时、首字反馈需求、重试恢复需求判断。
4.Prompt版本管理意义:Prompt会影响输出质量、工具调用、检索、成本;版本管理实现灰度、回滚、审计、离线评测回放。
5.Tool Calling安全边界:模型仅生成调用意图;参数校验、权限校验、敏感操作确认、审计全部由后端系统完成。
6.RAG和Memory区别:RAG存储所有人共享的企业知识;Memory存储单用户个性化偏好历史;二者分区注入上下文,防止上下文污染。
7.AI可观测指标:Prompt版本、检索命中情况、工具调用记录、模型输出、Token、TTFT、总延迟、成功率、错误率、评测分数、成本。
8.LLM‑as‑Judge局限:只能用于自动化回归、线上抽样初筛;关键业务必须搭配规则校验、人工复核、用户反馈闭环。