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

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

Этот интерфейс используется для отправки модели промптов, содержащих текст и изображения, и получения единичного результата чат-дополнения (chat completion). Модель возвращает подробное описание или ответ на основе введенного контекста и содержимого изображения.

  • URL-адрес API: https://api.codingplanx.ai/v1/chat/completions
  • Метод запроса: POST
  • Статус: Опубликовано (Released)

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

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

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

Название параметраОбязательноТипПо умолчаниюОписание
modelДаString-ID используемой модели (например, gpt-4o).
messagesДаArray-Список сообщений диалога. При распознавании изображений в content необходимо передать массив объектов.
temperatureНетNumber1Температура выборки (0-2). Чем выше, тем более случайным будет ответ; чем ниже, тем более детерминированным.
top_pНетNumber1Вероятность выборки (nucleus sampling). Рекомендуется изменять либо этот параметр, либо temperature, но не оба сразу.
max_tokensНетIntegerinfМаксимальное количество генерируемых токенов.
nНетInteger1Количество вариантов ответов, генерируемых для каждого запроса.
streamНетBooleanfalseИспользовать ли потоковый вывод. Для данного интерфейса жестко задано false.
stopНетString/ArraynullСтоп-слова для остановки генерации. Поддерживается до 4 последовательностей.
presence_penaltyНетNumber0Штраф за присутствие (от -2.0 до 2.0). Увеличивает вероятность перехода к новым темам.
frequency_penaltyНетNumber0Штраф за частоту (от -2.0 до 2.0). Снижает вероятность повторения одних и тех же фраз.
response_formatНетObject-Задает формат вывода, например { "type": "json_object" } для включения режима JSON.
userНетString-Уникальный идентификатор конечного пользователя.
toolsНетArray-Список инструментов, доступных для вызова моделью (в настоящее время поддерживается только function).
tool_choiceНетObject-Управление поведением вызова инструментов моделью (none/auto/указанная функция).

Структура объекта распознавания изображений в messages (Content Array)

При запросе на распознавание изображений messages.content должен иметь следующую структуру:

  • type: "text" или "image_url"
  • text: Если type равен text, вводится текстовый вопрос.
  • image_url: Если type равен image_url, передается объект { "url": "URL изображения" }.

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

{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
            "role": "user",
            "content": [
                {
                    "type": "text", 
                    "text": "Что изображено на этой картинке? Пожалуйста, опишите подробно."
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://lsky.zhongzhuan.chat/i/2024/10/17/6711068a14527.png"
                    }
                }
            ]
        }
    ]
}

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

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

Пример ответа (Response)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "На этом изображении показан аккуратный рабочий стол с ноутбуком, чашкой кофе и горшечным суккулентом."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 120,
        "completion_tokens": 45,
        "total_tokens": 165
    }
}

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

В: Какие модели поддерживают функцию распознавания изображений? О: В настоящее время в основном поддерживаются мультимодальные модели, такие как gpt-4o, gpt-4-turbo и gpt-4-vision-preview. Убедитесь, что вы передаете правильный ID в поле model.

В: Какие форматы изображений поддерживаются? О: Поддерживаются распространенные форматы изображений, такие как PNG, JPEG, WEBP, а также неанимированные GIF.

В: Есть ли ограничения прав доступа к ссылкам на изображения? О: Предоставленные URL-адреса изображений должны быть общедоступными. Если изображение находится в частном облачном хранилище, сначала сгенерируйте временную ссылку с подписью или преобразуйте изображение в кодировку Base64 перед отправкой (Примечание: Base64 должен соответствовать формату data:image/jpeg;base64,...).

В: Как тарифицируется распознавание изображений? О: Изображения конвертируются в токены для биллинга в зависимости от их разрешения и уровня детализации. Как правило, изображения с низким разрешением потребляют фиксированное небольшое количество токенов, в то время как для изображений с высоким разрешением токены рассчитываются на основе количества фрагментов размером 512x512.

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

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