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

Chat Completions

Основной endpoint для работы с языковыми моделями.

POST /v1/chat/completions

Описание

Создаёт ответ модели на основе истории сообщений (chat). Поддерживает все модели и каналы.

Заголовки

ЗаголовокОбязательныйОписание
AuthorizationДаBearer YOUR_API_KEY
Content-TypeДаapplication/json

Тело запроса

{
"model": "anthropic/claude-sonnet-4-5-20250929",
"messages": [
{"role": "system", "content": "Ты полезный ассистент"},
{"role": "user", "content": "Привет!"}
],
"temperature": 0.7,
"max_tokens": 1000,
"stream": false
}

Обязательные параметры

ПараметрТипОписание
modelstringID модели (см. Модели)
messagesarrayМассив сообщений

Формат messages

{
"messages": [
{"role": "system", "content": "Системные инструкции"},
{"role": "user", "content": "Сообщение пользователя"},
{"role": "assistant", "content": "Ответ ассистента"},
{"role": "user", "content": "Следующий вопрос"}
]
}

Роли:

  • system — системные инструкции (необязательно, одно сообщение в начале)
  • user — сообщения пользователя
  • assistant — предыдущие ответы модели

Опциональные параметры

ПараметрТипDefaultОписание
temperaturenumber1.0Случайность (0.0-2.0)
max_tokensintegervariesМаксимум токенов в ответе
top_pnumber1.0Nucleus sampling (0.0-1.0)
frequency_penaltynumber0.0Штраф за повторы (-2.0 to 2.0)
presence_penaltynumber0.0Штраф за наличие (-2.0 to 2.0)
stopstring/arraynullСтоп-последовательности
streambooleanfalseПотоковая передача
seedintegernullSeed для воспроизводимости

Параметры Extended Thinking (Anthropic)

Для моделей с суффиксом -thinking:

ПараметрТипОписание
reasoning_effortstringlow, medium, high
thinking.budget_tokensintegerБюджет токенов (1024-32000)
{
"model": "anthropic/claude-sonnet-4-20250514-thinking",
"messages": [...],
"reasoning_effort": "high"
}

Параметры OpenRouter

Для моделей через OpenRouter канал:

ПараметрТипDefaultОписание
top_kinteger0Top-K sampling
top_anumber0.0Adaptive sampling
min_pnumber0.0Minimum probability
repetition_penaltynumber1.0Штраф за повторы

Ответ

Без streaming

{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1706745600,
"model": "anthropic/claude-sonnet-4-5-20250929",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Привет! Чем могу помочь?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 12,
"total_tokens": 37
}
}

С streaming

При stream: true ответ приходит как Server-Sent Events:

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1706745600,"model":"anthropic/claude-sonnet-4-5-20250929","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1706745600,"model":"anthropic/claude-sonnet-4-5-20250929","choices":[{"index":0,"delta":{"content":"Привет"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1706745600,"model":"anthropic/claude-sonnet-4-5-20250929","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1706745600,"model":"anthropic/claude-sonnet-4-5-20250929","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

Ответ с Extended Thinking

{
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": [
{
"type": "thinking",
"thinking": "Анализирую задачу пошагово..."
},
{
"type": "text",
"text": "Ответ: x = 4"
}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 120,
"thinking_tokens": 85
}
}

Поля ответа

ПолеТипОписание
idstringУникальный ID запроса
objectstringchat.completion или chat.completion.chunk
createdintegerUnix timestamp создания
modelstringИспользованная модель
choicesarrayМассив ответов
usageobjectСтатистика токенов

finish_reason

ЗначениеОписание
stopМодель завершила ответ естественно
lengthДостигнут max_tokens
content_filterКонтент заблокирован фильтром

Примеры

cURL

curl https://api.aipomogator.ru/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "anthropic/claude-sonnet-4-5-20250929",
"messages": [
{"role": "system", "content": "Ты помощник программиста"},
{"role": "user", "content": "Напиши функцию сортировки на Python"}
],
"temperature": 0.3,
"max_tokens": 500
}'

Python

from openai import OpenAI

client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.aipomogator.ru/v1"
)

response = client.chat.completions.create(
model="anthropic/claude-sonnet-4-5-20250929",
messages=[
{"role": "system", "content": "Ты помощник программиста"},
{"role": "user", "content": "Напиши функцию сортировки на Python"}
],
temperature=0.3,
max_tokens=500
)

print(response.choices[0].message.content)

JavaScript

import OpenAI from 'openai';

const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.aipomogator.ru/v1',
});

const response = await client.chat.completions.create({
model: 'anthropic/claude-sonnet-4-5-20250929',
messages: [
{ role: 'system', content: 'Ты помощник программиста' },
{ role: 'user', content: 'Напиши функцию сортировки на Python' },
],
temperature: 0.3,
max_tokens: 500,
});

console.log(response.choices[0].message.content);

Мультимодальность (Vision)

Для моделей с поддержкой изображений:

{
"model": "anthropic/claude-sonnet-4-5-20250929",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Что на картинке?"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg"}
}
]
}
]
}

Base64 изображение

{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}
}

Ошибки

400 Bad Request

{
"error": {
"message": "Invalid model specified",
"type": "invalid_request_error",
"param": "model",
"code": "model_not_found"
}
}

401 Unauthorized

{
"error": {
"message": "Invalid API key",
"type": "authentication_error"
}
}

402 Payment Required

{
"error": {
"message": "Insufficient balance",
"type": "insufficient_quota"
}
}

429 Too Many Requests

{
"error": {
"message": "Rate limit exceeded",
"type": "rate_limit_error"
}
}

Rate Limits

Лимиты зависят от модели и канала. При превышении возвращается 429 с заголовком Retry-After.

См. также