Skip to content

Anthropic(Claude)

TL;DR

bash
ONGRID_ANTHROPIC_API_KEY=sk-ant-...
ONGRID_ANTHROPIC_MODEL=claude-sonnet-4-6     # default
ONGRID_ANTHROPIC_BASE_URL=                   # optional; relay / regional endpoint

Provider id:anthropic。SDK 适配器:原生 Anthropic Messages API(通过 internal/pkg/llm/ 下的 eino Anthropic client)。

env 变量

变量默认备注
ONGRID_ANTHROPIC_API_KEY空 = provider 从目录里掉出
ONGRID_ANTHROPIC_MODELclaude-sonnet-4-6没设按调覆盖时用的模型
ONGRID_ANTHROPIC_BASE_URL(Anthropic API 默认)中继 / 区域端点覆盖
ONGRID_ANTHROPIC_MODELSclaude-opus-4-7,claude-sonnet-4-6,claude-haiku-4-5逗号分隔;SPA picker 显示的闭合集

四个都在首次启动时通过 SetIfAbsent 种到 system_settings.llm.anthropic_* —— 重启从不覆盖运维在 Settings UI 里的 编辑。

默认目录

开箱即用情况下,模型 picker 显示这三个 Claude 模型:

  • claude-opus-4-7 —— 前沿模型。当边际精度值回成本时用,做困难根因。
  • claude-sonnet-4-6 —— 默认。成本 / 质量平衡;chat picker 默认选这个。
  • claude-haiku-4-5 —— 便宜那个。推荐给 RCA Pass-2 结构化抽取器和 translate 调用 —— 短 prompt、短 reply、无 tool 循环。

在 SPA 的 /settings/llm 页编辑该列表,或在启动时覆盖 ONGRID_ANTHROPIC_MODELS

BaseURL 覆盖

bash
ONGRID_ANTHROPIC_BASE_URL=https://api.anthropic-relay.example.com/v1

用在:

  • 公司中继代理(请求依然用你的 Anthropic key —— 中继透明)。
  • 区域端点 —— Anthropic 今天没公布多区域,但留这旋钮跟其他 provider 对齐。

默认 base URL 在 cmd/ongrid/main.go:507 接:

go
BaseURL: firstNonEmpty(cfg.LLM.Anthropic.BaseURL, "https://api.anthropic.com/v1"),

把 Anthropic 设为默认

bash
ONGRID_LLM_DEFAULT_PROVIDER=anthropic

或者在 SPA:/settings/llm → "Default provider" 单选。

默认 provider 旋钮控制 Chat() 在按调没钉死 provider 时用什么(RCA worker、 translate、没选中时的主页 chat)。让它不重启就生效的动态默认机制见 路由

按调选

chat UI 的模型 picker 把 providermodel 一起写进 chat 发送信封里。 路由器(RoutingChatModel.pick)吃 WithProvider(id) eino 选项:

go
resp, err := chatModel.Generate(ctx, msgs,
    model.WithModel("claude-opus-4-7"),
    llm.WithProvider("anthropic"),
)

怪癖

  • 停止原因 —— Anthropic 返回自己的 stop reason 词表(end_turntool_usemax_tokens)。Ongrid 适配器把它们映射到 eino 标准的 FinishReason,下游代码不用分支。
  • tool 使用 —— Anthropic 的 tool-use API 用 content block,不是 OpenAI 扁平的 tool_calls 形状。适配器透明翻译;无论用哪个 provider 你都按同一种 方式写工具。
  • system 消息 —— Claude 收一个 system 参数(字符串),而不是首条 role:system 消息。适配器在发出前把多条 system 消息用 \n\n 分隔拼起来。

另见

  • 模型概览 —— 目录怎么装出来。
  • 路由 —— WithProvider、动态默认。
  • 预算 —— 跨 provider 全局应用的每日 token 上限。