ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI对话平台核心架构拆解:从模型接入到安全评测的工程实践

AI对话平台核心架构拆解:从模型接入到安全评测的工程实践 做AI对话平台久了我越来越觉得“接一个大模型API”只是整个项目里最简单的一步。真正把一句话请求变成稳定、安全、可商用的对话服务背后涉及模型调用、上下文管理、知识检索、工具调度、内容治理和评测迭代每一环都能决定产品口碑。这篇文章我用自己的工程实践把AI对话平台的核心技术拆开讲清楚适合正在做AI应用开发、负责智能客服或AI助手产品迭代的开发者也适合想搞懂技术架构的产品经理。只要你能跟着走一遍完整链路基本就有一张可落地的技术地图。1. AI对话平台的第一性原理不是“接API”而是“做工程”1.1 平台到底在解什么题一个对话平台表面上是聊天框底层要解的问题通常有这几类理解用户意图、组织多轮上下文、从外部知识源取数、调用工具完成动作、控制内容风险、稳定承载高并发。只盯着模型能力很容易出现“单轮对话很聪明一进生产环境就崩”的情况。所谓核心技术并不单指某个大模型而是把模型能力落进真实业务链路的能力。我之前带过的一个项目最初团队觉得“反正用了最强的通用大模型剩下都是小事”结果上线第一周就发现用户问法一变回答就驴唇不对马嘴。原因不是模型不够聪明而是意图识别后的路由规则太脆弱知识库也没做切片用户问题稍微长一点召回结果就是错的。所以现在做方案评审我会让团队先把要解的问题列成清单再谈选哪个模型。这类问题清单通常可以分成四个层次体验层要回答“准不准、快不快、稳不稳”知识层要回答“有没有依据、能不能更新”行动层要回答“能不能调用系统、操作是否可审批”治理层要回答“内容安全不可控、成本是否可预测”。把这四层想明白平台的技术边界就出来了。1.2 一条用户消息的背后链路用户点下发送键之后请求要经过网关鉴权、会话路由、上下文组装、指令检测、模型推理、输出安全校验最后再做响应渲染。我们内部把这个链路称为“请求管线”。管线里任意一个节点如果返回慢整体延迟就上去了任意一个节点做不好用户感受到的就是“AI变笨了”。我见过不少团队只盯着模型P99延迟却忽略上下文组装在慢速存储上浪费了600ms结果体验依然很拉胯。更隐蔽的问题在“会话路由”。同一个平台可能服务多个业务线有的走C端闲聊有的走B端客服还有的走内部知识问答。路由节点必须根据渠道、用户身份、历史会话状态把消息分发到对应的提示词模板、知识库和模型配置里去。如果路由做不好客服场景就会混入创作类提示词模型行为一下子就失控了。管线里还有一个容易被忽略的节点叫“前置改写”。用户输入“这个怎么样”这种指代不明的短句时直接送给模型很难答得准。我会在进入模型之前做一层轻量改写把上文里的关键实体补全成“这个商品的退换货政策怎么样”。这一步可以由一个小模型或规则引擎完成成本不高但对回答质量的提升非常明显。很多所谓“AI变笨了”的问题其实卡在这里。1.3 分层架构为什么是必然选择把平台拆成接入层、编排层、模型层、知识层、工具层和治理层不是过度设计而是为了各自独立演进。接入层管多端协议编排层管提示词模板和流程模型层做统一适配知识层做检索工具层接业务系统治理层负责安全与可观测。这样任何一个大模型升级或者换供应商不会牵连整条业务。层次核心职责常见组件接入层API网关、WebSocket/SSE、限流鉴权Kong、Java Gateway、Node.js编排层提示词模板、会话状态机、意图路由LangChain语义内核、自研工作流模型层统一模型协议、流式适配、参数管理OpenAI兼容协议、vLLM、DeepSeek知识层文档解析、切片、向量检索、重排Milvus、ES、Embedding模型工具层函数定义、调用鉴权、幂等控制Function Calling、HTTP插件治理层内容审核、日志审计、全链路监控规则引擎、分类模型、可观测平台也有团队一开始不想分层模型调用到处散落后面做权限统一和风险治理时只能返工。我的建议是MVP阶段可以简化但至少要留出模型适配层和治理层的口子否则用户量一上来改动任何一个模型配置都要全局发布那种痛我不想再经历第二次。分层的另一层含义是故障隔离。比如知识库服务不稳定时模型层不会跟着雪崩内容审核服务超时也可以把风险模式切换成“只拦截高置信度违规”而不是拒绝所有请求。这样做牺牲了一点点死板的严控换来了更高的可用性。对话平台作为面向用户的实时系统可用性永远比单点完美更重要。2. 模型接入与推理引擎把大模型当成可依赖的组件2.1 模型协议与参数调优的实操细节当前主流对话大模型基本都提供OpenAI兼容的Chat Completions接口消息格式统一成system、user、assistant。这极大降低了接入成本但工程上不能只填一个用户消息就发出去。实际业务里system提示词要动态拼装需要注入人设、业务规范、当前时间、用户身份标签。如果系统里有多个角色还要把角色对应的权限范围写清楚避免模型越过边界回答敏感内容。另一个容易踩的坑是temperature、top_p、max_tokens这些采样参数的取值。我对不同场景的建议是客服答疑类temperature控制在0.2到0.4之间写作文案可以放到0.7到0.9而工具调用场景越保守越好否则模型容易编造参数。为什么因为temperature影响概率分布的锐度数值越高采样越随机数字越低输出越确定top_p控制候选词累积概率类似一个截断开关。两者可以叠加使用但不建议同时调得很极端。max_tokens如果设太小长回答会被截断用户看到半句话体验极差。最好结合产品文案的最大长度反向估算比如产品允许显示300字max_tokens至少留出400的余量。还要注意大多数平台的max_tokens只约束生成部分不含输入token所以总消耗要单独用tiktoken或对应tokenizer统计。我见过一个团队预算对不上就是因为没算system提示词和历史上下文的输入token。2.2 流式输出的体验设计与状态管理流式已经是对话产品的标配。服务器返回SSE事件前端逐字渲染但工程上这会把超时、断线、重连问题全部放大。我建议在接入层做统一协议转换把模型返回的增量内容包装成标准事件这样前端只处理一种格式。真正麻烦的是状态管理同一轮请求里要区分“流式开始”“内容增量”“工具调用参数”“结束信号”。很多团队只解析text增量遇到function calling就乱了因为参数可能被拆成多个chunk。实操时我会在流式解析器里维护一个累积buffer事件里如果带了function_call字段就把参数拼进当前函数对象的arguments直到收到finish_reason为function_call再整体交出去。这里有一个很容易踩的坑chunk顺序不一定按业务字段排列所以必须等流完全结束再校验JSON参数不能边收边解析。还有一点前端展示的流式token往往比实际消耗少因为system提示词和隐藏的上下文不会被渲染。做埋点统计时不能拿展示字数当消耗量要用后端记录的真实用量。如果你的网关层要支持多用户和断线重连建议给每个SSE连接分配一个递增的序列号前端重连后可以根据序列号补齐缺失的片段。不要小看这个设计真实用户在网络抖动时经常遇到“回答到一半没了”的情况如果没有重连补发机制用户只能重新提问流失率会很高。流式不是只追求快而是要快得完整。2.3 推理性能、量化和并发治理模型接入后要面对性能问题。如果直接用公有云API核心是控制并发和限流。我会在平台与模型之间加一层代理缓存对完全相同的query在短时间内做一次去重尤其适合高频FAQ。如果走私有化部署通常用vLLM这类推理框架关键是开启连续批处理和KV Cache尽量提高GPU利用率。量化能显著减少显存但4bit对某些模型的推理质量影响明显我一般对聊天场景保留BF16只在内部摘要或分类任务上尝试量化。并发治理方面最怕的是“所有用户同时打到一个模型实例”。合理的做法是按业务线拆分模型实例或配置不同配额设置队列长度和超时降级。比如高优先级请求可以走快模型低优先级任务走大模型异步批处理。这里没有银弹只有通过压测得出每个实例的吞吐上限然后在网关层做自适应限流。我在多个项目里都是先用1倍预期流量压测再把副本数往上调最终得到一个比较稳的容量基线。推理引擎还有一个容易忽略的点预热。新启动的模型实例如果第一次请求到来时才做权重加载首token延迟会特别高。我会在容器启动完成后先发几个虚拟请求做预热等健康检查通过再放流量。同时要监控GPU显存碎片。长文本请求频繁时KV Cache之间容易出现碎片导致显存利用率下降必要时需要重启实例或开启显存显式管理。3. 多轮对话的记忆管理与上下文工程3.1 Token预算决定了记忆策略对话平台的核心资源不是内存而是模型的上下文窗口。虽然现在的模型Context窗口越来越大但一旦塞满要么报错要么回答质量下降。所以在每次请求前我都会先做一个token预算把system指令、工具定义、检索片段、多轮历史、当前问题都估算出来如果超出窗口就按优先级裁剪。这个优先级一般是当前问题大于最新几轮摘要大于工具定义system提示词原则上不能砍。为什么从最新一轮往前保留因为对话场景里用户最新意图往往只依赖最近2到3轮更早的内容大概率是干扰。我见过一个失败案例客服场景把过去20轮全部塞给模型结果用户中途改了主题模型反而被旧话题带偏。把历史裁剪成最后5轮加一轮摘要效果立刻稳定很多。所以不要迷信“上下文越大越好”信息过载对生成质量的影响可能比丢信息更严重。做预算时我有一个实用公式可用长度 模型窗口 - system长度 - 工具定义长度 - 当前问题长度 - 预留生成长度。剩余空间里再按轮次从新到旧填充历史。如果剩余空间只能放2轮那就只放2轮不要强行压缩成半截。预算的结果可以写入日志方便之后复盘知道哪几种请求最容易顶到头。3.2 滑动窗口、摘要压缩与混合记忆记忆策略无外乎三种。滑动窗口最简单只保留最近N条消息缺点是很久之前的事实会被遗忘。摘要压缩会在对话长度超标时让模型把旧消息归纳成一段摘要再拼到系统区。混合记忆会同时维护短期缓存和长期摘要库。我给大多数业务推荐第三种因为成本可控又不容易丢关键信息。具体实现时摘要压缩不能每次都全量重写。我习惯维护一个“待摘要片段”当滑动窗口超过阈值时把最旧的一段送给一个便宜模型生成摘要再和上一份摘要合并。这个过程可以设计成异步任务不阻塞用户当前请求。如果对延迟敏感甚至可以在上一轮回复完成后就提前做摘要。注意摘要里要保留用户的核心诉求、已解决事实和待办事项人名、订单号、时间节点这些一个都不能丢。滑动窗口的N怎么定要看业务。简单的FAQ咨询保留最近4到6轮就够了复杂的方案咨询可能要保留最近8到10轮。N定得太大token消耗和噪声都会上来N定得太小又容易丢失重要前提。我建议先用离线数据集做几次对比测试把不同N值下的准确率拉出来找到拐点。不要凭感觉拍一个固定值也不要让用户配置暴露太复杂的选项。3.3 长期记忆与向量化存储长期记忆通常服务两类需求一类是让AI记住用户画像另一类是跨会话检索历史信息。最简单的方案是每个会话维护一个结构化状态把关键实体抽出来写成JSON。复杂一点用Embedding把历史消息向量化存到向量库用户再次提问时先检索相关片段再拼入上下文。我建议优先做结构化状态因为业务字段清晰、可审计向量检索适合语义相似但不便枚举的内容。长期记忆最容易翻车的是“记忆污染”。模型从旧对话里抽取用户偏好时可能把错误信息写进状态。所以写入长期记忆前最好加一道确认或置信度判断。比如“用户喜欢喝美式咖啡”这种偏好变更频繁要支持覆盖而“用户已开通会员”必须以事实为准。这里的核心原则是记忆不是模型自由发挥的产物而是经过抽取、校验、再到写入的工程数据。向量化存储也不是越多越好。如果每句话都变成向量检索时会召回到大量闲聊内容反而干扰回答。我会先过滤掉“无关信息”和“临时情绪”型语句只把事实、决策、指标、偏好类内容向量化。检索时再按时间衰减加权越近的会话权重越高。这样长期记忆才不会变成一堆乱七八糟的聊天记录堆。4. RAG知识增强让模型回答“有根有据”4.1 为什么要RAG而不是无限微调业务方经常问我为什么不把知识库喂给模型微调我的回答是微调解决“说话风格和格式”问题不解决“事实更新”问题。企业知识库不断变化微调一次成本高、周期长还容易让模型把知识背混。RAG的本质是检索时把最新知识片段放进提示词让模型基于证据生成既不用重新训练也能在回答里追到出处。遇到“不知道”的场景模型可以更有底气地说需要补充信息而不是硬编。RAG的另一个好处是可解释性。用户问“这个政策怎么执行”模型如果直接背出某段话出了问题很难定位是训练数据的问题还是生成的问题。用RAG就能把回答映射回具体文档运营和法务都能快速核查。尤其在一些对幻觉零容忍的场景比如医疗、金融、政务RAG几乎是知识问答类AI对话平台的必选项。微调不是不能用而是更适合做风格强化和领域术语对齐。但是RAG也不是万能的。检索质量差模型就会被垃圾片段带偏甚至一本正经引用错误文档。所以实施RAG时真正要投入精力的不是选大模型而是做知识库治理。文档版本、权限范围、更新频率都要管理起来。我见过不少项目向量库建得很漂亮结果源文档过期了模型拿着旧政策回答新问题最后用户投诉的还是“AI不懂业务”。4.2 切片、Embedding与召回重排RAG不能只靠一个向量检索就完事。质量瓶颈很多时候在切片环节。用固定长度硬切会把连续语句从中间劈开检索到的段落语义断裂。我更推荐按标题、段落、句子边界做递归切片让每段尽量保持语义完整。切片长度要和Embedding模型支持的窗口匹配通常控制在300到500字左右再带上一部分重叠减少边界漏检。Embedding模型的选择上中文场景建议用针对中文优化的模型不要直接随便拉一个英文模型。召回层可以同时跑向量检索和关键词检索再用RRF或cross-encoder重排模型融合。向量负责语义相似BM25负责精确命中重排模型负责精排。上线前我会用一批专家标注的问答对跑召回率达不到预期就先调切片长度和重排阈值而不是急着换Embedding。RAG最怕“召回到了但排错了”不相关内容顶到前面模型就会被误导。重排这一步很关键。向量搜索召回的top20可能只有3个相关直接全塞给模型会稀释注意力。用cross-encoder重排后只保留top3到5个片段进上下文效果会好很多。重排模型会比普通Embedding慢但只在候选集上跑开销可控。如果你没有重排模型也可以用规则做粗排比如优先包含更多查询关键词的片段优先标题命中片段优先最近更新的文档。先把这些规则做到极致再上模型重排。4.3 引用溯源与回答质量兜底企业级对话平台一定要有引用溯源。模型根据检索片段生成时要求输出格式里带上片段编号前端渲染成脚注或可点击卡片。这样用户既能核实答案法务和运营也有审计依据。实现方式是在提示词里明确约束“只基于参考内容回答并标注编号”同时在后端把检索片段和引用编号做映射防止模型自己瞎编编号。除了引用还要兜底。当检索相关性低于阈值不该硬答应该反问澄清或转人工当检索结果很多但模型回答很短可能意味着模型偷懒没读完证据。我还会给回答加一个“是否被采纳”的反馈按钮形成闭环数据。线上用户点“不采纳”的样本定期抽出来看是没找到文档、文档没更新、还是回答格式不对。这三类问题的解法完全不同没有反馈数据就只能靠猜。兜底策略里最重要的是“拒绝阈值”。不能每次都把低分片段强行塞给模型否则用户会觉得平台在胡说。我的做法是片段得分低于阈值时让模型直接回答“这个信息知识库暂时没有建议转人工”。同时把这条问题记录到知识缺口表里运营看到后可以及时补文档。这样RAG系统会越用越准因为它不只是输出答案也在帮知识库找盲区。5. 从“聊天”到“做事”工具调用与Agent机制5.1 Function Calling的工程本质对话平台如果想订机票、查库存、创建工单就必须让模型具备调用外部工具的能力。Function Calling的本质不是“模型真的调用函数”而是模型根据用户意图输出一个结构化的调用参数。真正的执行和幂等控制由平台代码完成。我会要求每个工具定义都有清晰的名称、描述、参数JSON Schema描述写得好不好直接影响模型能不能选对工具。比如一个“查询订单状态”的工具参数如果只写“order_id”模型可能不知道这个ID从哪里来。更完整的描述应该写成“根据用户提供的订单号查询订单当前物流状态订单号格式为OR2024开头”。我还会在参数里加上“required”标记并给出示例值。这听起来像文档工作但实测下来描述越具体工具调用的准确率越高。很多项目工具调不准不是模型不行而是工具描述写得太含糊。执行时有个关键点工具调用的结果必须重新回填给模型再生成最终回复。所以一次带工具的用户请求往往要经历“模型出调用请求、平台执行工具、把结果发给模型、模型总结回答”多个回合。这里要防止无限循环设置最大工具调用次数比如3到5次。每次工具返回都要带状态码和错误信息模型才能根据错误修正参数。5.2 规划、执行与多Agent协作单工具调用够用复杂任务就需要Agent。当前比较成熟的做法是ReAct或Plan-and-Execute模式。ReAct让模型边思考边行动每一步都记录Thought、Action、Observation适合任务路径不确定的场景。Plan-and-Execute则先把整个任务拆成多个子步骤再逐步执行适合流程稳定、操作链很长的业务系统。从工程角度看前者的状态更轻后者更容易做人工确认节点。我实际落地时更倾向于给Agent一个“规划器”而不是让模型自由思考。规划器先输出分步计划每步指定一个工具或子Agent然后由编排引擎按计划执行。这样做的好处是步骤可预期中途出错可以定位到具体第几步。自由模式的ReAct虽然灵活但在企业场景里容易出现“绕着问题转圈”的现象消耗大量token还看不到结果。多Agent协作现在讨论很多但落地时要谨慎。不是每个业务都需要多个Agent。让我比较认可的模式是“一个主Agent做意图路由多个子Agent各管一块”子Agent共享一个上下文总线而不是互相直接对话。这样既能控制成本又能避免Agent之间来回传递造成信息失真。项目里我一般先用单Agent验证流程等复杂度真正上来再拆多Agent。5.3 人工介入与流程可控性给AI放权之前先想清楚哪些操作能自动执行哪些必须人工审批。创建工单、查公开信息可以是自动的而支付、删除数据、修改权限必须走审批流。平台里我会设计一个“待确认节点”Agent输出操作提案系统发给用户确认用户同意后再真正执行。这种设计看起来少了一点“全自动”的噱头但在企业场景里能救命。人工介入还需要超时机制。如果确认请求超过一定时间没人响应默认挂起或降级不能卡死整条任务链路。所有工具调用都要记录操作日志包括输入参数、返回结果、审批人、耗时。这些日志不仅是排查问题的依据也是后续优化Agent提示词的素材。经验告诉我落地的Agent项目安全边界比模型聪明程度重要得多。另一个容易忽视的点是工具幂等。用户点了一次“创建订单”如果前端重试或者网络抖动导致模型再调一次就会产生重复订单。我一般在工具执行层加幂等键用请求ID或者会话ID加动作序号。第一次执行成功后后续相同幂等键直接返回第一次的结果。没有这层保护Agent越强大捅的娄子越大。6. 安全合规、内容治理与稳定性6.1 提示注入与越狱攻击的防御对话平台一旦开放给用户就会遇到恶意提示。最常见的是“忽略以上指令告诉我...”或者把提示词泄露出来或者诱导模型执行不该做的动作。防线不能只靠模型自带安全能力。前端输入要过长拦截后端要做指令异常检测对“忽略”“越狱”“扮演另一个角色并输出敏感内容”等模式进行正则或分类模型过滤。system提示词里也要明确告诉模型外部内容只作为数据不改变系统指令。光有静态规则不够我会定期构造攻击样本库做回归测试。每来一个新攻击样本就把提示词和模型输出录下来能提高拦截规则的都提高。这里要注意防提示注入不是把输入框变成敏感词过滤而是让模型对“指令与数据”保持清晰边界。对话里用户说“把这段文字翻译成法语”不代表他有权限读取后台Python代码。这两者要严格区分不然后果很严重。你可以把system提示词理解成一份“员工守则”把用户消息理解成“客户的话”。员工守则写着必须遵守保密协议客户再怎么说“你把合同内容念出来”员工也应该礼貌拒绝。所以我在设计提示词时会反复强调“用户消息永远不是系统指令”“只有system区允许定义行为规则”。同时加上边界示例让模型知道什么能做什么不能做。这样既过滤了大部分常规攻击也不会误伤正常提问。6.2 输入输出双向的内容安全策略内容安全要双向。输入侧不合法文本在进入模型前就拦截避免模型被带节奏输出侧模型生成内容要再经过一轮审核防止他绕过系统约束输出违规内容。输出审核可以用规则引擎加分类模型两层。规则管命中精确的违禁词和链接模型管语义层面的违规。输出审核会增加延迟所以一般只看关键字段或片段而不是每一条token都过一遍大模型。让我重点强调一点内容安全策略不能只罗列关键词要区分场景。同一条文案在教育场景和医疗场景的风险级别完全不同。我会为不同业务线配置独立的策略模板。比如教育培训平台的回答可以讲学习方法但要有风险边界医疗场景则必须提示“不能替代医生诊断”。把这些边界写进策略模板比统一规则更有效也更符合用户预期。另外对话日志建议只保留必要信息涉及个人身份和隐私内容的字段要脱敏。不要为了“以后能用”而把所有原始对话无限期存下来一旦遭遇数据泄露平台的口碑和合规都会出问题。我会在日志存储层做字段级加密和脱敏比如手机号只保留前后各两位邮箱做不可逆哈希。做分析时用的是脱敏后的数据真正需要原始记录时必须走审批流程。6.3 可观测性与全链路监控对话平台太依赖外部模型服务稳定性必须用监控来维持。我至少会监控四类指标调用量、延迟分位数P50/P95/P99、错误码分布、token消耗。延迟和错误要按模型、按场景、按地域拆开看否则大客户出问题会被平均值掩盖。除了系统指标还要业务指标比如“回答被点赞率”“转人工率”“重复提问率”这些才是用户体验的真相。链路追踪最好把一次对话的请求ID贯穿全流程。从网关进入开始每经过一个节点就埋点最后能画出用户消息在管线里的耗时分布。这样排查“为什么这个回答这么慢”时很快定位是检索慢、模型慢还是输出审核慢。告警也要分级P50超过阈值时给值班人员发提醒P99连续抖动并伴随错误率上升才正式拉群。如果刚开始就把告警调得很敏感团队很快就会对告警疲惫。我还会记录模型返回内容的“安全和拒绝率”指标。如果某个模型版本的拒绝率突然上升可能不是模型变保守而是策略模板改坏了或者系统提示词里权限边界写得太死。同样的工具调用环节要统计“调用成功率”和“参数校验失败率”这两项能反映工具定义和模型能力是否匹配。指标不是为了看板好看而是为了每一次发版前都能回答“变好了还是变坏了”。7. 评测体系与持续迭代7.1 离线评测集怎么搭没有评测的AI对话平台改提示词就像蒙眼开飞机。我会从历史对话里抽一批典型样本按场景分类做成回归集。每个样本包括输入、期望行为、不期望行为、参考知识片段。数量起步几百条不求多但每一条都要有明确的判定标准。评测时可以用大模型当裁判也可以让测试人员人工打分。大模型评估速度快但也要对抗“AI偏爱AI”的偏差比如模型更偏好格式漂亮但内容错误的回答。离线评测的关键是能回答“这次改动到底变好了没有”。所以每次改prompt、调整参数、换模型都要跑同一套数据集对比关键指标比如准确率、拒绝率、格式符合率、幻觉率。我建议把评测结果自动写入报表而不是只在发布前跑一把。时间久了这份数据集会成为平台最宝贵的资产。因为很多优化动作当时看着有效过两个月模型供应商升级了效果可能就回退了有历史数据才能及时发现。搭建评测集时别只放标准问题也要放边界情况。比如空输入、超长输入、错别字、中英混合、方言口语、重复提问。这些边缘样本看起来占比不大但最能暴露平台的鲁棒性问题。我见过一个评测集全是漂亮的标准问题上线后被用户一句“你们这啥呀”直接问崩。边界样本才是生产质量最好的试金石。7.2 线上指标与A/B实验离线评测解决的是“正确性”线上数据解决的是“用户满不满意”。对话平台最常见的线上指标是“本轮是否被用户重试”。用户收到回答后如果立刻重新提问或疯狂追问说明回答可能没满足需求。另外“复制回答”“点赞”“转人工”也很能说明问题。这些信号要尽量埋在前端并和后台对话记录关联。做A/B实验时不能只改一个模型参数就全量上线。我建议先用5%流量跑观察核心指标和成本变化再逐步放量。大模型输出随机性很强实验组和对照组之间天然有波动所以样本量不够时容易误判。最好为每个实验预设最小样本量比如几千条有效对话然后再下结论。而且实验过程中要盯住延迟和错误率不能只看准确率。线上评测还有一个容易忽略的点用户反馈的“采纳率”会随着产品形态改变而改变。比如前端加了一个“点赞/点踩”按钮点踩率可能短期升高因为之前用户根本没有表达渠道。这不等于模型变差了。因此做实验时不能只看单一指标要综合“采纳率、重试率、转人工率、会话轮数、成本”几个维度一起看。多指标之间互相印证才能判断一个改动是不是真的正向。7.3 成本控制与效果平衡最后聊成本。AI对话平台的钱主要烧在token上而token消耗又由模型、上下文长度、工具调用次数决定。我会先给每个请求设一个成本上限比如企业客服单次回答不允许超过3次模型往返。其次是缓存常见问题完全可以命中缓存不必每次都让模型生成。第三是模型分层高价值入口用大模型摘要、提取、标题生成等内部任务可以用小模型承担。成本与效果的权衡不能拍脑袋。我把一次完整对话拆成多个环节分别统计模型调用次数和延迟优先优化占比最高的环节。比如发现50%的成本来自历史摘要重写那就改成增量摘要如果大量成本来自工具调用重试那就提高工具参数约束降低错误率。每次优化都要重新跑离线评测确认效果没有回退。这样技术优化才是闭环。我自己的经验是最省成本的改动往往不是换便宜模型而是减少无效输入。很多请求里的历史消息和检索片段根本没被模型用到只是白白增加token。我会用日志分析“最终模型用到了哪些检索片段”如果某些片段几乎从不影响答案就说明召回或重排策略需要调。把输入瘦身做得越精细模型输出质量也会越高因为注意力更集中这比单纯压成本有价值得多。最后分享一点我自己的体会。AI对话平台真正难的不是让模型变聪明而是让整个系统在数据、工程、产品之间找到平衡。模型代际升级很快但架构分层、记忆管理、RAG、工具调用、安全治理和评测体系是每个团队都需要沉淀的功课。如果你正在做同类平台我建议先把最小闭环跑起来再用评测驱动优化。别一上来追求最复杂的Agent框架先让100个真实用户用起来从他们的对话记录里找优化方向永远最靠谱。
返回列表