> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jiekou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Визуально-языковые модели

export const VisionModels = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    let attempts = 0;
    const maxAttempts = 50;
    const INIT_DISPLAY_COUNT = 3;
    const interval = setInterval(() => {
      const clientComponent = document.getElementById("vision-models");
      if (clientComponent && window.jiekouRemoteData.llmModels.status === 'loaded') {
        const modelList = window.jiekouRemoteData.llmModels.data.filter(model => {
          return (model.features || []).includes('vision');
        });
        let displayModels = modelList.slice(0, INIT_DISPLAY_COUNT).map(model => {
          return `<li><span class="model-id-item">${model.id}</span></li>`;
        }).join('');
        let showMoreButton = '';
        if (modelList.length > INIT_DISPLAY_COUNT) {
          showMoreButton = `<button id="show-more-vision-model-btn" style="margin-left: 32px; color: rgb(40 116 255)">展示更多</button>`;
        }
        clientComponent.innerHTML = `
          <ul>${displayModels}</ul>
          ${showMoreButton}
        `;
        document.getElementById('show-more-vision-model-btn')?.addEventListener('click', () => {
          clientComponent.innerHTML = `
            <ul>${modelList.map(model => {
            return `<li><span class="model-id-item">${model.id}</span></li>`;
          }).join('')}</ul>
          `;
        });
        clearInterval(interval);
      }
      attempts++;
      if (attempts >= maxAttempts) {
        clearInterval(interval);
      }
    }, 200);
    return <div id="vision-models"></div>;
  }
};

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

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

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

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

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

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

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

Точность обработки изображения задается через поле `detail`; поддерживаются следующие варианты:

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

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

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

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

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

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

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

```python theme={null}
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")
```

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

Поддерживается отправка нескольких изображений вместе с текстом в качестве входных данных. Для лучшей производительности и качества понимания рекомендуется использовать не более двух изображений.

```json theme={null}
{
  "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), которые в настоящее время поддерживаются платформой:

<VisionModels />

## Тарификация

Входные изображения для визуально-языковых моделей преобразуются в Tokens и учитываются вместе с текстом при расчете стоимости вызова:

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

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

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

```python theme={null}
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)
```

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

```python theme={null}
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.
* При возникновении проблем обратитесь к документации платформы для разработчиков или отправьте тикет для получения поддержки.
