第28篇:提供商配置——接入各种大模型
Hermes Agent 官方教程第28篇:接入各种大模型
第28篇:提供商配置——接入各种大模型
咱们这期聊聊 Hermes 的“大脑”配置。你可能已经发现了,Hermes 干活的时候其实不止用一个大模型,它有两类模型槽位:
- 主模型(Main model)——负责“思考”。你发的每句话、工具调用的每个循环、流式输出的每个字,都走这个模型。
- 辅助模型(Auxiliary models)——干杂活的。上下文压缩、图像分析、网页摘要、审批打分、MCP 工具路由、会话标题生成、技能搜索……一共 11 个任务槽位,每个都能单独指定模型。
默认情况下,所有辅助任务都是 auto,也就是跟着主模型走。想省钱?可以给某个杂活单独指定一个便宜的小模型。
顺带一提:如果你想让模型跑在自己的机器上而不是云提供商,可以看官方文档的 Local Models 一节。
最快接入方式:Nous Portal
如果你不想一个个配 API Key,官方推荐直接用 Nous Portal——一个订阅搞定 300+ 模型。全新安装后,跑一句:
hermes setup --portal
登录一下就完事了。想看看接入了啥,用 hermes portal info 查看。Portal 订阅用户还能享受其他按量付费提供商 10% 折扣。
仪表盘里怎么配
打开仪表盘,点侧边栏的 Models,你会看到两个区域:
- Model Settings——上面的大面板,给各个槽位分配模型。
- Usage analytics——下面的卡片排行,显示每个模型跑了多少 token、花了多少钱。
主模型那一行点 Change 会弹出选择器,左边是已认证的提供商(没看到?去 Keys 页面加凭证),右边是精选模型列表——注意,这是 Hermes 推荐的 agentic 模型,不是 OpenRouter 那种 400+ 全量列表(里面还有 TTS、画图模型呢)。
选好点 Switch,配置就写进 ~/.hermes/config.yaml 了。注意:这只对新会话生效。已经打开的聊天窗口还是用旧模型。想热切换?在会话里用 /model 斜杠命令。
中途切换的坑
在会话中途切模型,有两个坑要提醒你:
- 可能触发上下文压缩——如果当前会话已经很长,切到窗口更小的模型时,下一条消息会先跑一次压缩再回答。
- Prompt 缓存失效——缓存是按模型算的,一切模型,下一条消息就得按全价重新读一遍整个对话。长会话里这一下可能比两个模型的差价还贵。所以尽量在会话早期切换。
正因为这次重读很贵,当会话已经攒了很大的上下文(默认 100,000 token,按最近一次提供商计费的 prompt 大小算)时,Hermes 会在切换前弹一个明确确认——和贵模型、数据训练那类警告走同一套选择守卫提示,CLI、TUI 的 /model 命令和选择器、以及聊天里手打的 /model 都会弹。想调阈值或关掉,改 config.yaml:
model:
# 会话超过这么多上下文 token 时,切换前先问一下(下一条回复要重新读一遍)。
# 0 表示关闭。
switch_context_confirm_tokens: 100000
重新选你当前正在用的模型不会弹(缓存还是热的),没有测到上下文的会话(全新会话、非实时界面)也不弹。
关于数据训练的特别提醒
有些模型(比如 muse-spark-1.2-contributor、muse-spark-1.3-contributor)因为厂商可能拿你的对话做训练,所以价格便宜。这类模型都带 -contributor 后缀。交互式选择时会弹确认框,但无人值守的任务(比如 Kanban worker、cron 定时任务)没法弹框,所以默认直接拒绝。
如果你能接受,可以持久化确认:
hermes config set security.allow_data_training_tiers_noninteractive true
想撤销就:
hermes config unset security.allow_data_training_tiers_noninteractive
辅助模型的回退行为
辅助任务默认是 auto,也就是跟着主模型走。如果主模型这条路走不通或者遇到容量类故障,auto 会先看该任务自己的 auxiliary.<task>.fallback_chain,再看顶层的 fallback_providers / fallback_model 链。它绝不会去猜你没配置过的提供商——如果选了主提供商、又没声明任何回退,这个杂活会直接跳过并给出警告,而不是记到你碰巧登录着的另一个账号上。(Hermes 内置的辅助发现链只在你完全没选主提供商时才会跑。)
如果某个任务没配 fallback_chain,auto 就用顶层的 fallback_providers 链。如果这个也没有、主提供商又服务不了这次调用,任务会被跳过并给出警告——Hermes 不会落到其他已登录的提供商上。
一个小细节
全新安装时,配置文件里 model: "" 是个空字符串哨兵值,表示“还没配置”。第一次跑 hermes setup 或 hermes model 时,它会自动升级成带 provider、default、base_url、api_mode 的映射结构。如果你在 config.yaml 里看到空字符串,跑一下 hermes model 就会自动修好。
给提供商加点请求选项
在 providers: 字典里(或老的 custom_providers 列表里)配提供商时,有几个小旋钮可以调:
extra_headers——给发往这个提供商的每个 LLM 请求都带上额外的 HTTP 头。适合 Cloudflare Access 服务令牌、代理认证这类场景。注意:它同时适用于 OpenAI 兼容线路和anthropic_messages线路(主客户端、/model切换、重建、辅助客户端都算),但bedrock_converse不用它。头里的值经常带凭证,Hermes 从不记录它们。session_affinity_header——填一个头的名字,Hermes 会把会话 id 塞进这个头,随每个请求发给该提供商(主对话的chat_completions、anthropic_messages、codex_responses,以及压缩、标题这类辅助调用)。默认不发——Hermes 不会主动给没要求的端点塞会话标识。如果你前面挂了个有状态的代理(比如 LiteLLM 的x-litellm-session-id、自建的 Claude/OpenAI 网关),不设这个它会把每一轮都当成新对话,把整段历史反复往上游发。值是不透明的,同一会话内稳定,不同会话不同。discover_models——设成false(默认true)就跳过查询端点的/models列表,只用你在条目里配的models。适合模型列表慢、不稳或太吵的网关。
Nous Portal:Claude 走哪条线
Nous Portal 的 anthropic/* 模型有两条线路:OpenAI 兼容的 /v1/chat/completions,以及 Anthropic 原生的 Messages 线路 /v1/messages。用 nous.anthropic_wire 来选:
nous:
anthropic_wire: chat # 默认。"native" = 走 Anthropic Messages 线路;"auto" = 每个会话自行决定
目前默认是 chat。原生线路是更好的传输方式(签名思考块原样透传、原生 cache_control 作用域),但在 Portal 走 OpenRouter 的路径上,并发工具循环里连续调用时有 14–20% 的概率会重写上一轮的 prompt 缓存。
好了,配置模型就这么简单。下一期咱们聊聊辅助模型的 11 个槽位分别怎么调优。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/configuring-models