Мультимодальность

Изображения

Как передавать изображения в мультимодальные модели AllTokens через /api/v1/chat/completions.

Запросы с изображениями отправляются через POST /api/v1/chat/completions с массивом messages. Внутри content используется элемент типа image_url, а само изображение можно передать либо по URL, либо в виде base64-строки.

Если вы передаёте несколько изображений, добавляйте их отдельными элементами массива content. Обычно удобнее сначала передать текстовую инструкцию, а затем изображения.

AllTokens поддерживает два основных способа передачи изображений:

  • URL: удобнее для публично доступных файлов
  • base64: нужен для локальных файлов и закрытых изображений

Передача изображения по URL

Вот пример запроса, где изображение передаётся по ссылке:

import requests

url = "https://api.alltokens.ru/api/v1/chat/completions"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

payload = {
    "model": "google/gemini-3.1-flash",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Что изображено на этой картинке?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
                    }
                }
            ]
        }
    ]
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())

Передача изображения в base64

Для локальных изображений и непубличных файлов используйте base64. В этом случае в image_url.url передаётся data:-строка.

import base64
import requests

def encode_image_to_base64(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

base64_image = encode_image_to_base64("path/to/your/image.jpg")
data_url = f"data:image/jpeg;base64,{base64_image}"

url = "https://api.alltokens.ru/api/v1/chat/completions"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

payload = {
    "model": "google/gemini-3.1-flash",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Что изображено на этой картинке?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": data_url
                    }
                }
            ]
        }
    ]
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())

Поддерживаемые типы изображений

  • image/png
  • image/jpeg
  • image/webp
  • image/gif

Что важно помнить

URL удобнее для публичных изображений и крупных файлов: тело запроса получается меньше, а код проще. Base64 нужен, если файл лежит локально или недоступен по публичной ссылке.

Частые вопросы

Да. Для этого добавьте несколько элементов image_url в массив content. Допустимое число изображений зависит от модели и поставщика.

Обычно лучше сначала передать текстовую инструкцию, а затем изображение. Так модель проще понимает задачу. Если картинка должна идти первой, лучше объяснить контекст в system-сообщении.

Смотрите architecture.input_modalities в Каталоге моделей. Если там есть нужный тип ввода, модель подходит для такого сценария.