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

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

Этот эндпоинт используется для отправки промпта (содержащего текст или изображение) в модель, которая возвращает один или несколько сгенерированных ответов. Этот интерфейс особенно подходит для моделей, поддерживающих мультимодальный ввод (например, обработка изображений, улучшение качества, распознавание и генерация), таких как gpt-4o-image-vip.

Информация об API

  • Адрес эндпоинта (URL): https://api.codingplanx.ai/v1/chat/completions
  • Метод запроса: POST
  • Content-Type: application/json
  • Тип ответа: application/json

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

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

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

Тело запроса представляет собой объект JSON, содержащий следующие поля:

Имя параметраТипОбязательноПо умолчаниюОписание
modelStringДа-ID используемой модели. Например: gpt-4o-image-vip.
messagesArrayДа-Список сообщений диалога. Каждый объект содержит role (user/assistant/system) и content. content может быть строкой или массивом объектов, содержащих тип и URL изображения.
toolsArrayДа-Список инструментов, которые может вызвать модель. В настоящее время поддерживаются только функции.
tool_choiceObjectДаnoneУправляет тем, какую функцию вызывает модель. none — не вызывать, auto — автоматический выбор.
temperatureNumberНет1Температура выборки (0-2). Чем выше значение, тем более случайный результат; чем ниже, тем более сфокусированный.
top_pNumberНет1Ядерное сэмплирование (Nucleus sampling). Учитываются только токены, входящие в топ P вероятностной массы. Рекомендуется изменять либо это значение, либо temperature, но не оба сразу.
nIntegerНет1Количество вариантов ответов, генерируемых для каждого входного сообщения.
streamBooleanНетfalseИспользовать ли потоковую передачу данных. Текущий интерфейс определен как непотоковый.
max_tokensIntegerНетinfМаксимальное количество генерируемых токенов.
stopString/ArrayНетnullСтоп-последовательность. API прекратит генерацию дальнейших токенов при обнаружении этих символов.
presence_penaltyNumberНет0От -2.0 до 2.0. Штрафует уже появившиеся токены, увеличивая вероятность того, что модель перейдет к новым темам.
frequency_penaltyNumberНет0От -2.0 до 2.0. Штрафует новые токены в зависимости от частоты их появления в тексте.
response_formatObjectНет-Задает формат вывода, например, { "type": "json_object" } включает режим JSON.
userStringНет-Уникальный идентификатор конечного пользователя, используется для мониторинга злоупотреблений.
seenIntegerНет-(Бета-версия) Указание значения seed (сид) для обеспечения максимально детерминированной выборки (постоянства результатов).

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

Имя параметраТипОписание
idStringУникальный идентификатор данного запроса.
objectStringТип объекта, всегда chat.completion.
createdIntegerUnix-метка времени (в секундах).
choicesArrayМассив, содержащий сгенерированные варианты ответа.
└ indexIntegerИндекс варианта в массиве.
└ messageObjectОбъект сообщения, содержащий role и content.
└ finish_reasonStringПричина остановки генерации (например, stop, length).
usageObjectСтатистика использования токенов.
└ prompt_tokensIntegerКоличество токенов, использованных в промпте.
└ completion_tokensIntegerКоличество токенов, сгенерированных в ответе.
└ total_tokensIntegerОбщее количество использованных токенов.

Примеры

Пример запроса (Улучшение/генерация изображения)

{
    "model": "gpt-4o-image-vip",
    "messages": [
      {
            "role": "user",
            "content": [
                {"type": "text", "text": "Улучшите это изображение и добавьте текст 'Я люблю Китай'. Соотношение сторон [4:3] "},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://lsky.zhongzhuan.chat/i/2024/10/17/6711068a14527.png"
                    }
                }
            ]
        }
    ],
    "tools": [],
    "tool_choice": "none"
}

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

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Хорошо, изображение успешно обработано. Вы можете посмотреть результат здесь: [Ссылка на изображение/Описание]"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

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

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

Q: Как обеспечить одинаковый результат при каждом запросе? A: Хотя ИИ-моделям присуща случайность, вы можете попытаться установить параметр seen (seed) и удерживать temperature на уровне 0. Также обращайте внимание на поле system_fingerprint в ответе, чтобы отслеживать, не изменилось ли серверное окружение.

Q: Какое значение max_tokens лучше установить? A: Это зависит от вашего сценария использования. Для краткого описания изображения достаточно 100-300 токенов; если требуется детальный анализ или генерация длинного текста, рекомендуется установить значение выше 1000. Обратите внимание, что сумма входных токенов (включая изображение) и выходных токенов не должна превышать лимит контекста модели.

Q: Как передать изображение в запрос? A: В поле content массива messages используйте type: "image_url". В настоящее время рекомендуется использовать публично доступные HTTPS-ссылки на изображения.

Q: Обязательны ли параметры tools и tool_choice? A: Согласно спецификации данного API, эти два поля помечены как обязательные. Если вам не нужно вызывать конкретный инструмент, просто передайте пустой массив [] для tools и установите значение "none" для tool_choice.