Пригласите друзей и получите бесплатные токены!Узнать больше

Документация API для генерации чата (Chat Completions)

Этот API используется для получения одного или нескольких предсказанных ответов (дополнений) от модели на основе предоставленной серии сообщений чата. Поддерживается потоковая передача данных (streaming), вызов функций (Function Calling) и настройка различных параметров семплирования.

1. Информация об интерфейсе (API)

  • Название интерфейса: Официальный N-тест
  • Метод запроса: POST
  • URL запроса: https://api.codingplanx.ai/v1/chat/completions
  • Тип контента: application/json
  • Аутентификация: Bearer {{YOUR_API_KEY}}

2. Заголовки запроса (Headers)

ПараметрОбязательноТипОписаниеПример
Content-TypeДаstringИдентификатор типа медиаapplication/json
AcceptДаstringФормат ответа, принимаемый клиентомapplication/json
AuthorizationНетstringМаркер доступа (токен) APIBearer sk-xxxxxx

3. Тело запроса (Request Body)

ПараметрОбязательноТипОписание
modelДаstringИдентификатор используемой модели (например, gpt-4o, gpt-3.5-turbo).
messagesДаarrayСписок сообщений чата. Каждый объект содержит role (system/user/assistant) и content.
toolsДаarrayСписок инструментов, которые может вызвать модель. В настоящее время поддерживаются только функции.
tool_choiceДаobjectУправляет тем, какую функцию вызывает модель. none (не вызывать), auto (автоматически) или указание конкретной функции.
temperatureНетnumberТемпература семплирования (0-2). Чем выше значение, тем более случайный результат; чем ниже, тем более детерминированный. Рекомендуется изменять либо этот параметр, либо top_p.
top_pНетnumberЯдерное семплирование (Nucleus sampling). Значение 0.1 означает, что учитываются только токены, составляющие верхние 10% вероятностной массы.
nНетintegerПо умолчанию 1. Количество вариантов ответов, генерируемых для каждого входного сообщения.
streamНетbooleanПо умолчанию false. Если true, отправляются частичные токены сообщений по мере их генерации (как в ChatGPT).
stopНетstringПоследовательность остановки. Модель прекратит генерацию при обнаружении этих символов.
max_tokensНетintegerМаксимальное количество генерируемых токенов. По умолчанию inf (бесконечность).
presence_penaltyНетnumberОт -2.0 до 2.0. Штрафует новые токены в зависимости от того, появлялись ли они уже в тексте, увеличивая вероятность обсуждения новых тем.
frequency_penaltyНетnumberОт -2.0 до 2.0. Штрафует новые токены в зависимости от частоты их появления в тексте, уменьшая вероятность повторения одних и тех же слов.
logit_biasНетobjectИзменяет вероятность появления указанных токенов в ответе.
userНетstringИдентификатор конечного пользователя, помогающий отслеживать злоупотребления.
response_formatНетobjectЗадает формат ответа. Например, { "type": "json_object" } включает режим вывода в JSON.
seenНетintegerФункция на стадии тестирования. Указывает seed (зерно) для попытки получения детерминированных (повторяемых) результатов.

4. Параметры ответа (Response Body)

ПараметрТипОписание
idstringУникальный идентификатор данного запроса.
objectstringТип объекта, обычно chat.completion.
createdintegerМетка времени создания запроса (в секундах формата Unix).
choicesarrayСписок вариантов ответов.
├─ indexintegerИндекс данного варианта в списке.
├─ messageobjectКонкретное сообщение, сгенерированное моделью.
│ ├─ rolestringРоль, обычно assistant.
│ └─ contentstringТекстовое содержимое сообщения.
└─ finish_reasonstringПричина остановки генерации (например, stop, length, tool_calls).
usageobjectСтатистика использования токенов.
├─ prompt_tokensintegerКоличество токенов, израсходованных во входных данных (промпте).
├─ completion_tokensintegerКоличество токенов, израсходованных при генерации ответа.
└─ total_tokensintegerОбщее количество израсходованных токенов.

5. Примеры (Examples)

Пример запроса

{
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": "who are u?"
        }
    ],
    "n": 1,
    "max_tokens": 100,
    "temperature": 0.8,
    "stream": false
}

Пример ответа

{
    "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
    }
}

6. Часто задаваемые вопросы (FAQ)

В: Почему возникает ошибка, хотя я установил response_format: { "type": "json_object" }? О: При использовании режима JSON вы должны явно дать указание модели сгенерировать JSON через системное или пользовательское сообщение в массиве messages (например: "Пожалуйста, ответьте в формате JSON"). В противном случае модель может зависнуть или выдать ошибку из-за невозможности сгенерировать валидный JSON-объект.

В: Можно ли одновременно настраивать temperature и top_p? О: Технически да, но официально рекомендуется изменять только один из них. Настройка одного параметра обычно достаточна для изменения случайности вывода. Изменение обоих параметров одновременно может привести к непредсказуемым результатам генерации.

В: Как получать данные, когда включен stream: true? О: При включении потоковой передачи сервер будет отправлять серию событий Server-Sent Events (SSE). Полезная нагрузка каждого события представляет собой объект JSON, и трансляция завершится строкой data: [DONE]. Для построчной обработки вам необходимо использовать библиотеки для парсинга потоков (например, response.iter_lines() в Python).

В: Как рассчитывается расход токенов? О: Для английского языка 1 токен равен примерно 4 символам или 0,75 слова; для китайского языка 1 иероглиф может соответствовать 1-2 токенам. Фактический расход определяется по значениям в поле usage в теле ответа.

В: Что означает finish_reason: "length"? О: Это означает, что сгенерированный контент превысил лимит, установленный вами в параметре max_tokens, или достиг максимального ограничения длины контекста модели, в результате чего текст был усечен.

В: Поддерживает ли API вызов функций (Function Calling)? О: Да, поддерживает. Если определить прототипы функций через параметр tools, модель по мере необходимости будет возвращать объект tool_calls внутри choices[0].message, а не обычный текст в поле content.