
1. 项目拆解为什么“算力分布”会成为一个问题先说结论多智能体系统落地时最头疼的不是模型能力不够而是不知道每个请求该花多少算力。你可以在单机环境里把一个70B模型跑得很溜但一旦把它接入真实业务——比如一个每天要处理十万次请求的自动化运营系统——问题立刻变成另一个形状每一次请求到底该用1B的小模型答还是8B的中等模型还是70B甚至更大规模的稠密模型这背后不只是钱的事还牵扯响应时延、并发上限、系统复杂度和可维护性。这不是“把模型堆上去就能解决”的工程问题本质上是一个信息分配问题。用大白话解释信息论回答的核心命题是“一条消息里到底有多少确定性的信息又有多少冗余”。而智能体系统面临的恰恰是同样的问题——一个用户请求里有多少部分可以被规则或小模型消化掉有多少部分必须交给大模型深度推理又有多少部分是无论如何都无法精准压缩、必须消耗高算力的“高信息量片段”。我最早接触这个方向是在做一套跨平台的自动化工作流系统。当时我们有十几套不同规格的模型在后台排队调度逻辑基本靠经验和拍脑袋。业务高峰期小请求占着大算力重推理任务反而在队列里饿死整个系统的单位成本比同行高出一个数量级。我前前后后试过按关键词路由、按会话历史路由、按用户等级路由都不够稳。直到我把问题换了一个框架——不再问“该用哪个模型”而是问“这个请求在数学上需要传递多少信息”整个设计的思路才一下子通了。这篇文章就是我基于实际项目“智能体的模型组合和算力分布基于信息论的终极答案”的完整复盘。内容覆盖信息论建模思路、模型组合的设计原则、算力调度的实操步骤以及上生产环境时常见的坑。如果你在搭建多智能体系统或者已经遇到了“模型一堆但不知道怎么编排”的问题这篇内容可以直接当参考方案用。2. 核心设计思路从“模型选择”到“信息量匹配”2.1 旧的方案为什么不够用过去的智能体系统模型路由通常是这样的一个请求进来先做意图分类再按分类结果调用对应的模型。比如用户问天气就走轻量API用户写代码就走大模型的推理接口。这套逻辑在入口简单、请求类型固化的时候是够用的但到了多智能体场景事情就没这么简单。多智能体系统里的请求往往是动态链式的。一个任务会拆解成多个子任务每个子任务再按需调用不同的工具和模型中间还会穿插子智能体之间的消息传递。这意味着模型路由的决策点不只有一个而是分布在执行链的每一个节点上。你再想用“入口分类一次定终身”的老办法基本是行不通的。另一个现实问题是成本。今天的模型服务大多按token计费大模型的输入输出单价远高于中小模型。如果每一个节点都默认调用最强的模型一次复杂任务的成本很容易膨胀到令人肉疼的程度。而如果偏向小模型又会在关键推理环节上出现质量滑坡。这个取舍不能靠感性的“这个请求看起来很难”来决定需要一个可计算、可比较的量化指标。我当时的突破口是把信息论里的“信息量”作为统一的度量尺度。无论是一个简单查询、一个多步推理、一段长文本摘要还是一个需要调用多个工具的任务都可以用它们各自携带的信息量映射到一个可比较的数值区间里。有了这个数值模型组合和算力分布的问题就变成了一个带约束的优化问题——在满足质量要求的前提下寻找算力成本最低的分配方案。用信息论术语来定义设一个任务 T 在完成目标 Y 时需要的信息量为 I(T;Y)。一个好的分配方案就是要让分配给该任务的模型复杂度 M 对应的信息容量 C(M)尽量逼近 I(T;Y) 的分布既不能出现能力过剩也不能出现信息断裂。提示这里说的“信息容量”不是单纯指模型参数量而是指模型在单位时间内可有效处理的互信息量。一个7B模型如果擅长处理结构化的日志解析任务它在那个任务上的有效信息容量可能比一个70B通用模型还高。所以信息量匹配的核心是“任务-模型”的专项匹配而不仅是规模匹配。2.2 信息论三件套熵、互信息、率失真实操之前先把要用到的三个信息论概念理顺一下不然下面几步你没法照着算。不需要你完整学过信息论课程能理解它们的直觉含义就够了。**第一件套熵Entropy/条件熵。**熵度量的是一个系统的不确定程度。任务是“用户说了‘帮我订明天早上九点的会议室’”这句话在你的意图体系里的熵是低的因为意图清晰、参数齐全。但“帮我安排一下明天的日程”这句话的熵就高很多因为里面藏着多个可能的动作——可能订会议室可能约人可能要延后某个任务。在智能体场景里我们通常用条件熵 H(动作|输入) 来表示“看完输入的文本后动作空间里还剩多少不确定性”。熵越高代表这个请求越需要大模型介入。**第二件套互信息Mutual Information。**互信息 I(X;Y) 告诉你“观察 X 这件事对降低 Y 的不确定性贡献了多少信息”。在多智能体编排里我们关心的不是单个任务的信息量而是“模型执行完一个子任务后对后续决策消除了多少不确定性”。如果模型A执行完某个步骤后后续的步骤已经可以被规则模板覆盖——那模型A的算力就花得值。如果它执行完了后面的步骤还是跟没做一样充满变数——那说明模型A的容量不足它没能捕获该捕获的信息。互信息的计算可以这样理解一个路由决策系统里路由特征 Z 对最终答案质量 Q 的互信息 I(Z;Q) 越高说明路由特征选得越好。我用过的一个落地式子是这样的I(Z;Q) H(Q) - H(Q|Z)H(Q) 是不做任何路由时答案质量的不确定程度。H(Q|Z) 是做完路由后答案质量仍然存留的不确定程度。两者之差就是路由信息带来的质量增益。理想情况下我们要选的不是最强的模型而是让 H(Q|Z) 尽量小的路由特征和模型组合。**第三件套率失真理论Rate-Distortion Theory。**这是整个方案里面最实用的一个工具。率失真理论研究的问题是在允许一定失真的前提下最多能把信息压缩到什么程度。放到智能体场景里就是“在保证答案可接受的前提下最多能用多小的模型来回答”。每个模型都有自己的率失真曲线——大模型在同样失真限制下能处理更多信息但费算力小模型省算力但失真高。率失真曲线让我们可以在“算力-质量”平面上画出所有模型组合的可行域然后在这个可行域里求最优解。我就直接结合一个算例来展开大家比较容易代入。某次我在设计一个客服智能体子模块时把手头的模型画成三档1B模型、8B模型、70B模型。对同一批压测请求它们分别测出失真率错误/不完整回答的比例是 0.2、0.05、0.02。假设每个请求的语义熵大约是 1.5 比特这个数值来自意图分类器的实测熵不是拍脑袋那么可以算一下如果全用 1B 模型总失真 0.2成本最低但质量不可接受如果全用 70B 模型总失真 0.02但成本是爆炸级的一个可行的方案是用“用户情感极性意图复杂度阈值”先把八成简单请求分流给 1B剩下的两成里再按条件熵大小分给 8B 和 70B最终整体失真能控制在 0.04 左右而算力成本只有全用 70B 时的三分之一。这就是信息论给出的答案不是“哪个模型最强就用哪个”而是“在失真约束下找到成本最低的模型组合”。这也是智能体算力分配的理解基础。2.3 模型组合不是堆模型是搭“信息处理流水线”模型组合这件事踩过最深的坑就是以为把不同规模模型都接上就算“组合”了。实际上如果没有清晰的信息路径设计多模型并联纯粹是把钱烧给基础设施提供商。我在这套方案里用了“信息流水线”的架构来组织模型组合。一个请求进入系统先经过极轻量的解析层可以是规则也可以是一个极小的NLP工具做一次信息分诊判断信息密度最高的部分在哪里。随后进入路由——根据分诊结果决定是直接返回还是调用小模型做抽取或者调用大模型做推理或者进入一个由多个模型并行工作的“推理班组”。注意这里的“班组”跟并行不是一个意思。班组是多模型协作的模式比如一个模型负责生成方案A另一个模型负责生成方案B第三个模型做方案对比和择优。这种编排方式下“组合”的重心不在于每个模型的参数量而在于它们之间交换的信息摘要是否完整、无损耗地传递给了决策环节。我在某次做内容生产类的智能体系统时就用了一套“抽取小模型1B 长文总结模型8B 关键决策模型70B”的三层流水线。其中抽取模型负责任务文档里的要素提取总结模型负责把长对话压缩成结构化摘要只有最后需要做深度判断的环节才动用70B模型。这套流水线的实测结果是70B模型的调用量占总请求数的6%但整体输出质量与全70B方案基本持平。信息论的解读是抽取和总结环节已经消除了大部分无关信息到达决策模型的请求已经是一个“低熵、聚焦”的状态因此70B模型不需要处理原始的全部信息规模优势可以集中在最关键的推理步骤上。如果你也打算搭类似流水线有几个心得值得提前分享第一不要让小模型直接输出最终业务答案。让它们做预处理和摘要把信息“提纯”后再交给上层模型小模型犯错的空间就小多了。第二要监控层与层之间的“信息损耗率”。用下一层的输入摘要去反推上一层是否遗漏了关键字段一旦发现某个字段经常在小模型摘要里消失就说明这一层的信息瓶颈卡住了。第三流水线不是越深越好。每多一层就多一次转写误差和一次时延开销。我在测试中试过五层流水线效果不如三层原因是中间模型的转写误差被逐级放大。3. 核心原理信息论视角下的智能体优化3.1 用互信息设计路由信息瓶颈方法信息瓶颈方法Information Bottleneck是这里最核心的模型组合设计理论它的思想是在压缩输入信息的同时尽量保留与目标任务相关的信息。放到智能体路由场景形式化目标可以写作L H(Z|X) β · I(Z;X) - γ · I(Z;Y)其中 X 是原始输入Z 是压缩后的路由特征Y 是质量标签。这个式子表达了三重权衡压缩输入第一项、保留输入信息第二项、最大化与任务目标的相关性第三项。β 和 γ 是调节系数在实操里可以理解为“你多在意成本”和“你多在意质量”的旋钮。为什么说这一项非常重要因为很多路由算法只考虑了“输入特征与目标的相关性”却没有约束“路由特征本身的冗余度”。结果就是路由模型学会了一堆表面关联一旦输入风格变了路由准确率就崩。信息瓶颈方法的优势在于它在设计之初就把“压缩”写进了目标函数迫使路由学习到的特征必须是精华而非噪音。我实现的简化版本是一个入门友好的方案先用问句分类模型把用户请求转成一串主题标签再用一个标量分数表示“任务复杂度”最后用路由规则基于这两个信息做分流。训练路由规则时不是追求分类准确率而是追求“在不同复杂度分布下整体损失最小”。比如定价一个分类错误把一个简单请求丢给大模型是浪费把一个复杂请求丢给小模型是质量事故。浪费和质量事故不能等同看待前者最多亏钱后者会丢客户。这个不对称的损失结构在机器学习里叫“不平衡代价”它在信息论框架里表现为一个信道编码问题——我们要设计的路由规则等价于在非对称信道下找最优编码表。3.2 用率失真曲线指导算力分配率失真理论在算力分配上的用法很直接先测出每个模型的“失真-算力”函数再在总算力约束下求解最优分配比例。我参考的建模思路是这样的把每个模型视为一个信息处理通道输入一个任务流输出处理后的结果。该通道的失真率 D 与单位算力消耗 C 存在一个单调递减的关系。不同模型有不同的“效率曲线”——有的模型提升单位算力带来的失真下降很快高性价比区间在前段有的模型需要烧很多算力才能换一点质量提升性价比递减。这里要重点区分两种失真形态。在小模型上失真往往集中体现在“信息丢失”比如漏掉了用户需求中的某个关键条件而在大模型上失真主要表现为“幻觉注入”也就是生成了原文没有的额外内容。这两者不是同一种错误修正方式也完全不同。小模型的漏信息可以通过增加提示词约束或叠加一次校验抽回来而大模型的幻觉更棘手通常需要另一层事实核查模型去抑制。所以在同一套率失真框架下我会给小模型和大模型分别记录“漏报率”和“虚报率”而不是混成一个总错误率。这个细节在调优阶段很重要否则你很可能发现总错误率没变错误的性质却从“漏条件”变成了“胡说八道”体验截然不同。实际操作中我做了一次“每千次请求算力消耗”的基线测试。假设三个模型分别承担 30%、60%、10% 的流量算力成本基数为 1.0。之后逐步调整权重用线上的质量反馈指标来评估失真。测试结果是把流量比例调整为 50%、40%、10% 时算力成本反而下降了约 22%而质量反馈只下降了 1.3%。这背后的原因是原先 30% 的简单请求里有一大半被误交给了中等模型中等模型处理简单任务时质量并没有显著提升但单位成本却翻了好几倍。这个发现让我形成了现在的分配原则先做难度分布分析再定模型组合而不是反过来。难度分布分析的实操方法不复杂。取一段时间内的请求日志人工标注或者用代理模型的分数给每个请求一个“信息量复杂度”标签画出分布直方图。通常你会看到一个长尾分布六成请求很低复杂度三成中等一成较高。率失真视角下答案很清晰——低复杂度段交给最小可用模型中复杂度段交给中等模型只有长尾尾巴上的高复杂度请求需要动用最大模型。3.3 一个“信息熵”驱动的模型选择算例这里放一个完整的算例让你照着就能复现。假设某智能问答系统有三类模型可用M11B、M28B、M370B。处理一千个典型请求测得的统计结果如下表模型单位算力成本失真率错误率适用信息量区间M11 倍0.18低小于等于1比特M24 倍0.04中1到3比特M310 倍0.01高3比特以上请求的信息量分布如下低复杂度 60%中复杂度 30%高复杂度 10%。方案A保守方案全部走 M2。总成本 4 倍单位 × 1000 4000总失真 0.04 × 1000 40 个错误请求。方案B信息量匹配方案低复杂度走 M1中复杂度走 M2高复杂度走 M3。总成本 1×600 4×300 10×100 600 1200 1000 2800总失真 0.18×600 0.04×300 0.01×100 108 12 1 121 个错误请求。表面上看方案A失真更低但注意方案B的失真主要来自低复杂度段而那部分的错误往往是一些无关痛痒的措辞问题几乎不影响用户核心体验。这里就涉及一个率失真里的关键思维不同位置的失真权重不应该相同。所以在实际业务里我通常会给不同复杂度段加“业务损失权重”低复杂度段的错误可能是 1 分损失高复杂度段的错误是 10 分损失。加权之后方案A的加权损失 40 × 10 400方案B的加权损失 108×1 12×5 1×10 178。方案B反而更优。这就是“信息论视角”的优势——它逼你把“错误”分解为“在什么信息状态下发生的错误”而不是笼统地统计错误率。很多系统上线后出现“模型选择偏差导致体验不均”的案例根本原因就是把所有请求混在一起算质量指标。4. 实操过程实现一套“信息驱动”的智能体路由系统4.1 搭建观测层先能量化才能优化一切优化的前提是你能度量当前系统的信息流。我在搭建这套路由系统时第一步不是写路由规则而是建了一条完整的观测链路。观测层需要采集的信息包括三类请求信息量特征查询长度、意图类别、携带的实体数量、上下文轮数、是否含附件、是否跨领域。这些都是低成本的代理特征用来近似请求的信息熵。决策信息每个请求实际落在了哪个模型上、输入了多少token、输出了多少token、耗时多长。结果信息用户侧的隐性反馈是否复制答案、是否追问、是否点击了下拉建议和显性反馈点赞、点踩、纠错。这三类信息汇合后你会得到一个类似于“信息流账单”的动态视图。哪类请求消耗了超出必要水平的算力哪个模型的产出长期没有产生正反馈一眼就看得出来。比如你发现“查快递”意图的请求平均消耗了 2000 个输出 token但用户平均只看前 50 个字就关闭了页面那这个路径上就存在明显的算力浪费和信息过度生产。观测层还承担一个任务建立“信息量打分”模型。不用一开始就用很复杂的模型线性回归或者一个轻量梯度提升树就够。特征用上面列出的请求信息量特征标签用“该请求实际需要的最小模型档位”这个由人工抽检标注。实测下来打分模型比直接人工设定规则要稳得多因为它可以捕捉特征之间非线性的交互效应。比如“短文本高情感强度”可能是一个高复杂度请求而“长文本重复内容”反而是低复杂度。4.2 核心实现三段式信息路由路由系统的核心代码不算复杂但每一步都要踩稳。我把设计分成三段式理解段Agent接收请求、规划段内部信息处理分配、执行段路由到指定的模型组合。理解段的工作是解析出请求的“要素三元组”目标实体、动作意图、约束条件。比如“帮我把上周的项目报告发给产品经理并抄送总监”解析出目标实体是“项目报告”动作意图是“发送抄送”约束条件是“上周的版本接收人分别是产品经理和总监”。规划段根据这个三元组计算两个关键指标。第一个是“任务信息量”用打分模型估算一个数值比如 0 到 10。第二个是“上下文依赖度”这个请求是否需要参考历史会话内容才能正确执行。上下文依赖度很高时要优先保证路由到一个具备长上下文窗口的模型而不仅是“大”模型。执行段的规则大概是这样的信息量小于等于 3 且无上下文依赖走 M1小模型直接用规则模板生成回复。信息量在 4 到 7 之间且上下文依赖度中走 M2并注入历史摘要作为上下文。信息量大于等于 8 或需要深度推理走 M3且启用思维链提示进行多步推理。这个规则看起来简单但跟传统“关键词路由”的最大区别在于它不是一个静态规则表而是基于“信息量”的动态映射。同一个意图今天的请求信息量是 2被路由到小模型明天遇到一个问法非常模糊、歧义很大的同类请求信息量涨到 7就会被路由到中大型模型。系统不再用意图类别决定算力而是用“这一次请求的不确定性存量”决定算力。这是信息论思路相对意图分类的最大优势应对开放式问题Open Domain Questions时依然稳定。4.3 算力分布的计算手记算力分布不能靠想象我通常用“每千请求单位成本”来折算。某次实际项目中的原记录大致如下业务场景是某高校的校园信息助手高峰期每天约 20 万次请求。流量构成是课程咨询 35%活动报名 15%图书馆服务 20%校园卡事务 15%其他开放域闲聊 15%。最初上线时全走 M3单日成本约 450 单位。使用信息量打分路由后流量分布变成M1 承担 47%M2 承担 35%M3 承担 18%。单日成本下降到约 190 单位成本降幅约 58%。质量侧人工抽检 500 条会话给分从 4.2 微降到 4.1基本可以视为同一水平。我还针对 M3 的流量占比做过一次专项压测观察如果强行把 M3 的流量占比压到 10% 以下整体会话质量会不会崩塌。结果发现M3 占比降到 12% 时质量还稳在 4.08降到 8% 时质量掉到了 3.85主要崩在“开放域闲聊”分支——中模型处理无边界问题时开始出现答非所问。我基于这个测试把 M3 占比的警戒线设定在 10% 附近低于这个值就要去检查是不是路由打分模型对复杂问题的识别出现了偏移。这段实操过程的核心心得是算力分布不是一次性配置而是跟着业务波动持续调整的过程。考试周到来时课程咨询的信息量分布整体抬高M2/M3 的流量占比就应该相应上调假期到来时则反之。所以我在系统里加了一个“每周自动检测分布漂移”的任务对比过去 7 天的信息量分布跟过去 30 天的基线分布一旦差异超过 5%就触发人工复检。4.4 实操中的“3W问答”预测法前面讲的都是宏观框架这里分享一个可以直接抄走的微观技巧我叫它“3W问答预测法”。在决定一个请求走哪个模型前先让路由层做三个预测What做什么预测这个请求希望完成的具体动作类型。动作类型越清晰信息量越低。Where在哪里做预测这个请求需要调用的领域/工具范围。跨领域越多信息量越高。Whether是否成功预测当前信息条件下小模型能否成功完成该请求。这里直接用一个简单的置信度分值来度量低于 0.5 就升级到大模型。这个方法的价值在于把“信息量”从一个抽象的统计量变成了工程师可理解和可干预的具体问题。排查路由决策问题时不需要去看抽象的熵值直接看三个预测结果就能定位。比如某次“查课表”请求被路由到了 M3一查是 Where 预测飘了把“教务系统”猜成了“多领域查询”导致信息量虚高。修正了 Where 的领域分类权重后这类误路由立刻消失。3W 方法在我后来接手的几个外部项目中也被复用过效果普遍比“直接训练端到端路由模型”更好。原因也很信息论端到端模型往往在项目初期没有足够高质量的标注数据容易过拟合到小样本的噪音上而 3W 方法把路由问题分解成三个低维度的子问题每一个都更容易用少量数据做出可靠的预测这本质上就是把一个大模型决策拆解成三个小模型决策跟智能体系统擅长的任务分解是同构的。5. 关键扩展异构算力、缓存与稀疏化5.1 异构硬件的“信息感知”调度模型组合不只是模型选择还包含算力硬件的组合。同一个模型部署在旗舰显卡、主流游戏卡或者云上的共享实例上单位算力成本可以差出一个数量级。异构调度的核心不是“哪块卡快就用哪块”而是“哪块卡的任务画像匹配当前请求的信息特征”。我用过一个简单的模型为每个部署实例计算三个指标——带宽利用率、内存带宽余量、延迟分位数。然后把请求的信息量特征映射到这三个指标上。低延迟敏感型请求用户打字等回复优先分流到内存带宽高的实例高吞吐型请求批量处理文档优先分流到可以牺牲一点延迟但单位成本更低的实例。这套调度策略在批处理场景里效果尤其明显。某次跑一个大规模文档分类任务数据量约 8 万篇文档如果全部走在线服务预计耗时 26 小时、成本 350 单位。切换到批量异构队列后把文档按长度和复杂度分桶短文档走 CPU 推理中长度走量化后的中等模型长文档走 GPU 高精度模型最终耗时压到 7 小时、成本 190 单位。质量侧抽检基本持平。5.2 给缓存加“信息指纹”不只是命中率缓存是省算力的大杀器但如果只是按文本精确匹配来缓存效果有限。你见过太多用户表达“明天的课表发我一下”、“明天上什么课”、“查一下明天课程”——这些本质上携带的是同一个信息。文本不同但信息量等价。按文本匹配三条请求全部落空三个都去调模型算力浪费了三份。我的做法是给请求建立语义级的信息指纹。用嵌入模型把请求编码成向量然后做近似最近邻检索找到历史上最相似的一个请求及其答案。相似度超过阈值时直接复用低于阈值时才触发模型调用。信息指纹缓存有两个关键的踩坑点提前讲一下第一嵌入模型的输出会受文本风格干扰。同一个意思的文本如果表述风格相差很大比如口语 vs 书面语向量距离可能被拉开。所以我在入缓存前会先做一次轻量归一化把口语缩略词、语气词、时态变化做一个预归一化处理让向量空间更贴合语义相似度。第二缓存不能只存回答结果还要存“信息范围标签”。比如一个回答里包含了三个信息点如果用户只问了其中两个第三个信息点属于“超量信息”下一位用户如果只希望得到一个更聚焦的答案直接复用整段就产生了信息过载。我的方案是把长回答拆成若干最小信息单元答案片段缓存以信息单元为粒度存取回答时按需拼接。这个设计思路来自信息论里的“信源编码”——在编码时就把信息拆成最小单元而不是把整个消息当成一个块。5.3 模型稀疏化与专家采样的信息冗余利用MoE混合专家模型类的模型天然适合智能体场景因为它的稀疏激活特性可以让每层只激活与输入最相关的专家通道从而在推理时省掉大量无关计算。但无脑上 MoE 不一定是好事。部署 MoE 模型时关键在于“路由倾向”的稳定性。MoE 模型在训练时学会了把不同类型的 token 交给不同专家这意味着如果你在推理阶段给它输入的上下文分布跟训练阶段差异过大它的专家选择就会不稳定导致某些专家过载而另一些专家闲置。这在智能体系统里很常见——智能体请求里夹杂着工具调用的结构化格式、代码片段、自然语言这种混合输入对 MoE 的专家选择是一个很大的考验。我的实操经验是在 MoE 模型前面加一个“输入类型预分类层”先把请求分成“纯文本”“代码混合”“结构化数据”三种类型然后按类型设置上下文模板让输入分布更加贴近模型的训练分布。这样做的收益很直接某次在一台 GPU 的虚拟化环境里对比测试加预分类层后MoE 模型的单 batch 推理速度提升了约 30%主要原因是专家路由的稳定性上来了空转计算明显减少。稀疏化则更简单。如果你的场景里很多请求只用到了模型的一部分能力那可以考虑把一个大模型剪枝成几个专注不同能力的小模型或者用蒸馏的方式训练几个专项模型。但这样做的前提是请求的模块化程度足够高否则剪枝后的模型在跨场景泛化时很容易出现能力断裂。我建议在剪枝前先做一次“能力相关矩阵”统计看哪几类请求总是同时出现。如果“摘要生成”和“关键词抽取”频繁同时出现在请求里把它们合并成一个模型会比拆开更合理。6. 质量与风险控制不要被信息论忽悠6.1 三重“信息保障”兜底设计只靠信息论模型做路由还有一个显著风险当打分模型对某个请求的信息量估算明显低于实际水平时系统会错误地把复杂任务发给小模型导致质量事故。为了化解这个风险我设计了一套三层信息保障机制。第一层是“置信度门槛”。路由打分模型的预测结果里如果对某个请求的信息量估算处于阈值边界附近比如 6.5 到 7.5 之间而 7 是升级阈值强制升级到更高档位的模型。因为边界区间的估算误差最大此时宁可多花一点算力也要避免因估算偏低造成质量滑坡。第二层是“答案可校验性回路”。对每个路由到小模型的请求记录它的上下文信息量特征。当小模型返回答案时用一个轻量级的校验器检查答案是否覆盖了请求里显式出现的关键要素。比如用户问“明天下午三点的会议取消了没有”校验器就要检查答案里是否同时出现了“明天下午三点”“会议”“取消”这几个要素。缺了任何一个就触发二次调用升级到中大型模型重新回答。第三层是“用户行为负反馈熔断”。如果发现某个用户连续多次对答案显式表达不满点踩、追问“不是这个意思”之类把该用户当前会话内的所有后续请求强制升级到高配模型。这套机制用的逻辑是当一个会话已经出现质量不信任时再用小模型节省算力已经不存在性价比——每一次低质量回答都在加剧用户的流失风险。6.2 面向不确定性的多智能体编排策略多智能体系统的编排跟单体智能体系统的最大区别在于子智能体之间的信息传递引入了大量不确定性。子智能体执行完任务返回的结果可能是一个 JSON可能是一段自由文本还可能是嵌套的工具调用记录。这些信息在传递到下一个智能体时如果不做统一的结构化很容易出现“信息损耗”或“语义漂移”。我在系统里做了一个“信息传递契约”。每个子智能体的输出必须遵循约定的Schema包含三块执行摘要、结构化数据、置信区间。执行摘要是一段不超过 200 字的自然语言描述供下游智能体快速理解结构化数据是正式的机器可读结果供工具链调用置信区间是这个子智能体对自己输出可靠性的评估。下游智能体在编排时如果发现来自上游的置信区间低于 0.6需要主动触发一次“澄清式追问”而不是硬着头皮在低质量信息上继续推理。这套“信息传递契约”的灵感也来自信息论——它本质上是一种信道编码。执行摘要是传输层保证通道的容量结构化数据是数据层保证内容的精度置信区间是反馈层保证接收端知道信道的枯噪比。没有这套契约子智能体之间就是无编码的原始信道信息损耗不可控有了契约损耗可度量、可补偿。6.3 采样抖动与长度控制的隐性成本智能体系统的算力成本很大一块藏在“输出长度”里。同样的模型输出 500 个 token 和输出 1500 个 token成本差三倍但用户感受到的质量差异可能远没有三倍。更麻烦的是模型在采样时存在随机性同一问题可能这次输出 500 词下次输出 1500 词这种抖动会让你很难做成本预算。我把“输出长度控制”列为算力分布的一部分并引入了两个参数max_tokens 和 min_rel_tokens。max_tokens 是硬性上限防止模型失控输出长文min_rel_tokens 是相对下限设置为“请求信息量估算的 1.5 倍”防止系统因为过度压缩而产出过短的无效答案。这两个参数在路由分发时按请求级传入而不是在模型服务端全局设置这样既保证了省算力又不牺牲关键请求的完整性。注意min_rel_tokens 如果设得太低会出现“有答案但没框架”的现象用户明明拿到了字面正确的回答却发现关键解释缺失。我早期调试时在这个坑上栽过。建议在设置前先抽样跑 50 个样本对比一下人工评估“答案完整性”得分再定参数值。采样温度参数也非常值得控制。高温度会增加输出的多样性和发散度但也会拉长输出、增加 token 消耗。在信息量较低的请求上我会把温度设到 0.2 以下让输出更可控、更短在信息量高的创意生成类请求上保持 0.8 左右的温度这时长度增加是值得的因为用户要的就是发散性。分温度管理比全球一个温度能省 10% 到 15% 的 token 消耗质量还不降。7. 实验复盘跑通整套方案的收获7.1 一套可参考的测试协议跑通这套方案的关键在于测试协议的设计。我当时的测试分三步第一步是离线路由正确性测试。取过去 30 天的请求日志用人工标注“最小必要模型档位”作为黄金标签对比路由系统的预测档位。这里要看的不是准确率而是“低估率”——也就是系统把小模型错判给复杂请求的比例。因为低估是质量风险而高估只是成本浪费短期内后者可以容忍。第二步是线上影子流量对比。把新路由系统跟旧规则系统并行跑一段时间所有请求同时交给两套系统决策但不让新路由系统直接影响线上结果只记录它分别会怎么选。影子流量跑满 24 小时后用“虚拟分配”算一版成本对比同时人工抽检“如果按新方案分配回答质量会怎样”。这一步很关键它在零风险的情况下让你看到新方案的预期收益。第三步才是金丝雀发布。把 5% 的线上流量切到新路由系统运行 48 小时对比反馈指标和算力成本。确认稳定后再逐步放量到 50%。7.2 收益和代价的诚实复盘必须承认这套方案不是免费的午餐。它的主要代价有三块一是观测层的建设成本埋点、建日志、标注数据前期工作量不小二是运维复杂性上升多一套打分模型就意味着多一个运维对象模型漂移、数据分布变化都需要持续监控三是调试时间变长因为“信息量”是一个潜变量它不像“用户点击率”那样可以直接观测排查问题时需要多绕一层。但从投入产出比看我认为值得。在多个项目上这套信息驱动路由方案通常能在两到四周内让算力成本下降 40% 以上同时维持质量基本不降。而且它带来的一个额外收益是你会更了解自己的业务——因为你要持续追踪信息量分布、各档模型的失真曲线、错分样本的特征这些认知沉淀下来后后续做产品决策和容量规划都会轻松很多。7.3 我们踩过并值得你避开的坑最后盘点一下几个高频坑希望你能少走弯路。**坑一直接拿生成式大模型当路由打分器。**我们最早试过让一个 7B 模型直接对请求做“复杂度打分”结果发现它打分不稳定——同一个请求在不同温度下给出的分数波动很大而且容易受到请求文本长度的干扰。长文本不一定信息量大短文本也不一定简单。直接把打分任务交给生成式模型等于引入了一个新的不稳定源。后来我们改成专门的轻量打分模型输出单值回归稳定性和解释性都好了很多。这一条建议记牢。**坑二低估了“历史会话长度”对信息量的影响。**我试过一个方案用历史会话长度作为信息量特征。结果发现会话轮数超过 10 轮的请求信息量反而下降了——因为大部分信息已经在前面几轮被明确表达过了后面的轮次只是在重复确认。所以历史信息量要用“新增信息”来度量而不是累计信息。这个细节直接决定了路由的准确性后来我对历史特征做了“增量编码”处理只关注本轮新增实体和新增意图而不是把整个对话历史一股脑喂给打分模型。**坑三缓存命中率高但算力没降。**一开始我们很兴奋地看到缓存命中率达到了 35%以为省了一大笔钱结果一看算力账单几乎没变化。排查后发现命中的那些缓存请求原本就分给了小模型本来就不贵真正贵的大模型请求因为文本风格多变几乎打不中缓存。后来我们把缓存策略改成“信息指纹”并加上“按信息复杂度分配命中优先级”——优先缓存和优先匹配高复杂度请求算力消耗才开始真正下降。顺着这个思路我还把“语义缓存”与“路由决策”合并在了一起命中高复杂度缓存时跳过大模型并直接返回命中低复杂度缓存时仍然走小模型生成但是可以用缓存作为参考校验。这套打法效果很好推荐你优先试。**坑四智能体编排时把“模型能力”当成唯一变量。**多智能体系统里模型质量只占最终体验的一部分。工具调用的稳定性、上下文传递的完整性、编排逻辑的容错性往往对体验的影响比模型档位更大。有一次我们遇到一个智能体经常答错第一反应是换更大的模型结果问题照旧。后来一查是上游工具返回的 JSON 里某个字段被截断了导致下游模型拿到的信息本来就是残缺的。换模型没有任何意义因为模型根本没收到完整信息。信息论的视角在这里也有用先评估整条信息链路的完整度再决定要不要提升模型算力。8. 未来演进这套方案的扩展方向8.1 从“单次路由”到“学业轨迹规划”目前的方案解决的是“单次请求该用多大算力”的问题但智能体系统里还有一个更深层的问题——“一个用户在整个使用周期内如何逐步提升系统对他的服务效率”。这个方向可以叫“学业轨迹规划”这里借用这个词的空间隐喻指系统针对每个用户的长期服务路径设计。对于一个新用户由于不了解他的偏好和表达习惯系统需要多用大模型来探索他的需求边界随着交互轮次增加系统对他的信息画像越来越清楚可以逐步切换到更便宜的模型组合。这本质上是一个贝叶斯更新过程——用历史的交互信息来降低未来的不确定性。我在一个内测产品里尝试过这个思路根据用户的活跃度、历史请求复杂度分布、纠错频次把用户划分为“低不确定性”和“高不确定性”两类。低不确定性用户未来请求的约 70% 走小模型即可高不确定性用户则需要保持相当比例的大模型调用。两周的灰度测试里低不确定性组的算力成本下降了 35%体验指标却因为上下文记忆更准确而有所提升。这个方向我认为潜力很大适合做长期系统优化的人继续探下去。8.2 端侧小模型与云端大模型的“信息协同”另一个我很看好的方向是端侧与云端的协同。智能手机、边缘设备上的小模型无法承载复杂推理但它们有一个天然优势掌握本地上下文。本地模型知道用户当前在哪个页面、刚做过什么操作、网络状态如何——这些信息如果全部传到云端既费带宽又费算力且涉及隐私合规的成本。信息论给这个场景的解法是端侧模型负责“本地信息压缩”云端模型负责“压缩后信息的推理”。端侧把请求压缩成一个低熵的高语义摘要再传输到云端云端拿到的是一个精炼的高信息密度输入大模型推理的 token 消耗可以大大下降。同时云端返回的结果也可以先压缩成摘要传回端侧端侧负责展开成完整答案。这个“压缩-传输-展开”的通信模式本质上是信息论里信源编码和信道编码的结合。它也能显著降低时延——长文本不再需要全量上传传输的数据量可能只有原来的 20%响应速度的提升体感非常明显。8.3 自适应的动态体系让系统自己找平衡点长期来看手动调整路由阈值和模型分配比例不是长久之计。业务会变用户群会变模型服务商的价格也会变。一个稳健的“信息驱动智能体系统”应该有自适应调整的能力。我在路线规划里设想了这样的闭环系统持续监测各档模型的失真曲线和单位成本定期比如每周自动重算最优分配比例当检测到某个模型档位的失真曲线发生明显变化时自动触发“重新校准”流程当新的路由候选方案在影子流量里持续优于当前方案时自动推进金丝雀发布。这相当于把信息论优化方法嵌入到一个持续运行的反馈控制环里让系统自己去找当前业务条件下的最优平衡点。这套自适应体系里最核心的一环还是观测层的质量。因为你只有在失真曲线、算力消耗、信息量分布这些数据完全准确且足够及时的前提下自动决策才可信。数据不准自动化调整就是盲调越调越乱。所以我的建议是先把观测层做到 80 分再做自动化不要在一开始就把重心放到“全自动智能体”上那是本末倒置。9. 写在最后信息论给智能体工程带来的真正改变做工程的人通常不喜欢太抽象的理论但它不能只躺在纸面上。这套方案给我最大的启发并不是那几个公式本身而是它们提供了一种“反直觉”的视角面对复杂的智能体问题你的第一反应不应该是“用更强的模型硬解”而是先问“这个问题里到底有多少不确定性有哪些信息是可以被结构化压缩的哪些信息是必须原样保留的”换成实际项目里的体会以前每当线上效果出问题我下意识想到的就是“是不是模型不够强”。用了信息论框架之后我会先看“是不是信息在某个环节被损耗掉了是不是算力被浪费在了低信息量任务上”。这两个问题问完之后很多原先需要靠堆算力解决的问题都找到了用更优的信息流设计来化解的路径。如果你的系统也在模型组合与算力分布上纠结我建议你先做三件事把每类请求的信息量分布测出来把每个模型在你业务上的失真曲线画出来再把你的路由决策拆成可以量化的子问题。做完这三步真正的优化空间就会自动浮现。我个人在这套方案里最深的体会是信息论不会直接给你一个“终极答案”但它给了你一个衡量答案的尺子。它不会替你做决策但它让你的每一次决策都有据可依。这个价值在长周期的智能体系统优化里远比省下那 40% 的算力碎银更重要。