omp)可以将 GoModel 用作自定义提供商。在 omp 的 models.yml 中添加一个提供商配置块,即可自动发现 GoModel 提供的所有模型,因此您只需配置一次网关,无需逐个手动定义模型。
流程:
oh-my-pi (omp) -> GoModel -> upstream model providers
开始之前
- 安装 oh-my-pi,例如使用
curl -fsSL https://omp.sh/install | sh。 - 选择一个用于网关管理的 GoModel 主密钥,例如
change-me。 - 确保 GoModel 拥有您要使用的模型所需的上游凭据。
1. 运行 GoModel
使用主密钥和至少一个上游提供商启动 GoModel。此示例使用 Anthropic:GOMODEL_MASTER_KEY 是网关的引导和管理员凭据,请勿将其写入 omp 的配置中。ANTHROPIC_API_KEY 归 GoModel 所有,仅用于上游请求。
2. 为 omp 创建专用 API 密钥
打开 GoModel 控制台 http://localhost:8080/admin/dashboard,使用GOMODEL_MASTER_KEY 登录。进入 API Keys -> Create API Key,然后:
- 将密钥命名为
oh-my-pi。 - 将 User Path 设置为
/agents/omp。 - 保持 Dashboard access 为禁用状态。
- 创建密钥并复制
sk_gom_...值。该值只显示一次。
/agents/omp 放行 omp 所需的选择器。
3. 配置 omp
创建或编辑~/.omp/agent/models.yml,并添加一个 gomodel 提供商:
discovery 配置块让 omp 在启动时获取 GoModel 的 /v1/models 目录,因此 GoModel 能够路由的每个模型都会自动出现在 omp 中,包括来自 GoModel 模型元数据的上下文窗口和输出限制。您无需手动列出模型。
使用 chmod 600 ~/.omp/agent/models.yml 限制对该文件的访问。如果不希望将密钥直接写在文件中,apiKey 也可以接受环境变量的名称(例如 apiKey: GOMODEL_API_KEY),或以 ! 为前缀、标准输出为该 Secret 的命令(例如 apiKey: "!op read op://dev/gomodel/api-key")。
如果 GoModel 运行在其他主机上,请将 localhost:8080 替换为 https:// URL,并在 GoModel 前面的反向代理或负载均衡器上终止 TLS;仅在回环地址的开发环境中使用纯 HTTP。请在 Base URL 中保留 /v1。
4. 选择模型并运行 omp
列出 omp 通过网关发现的模型:<provider>/<model-id>。GoModel 的模型 ID 本身已带有提供商前缀(anthropic/claude-sonnet-5),因此完整的选择器包含两个前缀:
ok。
omp 会将发现的模型目录缓存在本地数据库中。在 GoModel 中添加模型或提供商后,请运行
omp models refresh 强制重新获取。5. 启用推理强度
omp 的--thinking 级别(low、medium、high 等)会作为兼容 OpenAI 的 reasoning_effort 字段发送,GoModel 会针对每个上游转换该字段:对于 Anthropic 模型,它会转换为思考预算(thinking budget),模型的思考内容以 reasoning_content 的形式流式返回,omp 将其渲染为思考块。
omp 只会为已知支持推理的模型发送 reasoning_effort,而从普通 /v1/models 列表中发现的模型不会被标记为支持推理。请使用 modelOverrides 为这些模型显式启用:
--thinking 会被静默忽略。
可选:使用 GoModel 的 Anthropic Messages 端点
omp 也可以通过 GoModel 的/v1/messages 端点,以 Anthropic 协议与 GoModel 通信。此路径不支持模型发现,因此需要显式定义模型:
6. 在 GoModel 中检查流量
打开 GoModel 控制台的审计日志: http://localhost:8080/admin/dashboard/audit 确认 omp 发往POST /v1/chat/completions 的流式请求出现在 /agents/omp 用户路径下,并且 GoModel 将其路由到了预期的提供商。请使用主密钥登录;omp 密钥被有意设计为无法打开此页面。
故障排查
401 Unauthorized
models.yml 中的 apiKey 值必须是 sk_gom_... 托管密钥。如果您改为按名称引用环境变量,请确保在启动 omp 的 Shell 中已导出该变量。
找不到模型
omp 选择器需要使用包含 GoModel 提供商前缀的完整发现 ID:应为gomodel/anthropic/claude-sonnet-5,而不是 gomodel/claude-sonnet-5。请从 omp models gomodel 中复制确切的 ID。
新的 GoModel 模型没有出现
运行omp models refresh。否则 omp 会继续使用缓存的目录。
--thinking 不生效
按上文所示,在 modelOverrides 下为该模型添加 reasoning: true。如果没有该配置,omp 不会发送 reasoning_effort,GoModel 也就永远收不到可转换的推理强度。
思考在 Anthropic 模型上有效,但在其他模型上无效
GoModel 会按提供商映射reasoning_effort。请检查 /v1/models 元数据中该模型的 capabilities.reasoning 标志;不支持推理的模型会忽略或拒绝推理强度值。
参考
- oh-my-pi:模型和提供商配置(
models.yml) - oh-my-pi:CLI 参考
- GoModel:Anthropic Messages API
2026 年 8 月 31 日验证
本指南已基于以下环境验证:- 位于
http://localhost:8080的本地 GoModel 实例 - oh-my-pi
18.0.11(omp) - 通过 GoModel 访问的
anthropic/claude-haiku-4-5-20251001
discovery: openai-models-list导入了完整的 GoModel 目录(955 个模型),包括上下文窗口和输出限制- 使用专用托管密钥,
omp -p无界面提示词和 Shell 工具调用均通过omp -> GoModel -> Anthropic成功完成 - 通过
modelOverrides启用推理后,--thinking high在请求中生成了reasoning_effort: "high",GoModel 将其转换为 Anthropic 思考参数,omp 渲染了返回的reasoning_content思考块;未启用时,omp 不会发送该字段 api: anthropic-messages提供商变体通过 GoModel 的/v1/messages端点完成了相同的提示词