Anthropic (Claude)
TL;DR
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 adapter: нативный Anthropic Messages API (через eino Anthropic-клиент под internal/pkg/llm/).
Env-переменные
| Var | По умолчанию | Заметки |
|---|---|---|
ONGRID_ANTHROPIC_API_KEY | — | Пусто = provider выпадает из каталога |
ONGRID_ANTHROPIC_MODEL | claude-sonnet-4-6 | Модель, используемая, когда нет per-call override |
ONGRID_ANTHROPIC_BASE_URL | (Anthropic API default) | Override для relays / regional endpoints |
ONGRID_ANTHROPIC_MODELS | claude-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
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:
BaseURL: firstNonEmpty(cfg.LLM.Anthropic.BaseURL, "https://api.anthropic.com/v1"),Сделать Anthropic дефолтным
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):
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до отправки.
См. также
- Обзор моделей — как собирается каталог.
- Routing —
WithProvider, dynamic defaults. - Budget — per-day token cap, который применяется глобально по providers.