Skip to content

Anthropic (Claude)

TL;DR

bash
ONGRID_ANTHROPIC_API_KEY=sk-ant-...
ONGRID_ANTHROPIC_MODEL=claude-sonnet-4-6     # padrão
ONGRID_ANTHROPIC_BASE_URL=                   # opcional; endpoint relay / regional

Provider id: anthropic. Adapter SDK: Anthropic Messages API nativa (via o client Anthropic do eino sob internal/pkg/llm/).

Env vars

VarPadrãoNotas
ONGRID_ANTHROPIC_API_KEYVazio = provider removido do catálogo
ONGRID_ANTHROPIC_MODELclaude-sonnet-4-6O 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_MODELSclaude-opus-4-7,claude-sonnet-4-6,claude-haiku-4-5Separados 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

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

Use 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:

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

Tornando o Anthropic o padrão

bash
ONGRID_LLM_DEFAULT_PROVIDER=anthropic

Ou, 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):

go
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 o FinishReason eino-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 mensagem role:system de liderança. O adapter mescla múltiplas system messages com separadores \n\n antes de enviar.

Veja também