第十章:换一个模型,哪些部分需要适配
简报方法已经可以保存和复用。现在你想换一个响应更快的模型:工具、材料、偏好和技能都保留,只改模型名称,是否就能得到同样可靠、开销更小的助手?
不一定。新模型可能不支持原来的工具格式,可能看不懂图片,也可能需要更多轮才能分清 A 与 B。能收到一段回复,只证明请求走通了,还没有证明整个任务表现相当。
本章沿着第三章的输入包,走进“调用模型”这个方框。产物是一份模型切换检查表:哪些属于能力,哪些属于接口,哪些仍由 Hermes 的运行程序负责。
10.1 一个“模型选择”包含三个问题
先分清模型与服务。模型承担理解和生成;服务提供访问入口,并规定请求、认证和返回格式。同一个模型可能经不同服务访问,同一服务也可能提供多个模型。
接口可以理解为双方交换信息的约定。认证则回答“谁在请求、能否使用这项服务”,通常依靠登录状态或访问密钥。读者不需要编写接口,只需知道它们不是模型的推理能力。
| 要回答的问题 | 简报中的例子 | 改了什么仍不能保证 |
|---|---|---|
| 模型是否胜任 | 能否发现 B 夸大了 A 的能力 | 不能保证接口能正确表达工具调用 |
| 服务是否可接入 | 登录有效,工具格式被接受 | 不能保证多轮任务质量相同 |
| 运行程序是否配合 | 正确带回结果,控制预算与结束 | 不能替模型补出未知事实 |
这三层分开,才不会把“认证失败”诊断成“模型笨”,或者把“重复取材”全部归咎于网络。
10.2 Hermes 怎样确定本轮用哪项服务
在 Hermes 中,交互对话、网关、定时任务和部分辅助任务会使用共享的服务解析能力。它根据显式请求、已保存配置、环境及相应默认规则,确定服务、模型访问方式、地址与凭据等信息。
这个设计解决配置散落的问题。如果每个入口分别猜测用哪个地址、哪份登录状态,那么在电脑里能聊的模型,定时任务可能根本访问不了;模型切换后,另一个入口还可能悄悄沿用旧设置。
普通运行中,已保存的模型选择具有明确地位,旧的环境设置不应随意覆盖用户后来选定的服务。不过,任务可以有专门选择,辅助调用也可能单独配置。不能只看聊天界面里的模型名称,就断定所有模型请求都发给它。
例如,主模型负责选择行动,压缩摘要可能交给另一个模型。分析任务开销和数据去向时,这两种调用都要计入。共享解析逻辑带来一致的处理方式,并不表示所有调用必须共享一套能力和失败恢复策略。
10.3 适配层翻译什么,保留什么
第三章画的是概念输入包。真实服务可能将系统说明、消息、图片、工具定义放在不同字段中;工具响应的形式也会不同。适配层负责把运行程序组织的内容转换成选定服务接受的请求,再把返回转换成后续循环能处理的结果。
Hermes 包含多种访问路径,例如常见的聊天补全格式、原生 Anthropic 消息格式,以及 Codex 的 Responses 路径。所谓“兼容”,通常只覆盖一组约定,不意味着所有字段、流式片段和历史内容都可以原样互换。
一次响应可能陆续到达:先有文字片段,随后才拼成完整工具名称与参数。运行程序需要区分可展示的文字、工具调用、用量和错误。一条显示中的句子,不一定就是完整最终答复;一个尚未收全的工具参数,也不能当成已经可执行的动作。
还有一些返回内容带有服务特定的延续信息。恢复历史、切换服务时,不能想当然地把它们当成普通文字改写。这里的设计要求是:尽量保留后续调用必需的语义,同时把可供共同循环处理的部分整理清楚。
10.4 凭据为什么必须跟着正确的地址
服务解析不只为了方便。若用户配置了自己的服务地址,程序还顺手发送另一家服务的访问密钥,就会把身份凭据交给错误对象。
Hermes 对部分服务的密钥与地址有相应的匹配和选择逻辑,并区分用户指定的自定义入口与默认回退路径。不同认证方式还可能需要刷新登录状态。它们共同说明:地址、访问方式、凭据应当作为相互约束的一组信息处理,不能各取一个“看起来能用”的值。
这些机制也有范围。不能从某个受支持路径的检查推导出任意代理都可信;选择服务仍然决定资料可能交给谁。把模型放在本地运行,也只改变相关处理的位置,不会自动阻止工具访问外网或读到其他文件。权限问题后面会单独展开。
10.5 失败时换模型,为什么仍需重新检查
Hermes 支持配置模型回退,在特定错误与重试条件下尝试备用选择。这能提高可用性,但备用模型接手的是已经进行中的任务,历史长度、工具格式与能力可能不同。
如果主模型已读到“图片暂不支持”,备用模型仍必须获得这一条件。若它无法接受相同历史或某种输入,恢复策略还需要处理格式和上下文,而不能只把名称替换一下。
更关键的是,主任务、委托子任务与辅助调用的回退规则不必相同。确认主对话有备用链,不代表每项内部调用都具备同样恢复能力。因此,检查表需要写明具体调用路径,而不是一句“系统支持自动切换”。
回退解决“原来的服务当前无法继续”,没有证明“接手后的结果一定等价”。能否继续、结果是否正确,需要分别验证。
10.6 比较一次任务,而不是只比较一次回复
设想两个模型处理同一组材料。这只是比较方法的教学情境,没有实测分数:甲单轮较快,却反复读取 B;乙单轮较慢,但在发现冲突后直接回到 A。仅凭单轮响应速度无法判断最后谁更快完成。
完整开销包括所有模型轮次、工具等待、重试、压缩摘要和核对。价格也要根据实际服务的计费规则计算,不能用模型名字估算,更不能把缓存命中或零错误当作默认条件。
| 切换前后保持一致 | 实际需要观察 | 发现问题后往哪层找 |
|---|---|---|
| 固定材料、目标与授权 | 是否仍只交付两件事、保留图片限制 | 能力与实际输入 |
| 同样的可用工具 | 是否发出有效参数、正确使用反馈 | 工具说明、适配与模型选择 |
| 相同历史长度范围 | 是否接受请求,压缩后是否保留约束 | 服务限制与上下文处理 |
| 同样的完成标准 | 总轮次、等待、失败和费用 | 整条任务链 |
先检验最小闭环:材料进入、模型提出有效工具请求、工具结果被接收、最终答复保留事实边界。再加入长历史、服务失败和后台运行。一次对话走通,不宜直接推广到所有入口。
本章要点
- 模型能力、访问协议与运行程序承担不同责任;格式兼容不能证明任务等价。
- Hermes 通过共享解析与不同适配路径组织服务访问,地址、凭据和请求方式需要匹配。
- 辅助调用和委托可能采用不同配置;比较开销时要覆盖完整任务。
- 模型回退提高可用性,接手后的输入完整性与结果仍需检查。
理解题
1. 新服务可以回答“你好”,却没有执行读取材料,应该先判断模型不支持 Agent 吗?
不能。先确认读取工具是否真的提供给它,服务是否接受了相应定义,返回是否包含完整调用,以及运行程序是否正确识别。只有定位到实际输入与响应,才能区分能力、配置和适配问题。
2. 用户切换了主模型,压缩摘要的费用为什么可能没变?
辅助摘要可能单独配置了模型与服务。主模型选择不是所有内部调用的唯一依据。应检查压缩路径实际解析的配置,而不是从聊天界面的名称推断。
3. 备用模型成功接手并交付三条消息,是否说明回退很成功?
最多说明任务恢复到了输出阶段。固定材料只有两件事,还要检查是否重复计算 A 与 B、是否编出第三件事。回退可用性与任务正确性分别成立。
下一章把同一套运行能力放到多个入口,理解是谁在使用它,以及任务应落到哪一段状态。