Использование Anthropic Messages
Настройка совместимых с Anthropic клиентов и Claude Code.
Обновлено
Отправьте прямой Messages-запрос
Для прямого HTTP-запроса используйте полный путь POST https://api.provod.ai/v1/messages, Bearer-авторизацию и заголовок версии Anthropic:
export PROVOD_API_KEY="sk_..."
curl --fail-with-body --silent --show-error https://api.provod.ai/v1/messages \
-H "Authorization: Bearer $PROVOD_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 64,
"messages": [
{ "role": "user", "content": "Reply with ok" }
]
}'Пример ответа:
{
"id": "msg_example",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [
{ "type": "text", "text": "ok" }
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 8,
"output_tokens": 1
}
}В таком текстовом запросе ответ находится в content[0].text. Реальный ответ может содержать несколько блоков, в том числе вызовы инструментов, поэтому рабочий клиент должен обрабатывать каждый блок по его type.
Прямой HTTP использует /v1/messages, а Claude Code получает базовый URL без /v1.
Выбирайте Messages по формату клиента
Messages — совместимый с Anthropic формат обмена данными: его поля запроса, блоки содержимого, форма ответа и потоковые события соответствуют этому клиентскому контракту. Потоковая передача означает получение частей ответа до его окончательного завершения. При этом адрес не ограничен моделями Anthropic: он принимает поддерживаемые чат-модели из текущего каталога provod.ai и опубликованные для них псевдонимы.
В текущей документации используются такие пары канонических идентификаторов и псевдонимов:
| Канонический идентификатор модели | Опубликованный псевдоним |
|---|---|
anthropic/claude-sonnet-4.6 | claude-sonnet-4-6 |
openai/gpt-5.4 | openai-gpt-5-4 |
deepseek/deepseek-v4-flash | deepseek-deepseek-v4-flash |
Актуальный каталог возвращает GET /v1/models. Клиенты с заголовком anthropic-version или идентификатором Claude получают список в форме Anthropic с предпочтительными опубликованными идентификаторами. Не создавайте псевдоним самостоятельно, просто удаляя знаки из произвольного идентификатора модели.
Выбирайте /v1/chat/completions, если клиент ожидает поля и массив choices формата OpenAI Chat Completions. Выбирайте /v1/messages, если ему нужны блоки Anthropic Messages. Адрес определяется протоколом клиента, а не компанией, выпустившей модель.
Безопасно обрабатывайте поток Messages
Задайте stream: true, чтобы получать Anthropic SSE. Успешный текстовый поток следует этой последовательности событий и завершается на message_stop; Messages не отправляет маркер OpenAI [DONE]:
event: message_start
data: {"type":"message_start","message":{"id":"msg_example","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":8,"output_tokens":0}}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"ok"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":1}}
event: message_stop
data: {"type":"message_stop"}Событие ошибки Anthropic может иметь следующую форму. Не полагайтесь на получение такого события: в зависимости от момента сбоя соединение может закрыться до message_stop без завершающего события.
event: error
data: {"type":"error","error":{"type":"api_error","message":"Request failed"}}Считайте event: error или закрытие соединения до message_stop признаком неполного ответа. Ограниченный повтор допустим только до получения первой части содержимого. После события content_block_delta сохраните частичный результат и не повторяйте запрос автоматически: повтор может продублировать работу и расходы.
Подключайте Claude Code к правильной базе
Claude Code сам добавляет /v1/messages, поэтому задайте ANTHROPIC_BASE_URL=https://api.provod.ai без /v1. Установка, ручная настройка, явный выбор модели и проверка описаны в отдельном руководстве Claude Code.
Публичный код ошибки — это предназначенный для клиента код в ответе API. Messages возвращает ошибку в форме Anthropic, поэтому, если отдельного error.code нет, сохраните error.type, HTTP-статус, точный адрес и сообщение.