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

Документация API Chat Completions (Генерация ответов)

Этот интерфейс (API) используется для получения одного или нескольких предсказанных вариантов ответа (completions) от модели на основе заданного промпта (Prompt). Вы можете генерировать текст на основе истории диалога, а также контролировать случайность, длину и формат процесса генерации.

  • Название интерфейса: Список моделей / Chat Completions
  • Метод запроса: GET (Примечание: согласно предоставленному определению данных)
  • URL запроса: https://api.codingplanx.ai/v1/models
  • Статус: Опубликовано (Released)

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

1.1 Параметры Header (Заголовки)

Имя параметраОбязательноТипПример значенияОписание
Content-TypeДаStringapplication/jsonФормат тела запроса
AcceptДаStringapplication/jsonФормат ответа API
AuthorizationНетStringBearer {{YOUR_API_KEY}}API-ключ для аутентификации

1.2 Параметры Body (Тело запроса)

Несмотря на то, что изначально определен метод GET, согласно бизнес-логике, следующие параметры обычно передаются через JSON Body.

Имя параметраТипОбязательноПо умолчаниюОписание
modelstringДа-ID используемой модели. Например: gpt-3.5-turbo.
messagesarrayДа-Список сообщений, составляющих историю диалога на данный момент. Каждое сообщение содержит role (роль) и content (содержимое).
temperaturenumberНет1Температура выборки, от 0 до 2. Чем выше значение, тем более случайным будет вывод.
top_pnumberНет1Сэмплирование ядра (Nucleus sampling). 0.1 означает, что рассматриваются только токены, составляющие верхние 10% вероятностной массы.
nintegerНет1Количество генерируемых вариантов ответа для каждого входного сообщения.
streambooleanНетfalseИспользовать ли потоковую передачу. Если установлено true, будут отправляться частичные дельты сообщений (через SSE).
stopstring/arrayНетnullСтоп-последовательность. Модель прекратит генерацию при обнаружении этих символов.
max_tokensintegerНетinfМаксимальное количество генерируемых токенов (Tokens).
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Нет-Список инструментов (например, функций), которые может вызывать модель.
tool_choiceobjectНетautoУправляет тем, какую функцию должна вызывать модель.

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

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

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]. Это крайне полезно для отображения генерации длинных текстов в реальном времени.