API Reference

Chat Completions

Основной endpoint для генерации текста с помощью языковых моделей. Полностью совместим с OpenAI Chat Completions API.

POST/v1/chat/completions

Создаёт ответ модели на основе переданных сообщений (контекста диалога).

Параметры запроса

Body Parameters

modelstringrequired

ID модели для использования. Например: gpt-4-turbo, claude-3-sonnet, yandexgpt

messagesarrayrequired

Массив сообщений для контекста. Каждое сообщение содержит role и content

temperaturenumberoptionaldefault: 1.0

Температура сэмплирования от 0 до 2. Выше - более креативно, ниже - более детерминировано

max_tokensintegeroptional

Максимальное количество токенов в ответе. По умолчанию зависит от модели

streambooleanoptionaldefault: false

Если true, ответ будет передаваться по частям через Server-Sent Events

top_pnumberoptionaldefault: 1.0

Nucleus sampling: рассматривать токены с суммарной вероятностью top_p

frequency_penaltynumberoptionaldefault: 0

Штраф за повторение токенов. От -2.0 до 2.0

presence_penaltynumberoptionaldefault: 0

Штраф за присутствие токена в тексте. От -2.0 до 2.0

stopstring | arrayoptional

Последовательности для остановки генерации. До 4 последовательностей

userstringoptional

Уникальный идентификатор пользователя для мониторинга и abuse detection

Формат сообщений

Массив messages содержит историю диалога. Каждое сообщение имеет роль и содержание:

Message Object

rolestringrequired

Роль автора сообщения: system, user, assistant или function

contentstringrequired

Текст сообщения

namestringoptional

Имя автора (для function вызовов)

system

Системное сообщение задаёт поведение ассистента. Обычно идёт первым.

user

Сообщения пользователя - вопросы и запросы.

assistant

Предыдущие ответы ассистента для поддержания контекста диалога.

Примеры

cURL

Terminal
curl https://api.42gpu.ru/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-air-your-api-key" \
  -d '{
    "model": "gpt-4-turbo",
    "messages": [
      {"role": "system", "content": "Ты полезный ассистент."},
      {"role": "user", "content": "Напиши haiku о программировании"}
    ],
    "temperature": 0.7,
    "max_tokens": 100
  }'

Python

chat.py
1from openai import OpenAI
2
3client = OpenAI(
4 base_url="https://api.42gpu.ru/v1",
5 api_key="sk-air-your-api-key"
6)
7
8response = client.chat.completions.create(
9 model="gpt-4-turbo",
10 messages=[
11 {"role": "system", "content": "Ты полезный ассистент."},
12 {"role": "user", "content": "Напиши haiku о программировании"}
13 ],
14 temperature=0.7,
15 max_tokens=100
16)
17
18print(response.choices[0].message.content)

JavaScript

chat.js
1import OpenAI from 'openai';
2
3const client = new OpenAI({
4 baseURL: 'https://api.42gpu.ru/v1',
5 apiKey: 'sk-air-your-api-key',
6});
7
8async function main() {
9 const response = await client.chat.completions.create({
10 model: 'gpt-4-turbo',
11 messages: [
12 { role: 'system', content: 'Ты полезный ассистент.' },
13 { role: 'user', content: 'Напиши haiku о программировании' }
14 ],
15 temperature: 0.7,
16 max_tokens: 100,
17 });
18
19 console.log(response.choices[0].message.content);
20}
21
22main();

Формат ответа

Response200
Success
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1706745600,
  "model": "gpt-4-turbo",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Код струится рекой\nБаги тают как снег весной\nДеплой на рассвете"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 32,
    "total_tokens": 57
  }
}

Поля ответа

idУникальный идентификатор запроса
modelИспользованная модель
choicesМассив сгенерированных ответов
usageСтатистика использования токенов
finish_reasonПричина остановки: stop (завершено), length (достигнут лимит токенов)

Streaming (SSE)

Для получения ответа по частям установите stream: true. Ответ будет приходить через Server-Sent Events.

Python с streaming

streaming.py
1from openai import OpenAI
2
3client = OpenAI(
4 base_url="https://api.42gpu.ru/v1",
5 api_key="sk-air-your-api-key"
6)
7
8stream = client.chat.completions.create(
9 model="gpt-4-turbo",
10 messages=[{"role": "user", "content": "Расскажи историю"}],
11 stream=True
12)
13
14for chunk in stream:
15 if chunk.choices[0].delta.content:
16 print(chunk.choices[0].delta.content, end="", flush=True)

Формат streaming ответа

SSE Response
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1706745600,"model":"gpt-4-turbo","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1706745600,"model":"gpt-4-turbo","choices":[{"index":0,"delta":{"content":"Код"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1706745600,"model":"gpt-4-turbo","choices":[{"index":0,"delta":{"content":" струится"},"finish_reason":null}]}

data: [DONE]

Совет: Streaming снижает время до первого токена (TTFT) и улучшает пользовательский опыт для длинных ответов.

Rate Limits

Лимиты зависят от вашего тарифного плана:

ПланRPMTPM
Free2040,000
Standard60200,000
Pro5001,000,000

RPM = Requests Per Minute, TPM = Tokens Per Minute