Vision и файлы

Изображения, PDF и документы в запросах

Мультимодальные модели принимают смешанный content: массив объектов с типами text, image_url, file. Поддержка зависит от модели — смотрите input_modalities в каталоге.

Vision: URL-изображения

json
{
  "model": "openai/gpt-4o",
  "messages": [{
    "role": "user",
    "content": [
      { "type": "text", "text": "Что изображено?" },
      { "type": "image_url",
        "image_url": { "url": "https://example.com/photo.jpg", "detail": "high" } }
    ]
  }]
}

Vision: base64

python
import base64
img_b64 = base64.b64encode(open("photo.jpg", "rb").read()).decode()

response = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Что изображено?"},
            {"type": "image_url",
             "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}},
        ],
    }],
)

PDF и документы

KodikRouter не создаёт и не сохраняет PDF. Передайте уже существующий файл как подписанный HTTP(S)-URL или как data:application/pdf;base64,.... Плагин file-parser извлечёт текст на стороне шлюза, заменит file-блок обычным text-блоком и только после этого отправит запрос выбранной chat-модели.

Формат file-блока
Используйте поля file.filename и file.file_data. Поля url и name не входят в поддерживаемый контракт file-parser.
json
{
  "model": "openai/gpt-4o",
  "messages": [{
    "role": "user",
    "content": [
      { "type": "text", "text": "Суммируй договор и выдели ключевые пункты." },
      { "type": "file",
        "file": {
          "filename": "contract.pdf",
          "file_data": "https://storage.example.com/contract.pdf"
        } }
    ]
  }],
  "plugins": [{
    "id": "file-parser",
    "pdf": { "engine": "pdf-text" }
  }]
}

Движки обработки PDF

pdf-text
local
Извлекает текст цифрового PDF через pypdf; не требует внешнего API-ключа
mistral-ocr
OCR
Обрабатывает сканы и сложную вёрстку; на сервере требуется MISTRAL_API_KEY
native
passthrough
Не парсит файл и передаёт его модели как есть; модель и провайдер должны поддерживать files
Ограничения
Для воспроизводимой локальной проверки всегда указывайте pdf.engine: "pdf-text" и используйте PDF с текстовым слоем. Максимальный размер файла по умолчанию — 50 MiB. Извлечённый текст учитывается во входных токенах и может увеличить стоимость запроса. Если извлечение завершится ошибкой, шлюз оставит исходный file-блок для native-обработки провайдером.

Аудио и другие модальности

Аудио-модели (STT/TTS) доступны через /v1/audio/transcriptions и /v1/audio/speech. Документация готовится.