Chat Completions
MarkdownОтвет модели на диалог в формате OpenAI. Самый распространённый формат: его понимают почти все клиенты.
Полное руководство
https://api.ailoot.ai/v1/chat/completionscurl https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"messages": [
{"role": "user", "content": "Объясни в двух предложениях, что такое API."}
]
}' from openai import OpenAI
import os
client = OpenAI(max_retries=0,
base_url="https://api.ailoot.ai/v1",
api_key=os.environ["AILOOT_API_KEY"],
)
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Объясни в двух предложениях, что такое API."}],
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ maxRetries: 0,
baseURL: "https://api.ailoot.ai/v1",
apiKey: process.env.AILOOT_API_KEY,
});
const resp = await client.chat.completions.create({
model: "claude-sonnet-5-5",
messages: [{ role: "user", content: "Объясни в двух предложениях, что такое API." }],
});
console.log(resp.choices[0].message.content);{
"id": "chatcmpl-8f2c…",
"object": "chat.completion",
"created": 1790812800,
"model": "claude-sonnet-5-5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "API — это договорённость о том, как одна программа просит другую что-то сделать…"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 21,
"completion_tokens": 48,
"total_tokens": 69
}
}Авторизация
- Authorizationheaderобязательный
Ключ в виде
Bearer sk-…. Также подойдут заголовкиx-api-keyилиx-goog-api-key.
Тело запроса
- modelstringобязательный
ID модели из каталога, например
claude-sonnet-5-5. Модель должна поддерживать формат OpenAI Chat. - messagesarrayобязательный
История диалога: объекты с
role(system,developer,user,assistant,tool) иcontent— строкой или массивом частей (текст,image_url). - streambooleanнеобязательный
Ответ в формате Server-Sent Events. По умолчанию
false. Платный текст приходит одним блоком после расчёта стоимости, а не по словам. - stream_optionsobjectнеобязательный
{"include_usage": true}— прислать итоговыйusageпоследним событием потока. - max_tokensintegerнеобязательный
Максимум токенов ответа. Новое имя —
max_completion_tokens. Если лимит не указан, Ailoot подставляет 4096 (или меньше, если у модели лимит ответа меньше; у Grok свой лимит). Для длинных ответов задайте лимит явно, иначе ответ остановится на 4096 токенах сfinish_reason: "length". Лимит входит в резерв: чем он больше, тем больше нужно свободного баланса. - temperaturenumberнеобязательный
Случайность ответа, обычно от 0 до 2. У рассуждающих моделей может игнорироваться.
- top_pnumberнеобязательный
Альтернатива temperature: доля вероятностной массы для выбора токенов.
- stopstring | arrayнеобязательный
Строки, на которых генерация остановится.
- toolsarrayнеобязательный
Описания функций, которые модель может вызвать. Формат — как у OpenAI:
{"type": "function", "function": {...}}. - tool_choicestring | objectнеобязательный
auto,none,requiredили конкретная функция. - response_formatobjectнеобязательный
{"type": "json_object"}или{"type": "json_schema", ...}для структурированного ответа — если модель умеет. - reasoning_effortstringнеобязательный
Глубина рассуждений для рассуждающих моделей:
low,medium,high.
Остальные параметры OpenAI передаются как есть; поддерживает ли их конкретная модель, решает разработчик модели.
Ответ
- choices[].messageobject
Ответ модели:
content, при вызове инструментов —tool_calls. - choices[].finish_reasonstring
stop— ответ закончен;length— упёрся вmax_tokens(такой ответ всё равно полный и оплачивается по факту);tool_calls— модель вызывает инструмент. - usageobject
prompt_tokens,completion_tokens,total_tokens— по ним считается списание.