Перейти к основному содержанию

Обзор возможностей

Визуально-языковые модели (Vision-Language Model, VLM) — это класс мультимодальных больших моделей, которые одновременно поддерживают ввод изображений и текста и способны понимать содержимое изображений, а также обрабатывать межмодальную информацию. На основе комбинированной информации из изображений и текста модель может выдавать качественные ответы и широко применяется в таких сценариях, как распознавание изображений, понимание контента и интеллектуальные вопросы-ответы.

Типичные сценарии применения

  • Распознавание и описание содержимого изображений: автоматическое распознавание объектов, цветов, сцен и пространственных отношений на изображении с генерацией описания на естественном языке.
  • Комплексное понимание изображений и текста: объединение изображений и текстового ввода для контекстно-зависимых многоходовых диалогов и ответов на сложные задачи.
  • Визуально-ассистированные вопросы-ответы: может использоваться как дополнение к OCR-инструментам для распознавания текстовой информации, встроенной в изображения, и выполнения задач вопросов-ответов.
  • Будущие расширенные применения: подходит для интерактивных сценариев, таких как интеллектуальные визуальные ассистенты, восприятие роботами и дополненная реальность.

Инструкции по вызову API

Для вызова визуально-языковой модели используйте интерфейс /chat/completions, который поддерживает смешанный ввод текста и изображений.

Параметры обработки изображений

Точность обработки изображения задается через поле detail; поддерживаются следующие варианты:
  • high: высокое разрешение, сохраняет больше деталей, подходит для задач, требующих высокой точности.
  • low: низкое разрешение, высокая скорость обработки, подходит для ответов в реальном времени.
  • auto: система автоматически выбирает подходящий режим.

Пример формата сообщения

Изображение в формате URL

{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image.png",
        "detail": "high"
      }
    },
    {
      "type": "text",
      "text": "Опишите сцену на изображении."
    }
  ]
}

Изображение в формате Base64

{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,{base64_image}",
        "detail": "low"
      }
    },
    {
      "type": "text",
      "text": "Какой текст присутствует на изображении?"
    }
  ]
}

Пример кода для кодирования изображения в Base64 (Python)

import base64
from PIL import Image
import io

def image_to_base64(image_path):
    with Image.open(image_path) as img:
        buffered = io.BytesIO()
        img.save(buffered, format="JPEG")
        return base64.b64encode(buffered.getvalue()).decode('utf-8')

base64_image = image_to_base64("path/to/your/image.jpg")

Режим нескольких изображений

Поддерживается отправка нескольких изображений вместе с текстом в качестве входных данных. Для лучшей производительности и качества понимания рекомендуется использовать не более двух изображений.
{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image1.png"
      }
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,{base64_image}"
      }
    },
    {
      "type": "text",
      "text": "Сравните общие характеристики этих двух изображений."
    }
  ]
}

Поддерживаемые модели

Ниже приведены визуально-языковые модели (VLM), которые в настоящее время поддерживаются платформой:

Тарификация

Входные изображения для визуально-языковых моделей преобразуются в Tokens и учитываются вместе с текстом при расчете стоимости вызова:
  • Правила оценки image Token для каждой модели могут немного отличаться;
  • Подробные тарифы можно посмотреть на странице описания соответствующей модели.

Примеры кода для вызова API

Описание одного изображения

from openai import OpenAI

client = OpenAI(api_key="YOUR_KEY", base_url="https://api.highwayapi.ai/openai")

response = client.chat.completions.create(
    model="qwen/qwen2.5-vl-72b-instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image_url", "image_url": {"url": "https://example.com/cityscape.jpg"}},
                {"type": "text", "text": "Опишите основные здания на изображении."}
            ]
        }
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Сравнительный анализ нескольких изображений

response = client.chat.completions.create(
    model="qwen/qwen2.5-vl-72b-instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image_url", "image_url": {"url": "https://example.com/product1.jpg"}},
                {"type": "image_url", "image_url": {"url": "https://example.com/product2.jpg"}},
                {"type": "text", "text": "Сравните основные различия между этими двумя продуктами."}
            ]
        }
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Частые вопросы и примечания

  • Разрешение и четкость изображения влияют на точность распознавания модели; рекомендуется использовать четкие исходные изображения.
  • Кодирование Base64 существенно увеличивает объем данных; рекомендуется использовать изображения размером не более 1MB.
  • При возникновении проблем обратитесь к документации платформы для разработчиков или отправьте тикет для получения поддержки.