Создание чата с распознаванием изображений (Непотоковый режим)
Этот интерфейс используется для отправки модели промптов, содержащих текст и изображения, и получения единичного результата чат-дополнения (chat completion). Модель возвращает подробное описание или ответ на основе введенного контекста и содержимого изображения.
- URL-адрес API:
https://api.codingplanx.ai/v1/chat/completions - Метод запроса:
POST - Статус: Опубликовано (Released)
Заголовки запроса (Headers)
| Название параметра | Обязательно | Тип | Пример значения | Описание |
|---|---|---|---|---|
| Content-Type | Да | String | application/json | Формат тела запроса |
| Accept | Да | String | application/json | Формат тела ответа |
| Authorization | Нет | String | Bearer {{YOUR_API_KEY}} | API-ключ для аутентификации |
Тело запроса (Request Body)
| Название параметра | Обязательно | Тип | По умолчанию | Описание |
|---|---|---|---|---|
| model | Да | String | - | ID используемой модели (например, gpt-4o). |
| messages | Да | Array | - | Список сообщений диалога. При распознавании изображений в content необходимо передать массив объектов. |
| temperature | Нет | Number | 1 | Температура выборки (0-2). Чем выше, тем более случайным будет ответ; чем ниже, тем более детерминированным. |
| top_p | Нет | Number | 1 | Вероятность выборки (nucleus sampling). Рекомендуется изменять либо этот параметр, либо temperature, но не оба сразу. |
| max_tokens | Нет | Integer | inf | Максимальное количество генерируемых токенов. |
| n | Нет | Integer | 1 | Количество вариантов ответов, генерируемых для каждого запроса. |
| stream | Нет | Boolean | false | Использовать ли потоковый вывод. Для данного интерфейса жестко задано false. |
| stop | Нет | String/Array | null | Стоп-слова для остановки генерации. Поддерживается до 4 последовательностей. |
| presence_penalty | Нет | Number | 0 | Штраф за присутствие (от -2.0 до 2.0). Увеличивает вероятность перехода к новым темам. |
| frequency_penalty | Нет | Number | 0 | Штраф за частоту (от -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)
| Название параметра | Тип | Описание |
|---|---|---|
| id | String | Уникальный идентификатор данного запроса. |
| object | String | Тип объекта, всегда chat.completion. |
| created | Integer | Метка времени Unix (в секундах). |
| choices | Array | Массив сгенерированных вариантов ответа. |
| └ index | Integer | Индекс варианта. |
| └ message | Object | Объект сообщения, возвращаемый моделью (содержит role и content). |
| └ finish_reason | String | Причина остановки генерации (например, stop, length). |
| usage | Object | Статистика использования токенов. |
| └ prompt_tokens | Integer | Количество токенов, израсходованных на промпт. |
| └ completion_tokens | Integer | Количество токенов, израсходованных на ответ. |
| └ total_tokens | Integer | Общее количество израсходованных токенов. |
Пример ответа (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 или превысил ограничение контекстного окна модели, что привело к усечению содержимого.