Документация API Chat Completions (Генерация ответов)
Этот интерфейс (API) используется для получения одного или нескольких предсказанных вариантов ответа (completions) от модели на основе заданного промпта (Prompt). Вы можете генерировать текст на основе истории диалога, а также контролировать случайность, длину и формат процесса генерации.
- Название интерфейса: Список моделей / Chat Completions
- Метод запроса:
GET(Примечание: согласно предоставленному определению данных) - URL запроса:
https://api.codingplanx.ai/v1/models - Статус: Опубликовано (Released)
1. Параметры запроса
1.1 Параметры Header (Заголовки)
| Имя параметра | Обязательно | Тип | Пример значения | Описание |
|---|---|---|---|---|
| Content-Type | Да | String | application/json | Формат тела запроса |
| Accept | Да | String | application/json | Формат ответа API |
| Authorization | Нет | String | Bearer {{YOUR_API_KEY}} | API-ключ для аутентификации |
1.2 Параметры Body (Тело запроса)
Несмотря на то, что изначально определен метод GET, согласно бизнес-логике, следующие параметры обычно передаются через JSON Body.
| Имя параметра | Тип | Обязательно | По умолчанию | Описание |
|---|---|---|---|---|
| model | string | Да | - | ID используемой модели. Например: gpt-3.5-turbo. |
| messages | array | Да | - | Список сообщений, составляющих историю диалога на данный момент. Каждое сообщение содержит role (роль) и content (содержимое). |
| temperature | number | Нет | 1 | Температура выборки, от 0 до 2. Чем выше значение, тем более случайным будет вывод. |
| top_p | number | Нет | 1 | Сэмплирование ядра (Nucleus sampling). 0.1 означает, что рассматриваются только токены, составляющие верхние 10% вероятностной массы. |
| n | integer | Нет | 1 | Количество генерируемых вариантов ответа для каждого входного сообщения. |
| stream | boolean | Нет | false | Использовать ли потоковую передачу. Если установлено true, будут отправляться частичные дельты сообщений (через SSE). |
| stop | string/array | Нет | null | Стоп-последовательность. Модель прекратит генерацию при обнаружении этих символов. |
| max_tokens | integer | Нет | inf | Максимальное количество генерируемых токенов (Tokens). |
| presence_penalty | number | Нет | 0 | Число от -2.0 до 2.0. Положительные значения увеличивают вероятность того, что модель перейдет к новым темам. |
| frequency_penalty | number | Нет | 0 | Число от -2.0 до 2.0. Положительные значения снижают вероятность того, что модель будет повторять одни и те же фразы. |
| logit_bias | object | Нет | null | Изменяет вероятность появления указанных токенов в ответе. |
| user | string | Нет | - | Уникальный идентификатор, представляющий конечного пользователя (помогает отслеживать злоупотребления). |
| response_format | object | Нет | - | Указывает формат вывода модели, например { "type": "json_object" } для включения режима JSON. |
| tools | array | Нет | - | Список инструментов (например, функций), которые может вызывать модель. |
| tool_choice | object | Нет | auto | Управляет тем, какую функцию должна вызывать модель. |
2. Параметры ответа
| Имя параметра | Тип | Описание |
|---|---|---|
| id | string | Уникальный идентификатор данного запроса. |
| object | string | Тип объекта, обычно chat.completion. |
| created | integer | Метка времени создания запроса (в секундах). |
| choices | array | Список, содержащий результаты генерации (ответы). |
| ├─ index | integer | Индекс этого варианта в списке. |
| ├─ message | object | Конкретное сообщение, сгенерированное моделью. |
| │ ├─ role | string | Роль, обычно assistant. |
| │ └─ content | string | Текстовое содержимое сообщения. |
| └─ finish_reason | string | Причина остановки, например stop (нормальная остановка) или length (достигнута максимальная длина токенов). |
| usage | object | Статистика использования токенов. |
| ├─ prompt_tokens | integer | Количество токенов, затраченных на ввод (промпт). |
| ├─ completion_tokens | integer | Количество сгенерированных токенов вывода. |
| └─ total_tokens | integer | Общее количество использованных токенов. |
3. Примеры запросов
Пример успешного запроса
curl --location --request GET 'https://api.codingplanx.ai/v1/models' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Hello there, how may I assist you today?"
}
],
"temperature": 1,
"top_p": 1,
"n": 1,
"stream": false,
"user": "user-1234"
}'
Пример успешного ответа
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "\r
\r
Hello there, how may I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
4. FAQ (Часто задаваемые вопросы)
Q: Почему в документации указан метод GET, но запрос выглядит как POST?
A: В стандартной спецификации OpenAI для создания ответов обычно используется метод POST. Однако, согласно предоставленным метаданным, этот интерфейс определен как GET. Пожалуйста, перед вызовом убедитесь в фактической конфигурации на стороне сервера. Если GET не работает, попробуйте использовать POST.
Q: Как правильно выбрать значения для temperature и top_p?
A: Мы рекомендуем изменять только один из этих параметров. Если вам нужны более точные и детерминированные ответы, уменьшите temperature (например, до 0.2); если вы хотите получать более разнообразные и креативные ответы, увеличьте его.
Q: Как включить режим JSON?
A: Вам нужно установить { "type": "json_object" } в параметре response_format и явно указать модели (в сообщениях System или User) о необходимости вывода в формате JSON. В противном случае модель может выдать ошибку парсинга или генерировать бесконечные пробелы.
Q: Что такое presence_penalty и frequency_penalty?
A:
presence_penalty(Штраф за присутствие): направлен на штрафование уже упомянутых тем, поощряя модель переходить к новым вопросам.frequency_penalty(Штраф за частоту): направлен на штрафование часто повторяющихся слов, предотвращая зацикливание модели на одних и тех же фразах.
Q: Как работает потоковый вывод (stream: true)?
A: При включении потоковой передачи API будет возвращать данные посимвольно (частями) через Server-Sent Events (SSE). Каждый блок данных представляет собой JSON-строку, начинающуюся с data: , и завершается блоком data: [DONE]. Это крайне полезно для отображения генерации длинных текстов в реальном времени.