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 adapter: нативный Anthropic Messages API (через eino Anthropic-клиент под internal/pkg/llm/).

Env-переменные

VarПо умолчаниюЗаметки
ONGRID_ANTHROPIC_API_KEYПусто = provider выпадает из каталога
ONGRID_ANTHROPIC_MODELclaude-sonnet-4-6Модель, используемая, когда нет per-call override
ONGRID_ANTHROPIC_BASE_URL(Anthropic API default)Override для relays / regional endpoints
ONGRID_ANTHROPIC_MODELSclaude-opus-4-7,claude-sonnet-4-6,claude-haiku-4-5Через запятую; closed-set, который показывает picker SPA

Все четыре seed'ятся при первом запуске в system_settings.llm.anthropic_* через SetIfAbsent — рестарты никогда не перезаписывают operator-правки в Settings UI.

Дефолтный каталог

Из коробки model picker показывает эти три Claude-модели:

  • claude-opus-4-7 — frontier-модель. Используйте для трудных проходов корневой причины, где marginal accuracy бьёт стоимость.
  • claude-sonnet-4-6 — по умолчанию. Сбалансировано cost / quality; что preselect'ит chat-picker.
  • claude-haiku-4-5 — дешёвая. Рекомендуется для Pass-2 RCA structured extractor и для translate-вызовов — короткие промпты, короткие ответы, без tool-loop.

Редактируйте список на странице SPA /settings/llm или override'ом ONGRID_ANTHROPIC_MODELS при загрузке.

BaseURL override

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

Используйте для:

  • Corporate relay-прокси (запрос всё ещё использует ваш Anthropic-ключ — relay прозрачен).
  • Regional endpoints — Anthropic не публикует несколько регионов сегодня, но ручка здесь для паритета с другими providers.

Дефолтный 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" radio.

Default-provider ручка контролирует, что использует Chat(), когда per-call provider не закреплён (RCA-воркер, translate, home-page chat, когда ничего не выбрано). См. Routing для dynamic-default механизма, который позволяет этому вступить в силу без рестарта.

Per-call выбор

Model picker chat-UI пишет и provider, и model в chat send envelope. Router (RoutingChatModel.pick) принимает опцию eino WithProvider(id):

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

Особенности

  • Stop reasons — Anthropic возвращает свой словарь stop-reason (end_turn, tool_use, max_tokens). Ongrid-адаптер мапит их на eino-стандартный FinishReason, так что downstream-коду не нужно ветвиться.
  • Tool use — Anthropic tool-use API использует content-блоки, не OpenAI flat-tool_calls форму. Адаптер делает перевод прозрачно; вы пишете tools одинаково независимо от provider.
  • System-сообщения — Claude принимает единый параметр system (строку), не ведущее role:system сообщение. Адаптер мерджит несколько system-сообщений разделителями \n\n до отправки.

См. также

  • Обзор моделей — как собирается каталог.
  • RoutingWithProvider, dynamic defaults.
  • Budget — per-day token cap, который применяется глобально по providers.