Anthropic-совместимый API
POST /v1/messages
Создаёт message completion. Полностью совместим с Anthropic Messages API.
Заголовки запроса
| Заголовок | Описание |
|---|---|
x-api-key: sk-ru-… | Обязательно. Ваш API-ключ ru-llm. (Также принимается как Authorization: Bearer sk-ru-….) |
anthropic-version: 2023-06-01 | Обязательно. Строка версии API. |
Content-Type: application/json | Обязательно. |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
model | string | Да | ID модели (например, claude-sonnet-4-6, gpt-5.5). См. Модели. |
messages | array | Да | Массив объектов {role, content}. Роли: user, assistant. |
max_tokens | integer | Да | Максимум генерируемых токенов. |
system | string | Нет | Системный промпт. |
stream | boolean | Нет | true для потоковой передачи SSE. По умолчанию: false. |
temperature | number | Нет | Температура сэмплирования 0–1. |
top_p | number | Нет | Nucleus-сэмплирование. |
stop_sequences | array | Нет | Стоп-последовательности. |
Пример без потока
curl https://api.ru-llm.relay2.xyz/v1/messages \ -H "x-api-key: sk-ru-YOUR_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 256, "system": "You are a helpful assistant.", "messages": [ {"role": "user", "content": "What is the capital of France?"} ] }'Ответ:
{ "id": "msg_01XFDUDYJgAACzvnptvVoYEL", "type": "message", "role": "assistant", "content": [ {"type": "text", "text": "The capital of France is Paris."} ], "model": "claude-sonnet-4-6", "stop_reason": "end_turn", "stop_sequence": null, "usage": { "input_tokens": 19, "output_tokens": 9 }}Пример с потоком
curl https://api.ru-llm.relay2.xyz/v1/messages \ -H "x-api-key: sk-ru-YOUR_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 256, "messages": [{"role": "user", "content": "Count to three."}], "stream": true }'Поток ответа (SSE):
event: message_startdata: {"type":"message_start","message":{"id":"msg_abc","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","stop_reason":null,"usage":{"input_tokens":14,"output_tokens":1}}}
event: content_block_startdata: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_deltadata: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"1, 2, 3."}}
event: content_block_stopdata: {"type":"content_block_stop","index":0}
event: message_deltadata: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":9}}
event: message_stopdata: {"type":"message_stop"}Последовательность потоковых событий: message_start → content_block_start → одно или несколько content_block_delta → content_block_stop → message_delta → message_stop.
Объект usage
Объект usage сообщает о расходе токенов:
{ "input_tokens": 19, "output_tokens": 9, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0}Поля кэш-токенов присутствуют для моделей с поддержкой кэширования промптов.
Использование Anthropic SDK
Укажите base_url Anthropic SDK на шлюз и используйте ваш ключ sk-ru-… как api_key. Других изменений не требуется.
Python
import anthropic
client = anthropic.Anthropic( base_url="https://api.ru-llm.relay2.xyz", api_key="sk-ru-YOUR_KEY",)
message = client.messages.create( model="claude-sonnet-4-6", max_tokens=256, messages=[{"role": "user", "content": "Hello!"}],)print(message.content[0].text)TypeScript / Node.js
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({ baseURL: 'https://api.ru-llm.relay2.xyz', apiKey: 'sk-ru-YOUR_KEY',});
const message = await client.messages.create({ model: 'claude-sonnet-4-6', max_tokens: 256, messages: [{ role: 'user', content: 'Hello!' }],});console.log(message.content[0].text);