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

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

Этот интерфейс используется для отправки модели промптов, содержащих текст и изображения, и получения единичного результата чат-дополнения (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 или превысил ограничение контекстного окна модели, что привело к усечению содержимого.