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 endpointProvider id:anthropic。SDK 适配器:原生 Anthropic Messages API(通过 internal/pkg/llm/ 下的 eino Anthropic client)。
env 变量
| 变量 | 默认 | 备注 |
|---|---|---|
ONGRID_ANTHROPIC_API_KEY | — | 空 = provider 从目录里掉出 |
ONGRID_ANTHROPIC_MODEL | claude-sonnet-4-6 | 没设按调覆盖时用的模型 |
ONGRID_ANTHROPIC_BASE_URL | (Anthropic API 默认) | 中继 / 区域端点覆盖 |
ONGRID_ANTHROPIC_MODELS | claude-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 把 provider 和 model 一起写进 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_turn、tool_use、max_tokens)。Ongrid 适配器把它们映射到 eino 标准的FinishReason,下游代码不用分支。 - tool 使用 —— Anthropic 的 tool-use API 用 content block,不是 OpenAI 扁平的 tool_calls 形状。适配器透明翻译;无论用哪个 provider 你都按同一种 方式写工具。
- system 消息 —— Claude 收一个
system参数(字符串),而不是首条role:system消息。适配器在发出前把多条 system 消息用\n\n分隔拼起来。