返回博客
调整 LIA 的模型,无需重启,也不会出现无效配置
技术4 分钟阅读

调整 LIA 的模型,无需重启,也不会出现无效配置

问题

在一个 LIA 实例上,有几十项任务要调用语言模型:理解你的请求、制定计划、回答、总结会议、写你的日记、准备通知。管理员必须能够更换其中某一项的模型,因为某个提供商涨价了、出了一个更新的模型,或者某项任务回答得不好。

如果这个更换要通过配置文件和重启来完成,人们就会犹豫要不要去做。如果它通过一个什么都接受的表单来完成,最后就会保存一个提供商每次调用都会拒绝的组合。而如果没有任何东西限制开销,一个向多个账户开放的实例可能会花得远超预期。

我想要的

我想要一个统一存放这些设置的地方,改了立即生效,界面只提供行得通的选项。我还希望开销有两个清楚的上限:每个账户的上限和整个实例的上限。

它是怎么运作的

每项任务都有写在代码里、经过验证的默认值。在「管理 › LLM 配置」中,管理员可以逐项任务地覆盖它们:提供商、模型、温度、回答预算、超时、思考深度。这个覆盖保存在数据库里,对之后的操作生效,无需重启。「重置」按钮会删除它,恢复为代码中的默认值。不存在隐藏的第三个来源:遗留在环境文件里的旧模型设置会被忽略。

这个界面本身也是一道防护:

  • 它只提供所选模型接受的思考级别,并隐藏这个模型无法接收的设置。
  • 回答预算会被限制在该模型已知的输出上限之内。如果你换到一个限制更多的模型,LIA 会发送两个数字中较小的那个,并提示这一点。
  • 深度思考配上过小的回答预算,会在保存时被拒绝:思考会占满全部空间,回答会是空的。

每个模型能做什么(工具、图像、结构化输出、上限)来自一个根据公开注册表维护的目录,每一行都说明它的值从哪里来:没人核实过的默认值、导入的值,或经人工确认的值。只有当提供商宣布的停用日期已过,并且已经没有任何任务在使用它时,一个模型才会被停用。

按任务计算的成本

这种拆分让精细优化成为可能。比如,请求分类跑在一个经济的小模型上,规划器跑在一个更贵但更可靠的模型上,记忆提取跑在一个免费的本地模型上。价格存放在一个价目目录中,它也知道那些提供低谷时段的提供商的低谷时段:每次调用都按它发生那一刻的价格计算。每次调用都会记录实际使用的模型和发送的参数,仪表板可以让你比较各项任务。

开销的两个上限

每个账户可以有自己的限额:token、消息数和费用,按月度周期或按总量计算。但把各个账户加起来,并不能给实例设上限。所以运营者可以设定一个实例每日预算,管理员可以在界面中把它收紧,但不能放宽:生效的是两个值中较小的那个。

这两个上限对故障的反应不一样。如果数据库没有响应,账户限额会多放过一条消息。而实例开销一旦未知,就会阻止,因为这一侧最坏的情况是整笔预算。拒绝时会说明发生了什么:实例暂停,以及恢复的时间。所以你不会以为自己的配额用完了。在后台,被拒绝的任务会记为跳过,这样就不会去找一个并不存在的故障。

局限

  • 更改对之后的操作生效:已经开始的操作可能会保留它启动时的配置。
  • 目录中的价格只是参考。真正的账单仍以提供商为准,提供商有时会应用 LIA 无法表达的规则,比如请求超过一定大小后价格更高。
  • 一些小决定,比如给邮件分类,可以交给一个专门的决策模型。每种用途都有自己的开关,默认关闭。有疑问时,LIA 会回到她通常的流程,而且这样的决定本身不会授权任何操作。

延伸阅读:每项任务一个模型,提供商由你选;在电子表格里修改整个模型目录,没有风险。

#llm-config#admin-ui#governance#db-overrides#multi-provider#defaults