Перейти к содержимому

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Обязательно.

Тело запроса

ПолеТипОбязательноОписание
modelstringДаID модели (например, claude-sonnet-4-6, gpt-5.5). См. Модели.
messagesarrayДаМассив объектов {role, content}. Роли: user, assistant.
max_tokensintegerДаМаксимум генерируемых токенов.
systemstringНетСистемный промпт.
streambooleanНетtrue для потоковой передачи SSE. По умолчанию: false.
temperaturenumberНетТемпература сэмплирования 0–1.
top_pnumberНетNucleus-сэмплирование.
stop_sequencesarrayНетСтоп-последовательности.

Пример без потока

Окно терминала
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_start
data: {"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_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":"1, 2, 3."}}
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":9}}
event: message_stop
data: {"type":"message_stop"}

Последовательность потоковых событий: message_startcontent_block_start → одно или несколько content_block_deltacontent_block_stopmessage_deltamessage_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);