Настройка Anthropic SDK
Anthropic-клиенты сами добавляют путь /v1/messages, поэтому базовый URL задаётся без /v1. Используйте ключ CLODEX и точное имя модели из доступного каталога.
from anthropic import Anthropic
client = Anthropic(
api_key="clodex_YOUR_KEY",
base_url="https://clodex.xyz",
)
message = client.messages.create(
model="claude-opus-5",
max_tokens=2048,
messages=[{"role": "user", "content": "Проведи code review"}],
)
print(message.content[0].text)
Claude Code как отдельный client-сценарий
Claude Code использует тот же Messages API, но его подробная настройка, выбор модели и диагностика reconnect вынесены на отдельную страницу /claude-code-api. Здесь достаточно помнить, что base URL задаётся без /v1, а незавершённый поток без message_stop считается ошибкой.
Opus, Sonnet и Haiku: как выбрать модель
Доступность конкретных версий зависит от активных каналов и группы пользователя. Проверяйте /pricing и /v1/models перед тем, как закреплять модель в production-конфигурации.
- Opus — сложные agent-задачи, архитектура, глубокий анализ и длинные изменения.
- Sonnet — баланс качества, скорости и стоимости для ежедневной разработки.
- Haiku — быстрые классификации, короткие ответы и фоновые операции.
Надёжный streaming и tool use
Клиент должен обрабатывать message_start, content_block_delta, message_delta и обязательное message_stop. EOF без терминального события означает, что ответ мог завершиться не полностью. Для tool use дополнительно проверяйте валидность JSON аргументов и не выполняйте опасные действия без собственной валидации.
Messages API: content blocks, заголовки и raw HTTP
Anthropic-compatible запрос отправляется на /v1/messages. При raw HTTP используйте ключ в x-api-key, укажите anthropic-version и передайте массив messages. Ответ может содержать несколько content blocks: обычный text, запрос tool_use и другие поддерживаемые типы. Нельзя предполагать, что весь ответ всегда находится в первом текстовом блоке.
Если SDK самостоятельно добавляет /v1/messages, base URL должен оставаться https://clodex.xyz без суффикса /v1. Двойной путь /v1/v1/messages приведёт к ошибке маршрута.
curl https://clodex.xyz/v1/messages \
-H "x-api-key: $CLODEX_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-opus-5","max_tokens":512,"messages":[{"role":"user","content":"Проведи code review"}]}'
Безопасный tool use
Аргументы tool_use формирует модель, поэтому они считаются недоверенным вводом. Backend сверяет их с JSON Schema, повторно проверяет права текущего пользователя и ограничивает допустимые ресурсы. Модель не должна самостоятельно выбирать tenant, роль администратора, путь к секретному файлу или получателя платежа.
После выполнения инструмента приложение возвращает tool_result в следующий Messages-запрос. Для опасных операций добавляйте подтверждение пользователя и собственный audit log, не содержащий API-ключей.
Prompt cache, usage и выбор класса Claude
Cache read и cache creation учитываются отдельно от обычного input. Экономический эффект зависит от того, повторяется ли большой стабильный контекст между запросами; короткий уникальный prompt не становится выгоднее только из-за включённого cache-механизма. Сравнивайте реальные usage-поля и актуальные ставки на /pricing.
Opus, Sonnet и Haiku описывают разные классы скорости, качества и стоимости, но конкретная версия может быть недоступна отдельной группе. Production-конфигурация должна брать точный slug из каталога и иметь явное поведение при его отсутствии.
Частые вопросы
Какой base URL нужен для Claude?
Для Anthropic SDK и Claude Code используйте https://clodex.xyz без /v1.
Можно ли использовать tools?
Да, если выбранная модель и канал поддерживают tool use. Аргументы инструментов всегда нужно проверять на стороне приложения.
Почему stream может завершиться ошибкой?
Причиной могут быть upstream timeout, network EOF или отсутствие обязательного message_stop. Такой поток нельзя считать полностью завершённым.