Anthropic (Claude)
TL;DR
ONGRID_ANTHROPIC_API_KEY=sk-ant-...
ONGRID_ANTHROPIC_MODEL=claude-sonnet-4-6 # padrão
ONGRID_ANTHROPIC_BASE_URL= # opcional; endpoint relay / regionalProvider id: anthropic. Adapter SDK: Anthropic Messages API nativa (via o client Anthropic do eino sob internal/pkg/llm/).
Env vars
| Var | Padrão | Notas |
|---|---|---|
ONGRID_ANTHROPIC_API_KEY | — | Vazio = provider removido do catálogo |
ONGRID_ANTHROPIC_MODEL | claude-sonnet-4-6 | O modelo usado quando nenhum override por-call está setado |
ONGRID_ANTHROPIC_BASE_URL | (padrão da API Anthropic) | Override para relays / endpoints regionais |
ONGRID_ANTHROPIC_MODELS | claude-opus-4-7,claude-sonnet-4-6,claude-haiku-4-5 | Separados por vírgula; o conjunto fechado que o picker do SPA mostra |
Os quatro são semeados no primeiro boot em system_settings.llm.anthropic_* via SetIfAbsent — re-boots nunca sobrescrevem edits do operador na UI de Settings.
Catálogo padrão
De fábrica, o picker de modelo mostra esses três modelos Claude:
claude-opus-4-7— o modelo frontier. Use para passes difíceis de causa raiz onde a precisão marginal vence o custo.claude-sonnet-4-6— o padrão. Custo / qualidade balanceado; o que o picker do chat pré-seleciona.claude-haiku-4-5— o barato. Recomendado para o extractor estruturado Pass-2 do RCA e para chamadas de translate — prompts curtos, respostas curtas, sem loop de tool.
Edite a lista na página /settings/llm do SPA ou sobrescrevendo ONGRID_ANTHROPIC_MODELS no boot.
Override de BaseURL
ONGRID_ANTHROPIC_BASE_URL=https://api.anthropic-relay.example.com/v1Use isto para:
- Proxies de relay corporativos (a requisição ainda usa sua chave Anthropic — o relay é transparente).
- Endpoints regionais — Anthropic não publica múltiplas regiões hoje, mas o knob está aqui para paridade com outros providers.
A base URL padrão está conectada em cmd/ongrid/main.go:507:
BaseURL: firstNonEmpty(cfg.LLM.Anthropic.BaseURL, "https://api.anthropic.com/v1"),Tornando o Anthropic o padrão
ONGRID_LLM_DEFAULT_PROVIDER=anthropicOu, do SPA: /settings/llm → radio "Default provider".
O knob de default-provider controla o que Chat() usa quando nenhum provider por-call está fixado (o worker RCA, translate, o chat da home quando nada está selecionado). Veja Roteamento para o mecanismo de default-dinâmico que faz isso ter efeito sem restart.
Seleção por-call
O picker de modelo da UI de chat escreve tanto provider quanto model no envelope de envio do chat. O router (RoutingChatModel.pick) recebe a opção eino WithProvider(id):
resp, err := chatModel.Generate(ctx, msgs,
model.WithModel("claude-opus-4-7"),
llm.WithProvider("anthropic"),
)Pegadinhas
- Stop reasons — Anthropic retorna seu próprio vocabulário de stop-reason (
end_turn,tool_use,max_tokens). O adapter Ongrid mapeia esses para oFinishReasoneino-padrão para que código downstream não precise ramificar. - Tool use — A API de tool-use do Anthropic usa blocos de conteúdo, não o formato OpenAI flat-tool_calls. O adapter faz a tradução transparentemente; você escreve tools do mesmo jeito independente do provider.
- System messages — Claude pega um único parâmetro
system(string), não uma mensagemrole:systemde liderança. O adapter mescla múltiplas system messages com separadores\n\nantes de enviar.
Veja também
- Visão geral dos modelos — como o catálogo se monta.
- Roteamento —
WithProvider, defaults dinâmicos. - Budget — caps de tokens por-dia que se aplicam globalmente entre providers.