Claude Messages API
Нативный Anthropic Messages API. Этот эндпоинт предназначен для инструментов, которые работают с Anthropic API напрямую — в первую очередь для Claude Code.
Для Claude Code
Эндпоинт /v1/messages предназначен для работы с Claude Code и другими инструментами, использующими нативный Anthropic SDK. Для обычных API-запросов рекомендуется использовать /v1/chat/completions — он поддерживает все модели, включая Claude, и работает с OpenAI SDK.
Эндпоинт реализует Anthropic Messages API и поддерживает все его возможности: потоковую передачу, расширенное мышление (Extended Thinking) и подсчёт токенов.
Быстрый старт с Claude Code
Подробная инструкция по настройке Claude Code с AITUNNEL — в разделе Интеграция Claude Code.
Кратко: установите переменные окружения:
export ANTHROPIC_BASE_URL="https://api.aitunnel.ru"
export ANTHROPIC_AUTH_TOKEN="sk-aitunnel-xxx"
export ANTHROPIC_API_KEY=""Использование с Anthropic SDK
import anthropic
client = anthropic.Anthropic(
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru",
)
message = client.messages.create(
model="claude-sonnet-4.5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Привет! Расскажи о себе."}
]
)
print(message.content[0].text)import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "sk-aitunnel-xxx",
baseURL: "https://api.aitunnel.ru",
});
const message = await client.messages.create({
model: "claude-sonnet-4.5",
max_tokens: 1024,
messages: [
{ role: "user", content: "Привет! Расскажи о себе." }
],
});
console.log(message.content[0].text);curl https://api.aitunnel.ru/v1/messages \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Привет! Расскажи о себе."}
]
}'Стриминг
with client.messages.stream(
model="claude-sonnet-4.5",
max_tokens=1024,
messages=[{"role": "user", "content": "Напиши стихотворение о Москве"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)const stream = client.messages.stream({
model: "claude-sonnet-4.5",
max_tokens: 1024,
messages: [{ role: "user", content: "Напиши стихотворение о Москве" }],
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
process.stdout.write(event.delta.text);
}
}Extended Thinking
Расширенное мышление позволяет модели «думать» перед ответом — это улучшает качество сложных задач:
message = client.messages.create(
model="claude-sonnet-4.5",
max_tokens=16384,
thinking={
"type": "enabled",
"budget_tokens": 10000
},
messages=[
{"role": "user", "content": "Решите задачу: найдите все простые числа до 100"}
]
)
for block in message.content:
if block.type == "thinking":
print(f"Размышления: {block.thinking[:200]}...")
elif block.type == "text":
print(f"Ответ: {block.text}")Требования Extended Thinking
budget_tokensдолжен быть не менее 1024max_tokensдолжен быть большеbudget_tokens
Подсчёт токенов
Эндпоинт POST /v1/messages/count_tokens позволяет оценить количество токенов в запросе без его выполнения:
curl https://api.aitunnel.ru/v1/messages/count_tokens \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4.5",
"messages": [
{"role": "user", "content": "Привет, мир!"}
]
}'Ответ:
{
"input_tokens": 12
}Нормализация имён моделей
AITUNNEL автоматически нормализует имена моделей Claude:
| Входящее имя | Нормализуется в |
|---|---|
claude-3-5-sonnet-20250514 | claude-3.5-sonnet |
claude-sonnet-4-5 | claude-sonnet-4.5 |
claude-sonnet-4.5 | claude-sonnet-4.5 (без изменений) |
Это означает, что вы можете использовать любой формат имени модели — AITUNNEL подберёт правильную модель.
Лучшие практики
- Для Claude Code: Используйте этот эндпоинт для Claude Code и инструментов на Anthropic SDK
- Для нового кода: Используйте
/v1/chat/completions— он поддерживает все модели и работает с OpenAI SDK - Extended Thinking: Для сложных задач включайте thinking с budget_tokens от 5000
- max_tokens: Всегда указывайте — это обязательный параметр для Messages API