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

Создание завершения чата (Не потоковый режим)

Данный эндпоинт используется для отправки промпта (Prompt), на который модель возвращает один или несколько сгенерированных вариантов ответа (дополнений). Не потоковый интерфейс возвращает результат единоразово после полной генерации ответа.

  • URL эндпоинта: https://api.codingplanx.ai/v1/chat/completions
  • Метод запроса: POST
  • Тип контента: application/json

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

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

ПараметрТипОбязательноПример значенияОписание
Content-TypestringДаapplication/jsonФормат тела запроса
AcceptstringДаapplication/jsonФормат тела ответа
AuthorizationstringНетBearer {{YOUR_API_KEY}}Токен аутентификации

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

ПараметрТипОбязательноПо умолчаниюОписание
modelstringДа-ID используемой модели (например, gpt-4o, gpt-3.5-turbo).
messagesarrayДа-Список сообщений диалога. Каждый объект содержит role (system/user/assistant) и content.
temperaturenumberНет1Температура выборки (0-2). Чем выше значение, тем случайнее результат; чем ниже, тем более детерминированным он будет.
top_pnumberНет1Сэмплирование ядра (Nucleus sampling). Учитываются только токены, составляющие top_p вероятностной массы. Рекомендуется менять либо это, либо temperature, но не оба параметра одновременно.
nintegerНет1Количество вариантов ответов, генерируемых для каждого входного сообщения.
streambooleanНетfalseИспользовать ли потоковую передачу данных. Здесь должно быть установлено false.
stopstring/arrayНетnullПоследовательность токенов (до 4-х), при достижении которой API прекращает генерацию.
max_tokensintegerНетinfМаксимальное количество генерируемых токенов, ограничено длиной контекста модели.
presence_penaltynumberНет0От -2.0 до 2.0. Положительные значения увеличивают вероятность перехода модели к новым темам (штраф за присутствие).
frequency_penaltynumberНет0От -2.0 до 2.0. Положительные значения уменьшают вероятность повторения моделью одних и тех же слов (штраф за частоту).
logit_biasobjectНетnullИзменяет вероятность появления указанных токенов в ответе.
userstringНет-Уникальный идентификатор конечного пользователя, используется для отслеживания злоупотреблений.
response_formatobjectНет-Задает формат вывода, например { "type": "json_object" } включает режим JSON.
toolsarrayНет-Список инструментов, которые может вызывать модель (в настоящее время поддерживаются только функции - function).
tool_choicestring/objНетautoУправляет тем, какую функцию должна вызвать модель (none/auto/указанная функция).

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

Тело ответа (Response Body)

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

Примеры

Пример запроса (cURL)

curl --location --request POST 'https://api.codingplanx.ai/v1/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "model": "gpt-4o",
  "messages": [
    {
      "role": "user",
      "content": "Здравствуйте, представьтесь, пожалуйста."
    }
  ],
  "max_tokens": 1000
}'

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

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Здравствуйте! Я ИИ-ассистент, предоставленный CodingPlanX, рад вам помочь."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 15,
        "completion_tokens": 25,
        "total_tokens": 40
    }
}

FAQs (Часто задаваемые вопросы)

Q1: Как включить режим JSON? A1: В теле запроса установите "response_format": { "type": "json_object" }. Внимание: При использовании режима JSON вы должны явно проинструктировать модель выводить JSON в системном (system) или пользовательском (user) сообщении, иначе модель может сгенерировать бесконечный цикл пробелов (пустого контента).

Q2: Как правильно выбрать temperature и top_p? A2: Обычно мы рекомендуем изменять только один из этих параметров. Если вам нужно, чтобы модель была более креативной, увеличьте temperature (например, 0.8); если вам нужны более строгие, точные и последовательные ответы, уменьшите его (например, 0.2).

Q3: Почему finish_reason возвращает length? A3: Это означает, что сгенерированный ответ был обрезан, так как он достиг установленного вами лимита max_tokens или превысил максимальную длину контекста модели.

Q4: Что такое Токен (Token)? A4: Токен — это базовая единица обработки текста моделью. (Например, один китайский иероглиф равен примерно 1-2 токенам, а английское слово может состоять из 1 или более токенов). Тарификация API и ограничения контекста рассчитываются на основе количества токенов.

Q5: В чем разница между presence_penalty и frequency_penalty? A5: presence_penalty (штраф за присутствие) фокусируется на "обсуждении новых тем", то есть штраф применяется просто за факт наличия слова в тексте; frequency_penalty (штраф за частоту) фокусируется на "количестве повторений слов", то есть чем чаще встречается слово, тем строже штраф.

Q6: Что делать, если я хочу получать текст по мере его генерации в реальном времени? A6: Установите параметр stream в значение true. Обратите внимание, что формат ответа при потоковой передаче отличается от описанного в этом документе (не потокового режима), он работает на базе технологии Server-Sent Events (SSE).