Chat Completions
Основной endpoint для генерации текста с помощью языковых моделей. Полностью совместим с OpenAI Chat Completions API.
/v1/chat/completionsСоздаёт ответ модели на основе переданных сообщений (контекста диалога).
Параметры запроса
Body Parameters
modelstringrequiredID модели для использования. Например: 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.0Nucleus 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
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
1from openai import OpenAI23client = OpenAI(4 base_url="https://api.42gpu.ru/v1",5 api_key="sk-air-your-api-key"6)78response = 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=10016)1718print(response.choices[0].message.content)JavaScript
1import OpenAI from 'openai';23const client = new OpenAI({4 baseURL: 'https://api.42gpu.ru/v1',5 apiKey: 'sk-air-your-api-key',6});78async 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 });1819 console.log(response.choices[0].message.content);20}2122main();Формат ответа
{
"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
1from openai import OpenAI23client = OpenAI(4 base_url="https://api.42gpu.ru/v1",5 api_key="sk-air-your-api-key"6)78stream = client.chat.completions.create(9 model="gpt-4-turbo",10 messages=[{"role": "user", "content": "Расскажи историю"}],11 stream=True12)1314for chunk in stream:15 if chunk.choices[0].delta.content:16 print(chunk.choices[0].delta.content, end="", flush=True)Формат streaming ответа
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
Лимиты зависят от вашего тарифного плана:
| План | RPM | TPM |
|---|---|---|
| Free | 20 | 40,000 |
| Standard | 60 | 200,000 |
| Pro | 500 | 1,000,000 |
RPM = Requests Per Minute, TPM = Tokens Per Minute