1. Введение в модель GPT-4 Vision

Модель GPT-4 Vision (GPT-4V) - это мультимодельная модель искусственного интеллекта, представленная компанией OpenAI, которая объединяет возможности визуального понимания на основе GPT-4. В отличие от традиционных моделей обработки текста, GPT-4V способна получать и анализировать изображения, предоставляя описания, отвечая на вопросы и взаимодействуя с изображениями.

Примеры применения:

  • Распознавание и классификация продуктов: Платформы электронной коммерции могут использовать GPT-4V для идентификации и предоставления описаний изображений продуктов, помогая улучшить системы поиска и рекомендаций.
  • Помощь в медицинских решениях: Хотя GPT-4V не подходит для непосредственной профессиональной медицинской диагностики по изображениям, он может помогать медицинскому персоналу в начальном понимании изображений и организации данных.
  • Образование и исследования: В учебе и научных исследованиях GPT-4V может использоваться для анализа диаграмм, результатов экспериментов и автоматической интерпретации научных изображений.
  • Мониторинг и анализ трафика: Анализируя изображения трафикового наблюдения, GPT-4V может помогать системам управления трафиком в режиме реального времени с отчетностью о состоянии и определением аварий.

2. Простой пример

Ниже приведен простой пример использования запроса CURL для демонстрации использования модели GPT-4 Vision для анализа изображений:

Параметры запроса API:

  • model: Указывает версию модели, в данном случае "gpt-4-vision-preview".
  • messages: Содержит определение роли и контент, где контент может включать текст и ссылки на изображения.
  • max_tokens: Указывает максимальный предел длины для генерации текста.

Пример запроса CURL:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4-vision-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Что на этом изображении?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "Ваша ссылка на изображение"
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'

С помощью вышеприведенного запроса мы отправили изображение в модель GPT-4 Vision и задали простой вопрос: "Что на этом изображении?" Модель проанализирует содержимое изображения и предоставит ответ на основе содержимого изображения.

3. Загрузка изображений с использованием кодирования Base64

В некоторых случаях может потребоваться загрузить локальный файл изображения в модель GPT-4 Vision. В таких случаях мы можем встроить данные изображения в запрос API, используя кодирование base64.

Пример кода на Python:

import base64
import requests

api_key = "ВАШ_OPENAI_API_KEY"

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

image_path = "путь_к_вашему_изображению.jpg"

base64_image = encode_image(image_path)

headers = {
  "Content-Type": "application/json",
  "Authorization": f"Bearer {api_key}"
}

payload = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Что на этом изображении?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}"
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

print(response.json())

В приведенном выше коде мы сначала преобразуем локальный файл изображения в строку, закодированную в формате base64, а затем отправляем эту строку как часть запроса к API. Ответ модели содержит описание содержимого изображения.

4. Обработка нескольких входов изображений

Иногда необходимо проанализировать несколько изображений одновременно. Модель GPT-4 Vision поддерживает одновременную обработку нескольких входных изображений и позволяет пользователям задавать вопросы о этих изображениях или сравнивать их различия.

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4-vision-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Чем отличаются эти изображения?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "URL первого изображения",
            }
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "URL второго изображения",
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'

В этом запросе мы отправляем два изображения в API. Модель будет анализировать каждое изображение отдельно и предоставлять описания и сравнения на основе заданных вопросов. Этот подход идеален для общего анализа коллекции изображений.

5. Настройка уровня детализации анализа изображений

При использовании визуальной модели GPT-4 для анализа изображений вы можете установить уровень детализации в соответствии с вашими потребностями. Изменяя параметр detail, вы можете выбрать один из low, high или auto. Вот подробное объяснение каждого варианта и способ его установки:

  • low: Выбор низкого уровня детализации отключит "высокоразрешающую" модель. Эта модель получит изображение низкого разрешения 512 пикселей x 512 пикселей и будет использовать бюджет 65 токенов для его представления. Это подходит для сценариев, не требующих высокой детализации, что помогает достичь более быстрого времени ответа и потребления меньшего количества входных токенов.

  • high: Высокий уровень детализации позволяет модели сначала увидеть изображение низкого разрешения, а затем создать подробную обрезанную версию в сетке 512 пикселей на основе размера входного изображения. Каждая подробная обрезка представлена удвоенным бюджетом 129 токенов (то есть 65 токенов на каждую стандартную обрезку).

  • auto: Автоматический уровень детализации определит, использовать ли низкий или высокий уровень детализации в зависимости от размера входного изображения.

В следующем примере кода показано, как установить уровень детализации:

import base64
import requests

api_key = "ваш_OPENAI_API_KEY"

image_path = "путь_к_вашему_изображению.jpg"

base64_image = base64.b64encode(open(image_path, "rb").read()).decode('utf-8')

headers = {
  "Content-Type": "application/json",
  "Authorization": f"Bearer {api_key}"
}

payload = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Что на этом изображении?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}",
            "detail": "high"  # Установлен высокий уровень детализации
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

print(response.json())

6. Понимание ограничений модели и управление изображениями

6.1. Ограничения модели

Несмотря на мощную функциональность визуальной модели GPT-4, она не лишена ограничений, и понимание этих ограничений крайне важно для использования ее для анализа изображений. Вот обзор некоторых известных ограничений:

  • Медицинские изображения: Модель не подходит для интерпретации профессиональных медицинских изображений, таких как КТ-снимки, и не следует использовать для медицинских рекомендаций.

  • Текст на нелатинском алфавите: Модель может плохо справляться с обработкой изображений, содержащих текст на нелатинском алфавите, таком как японский или корейский.

  • Пространственная локализация: Производительность модели недостаточна в задачах, требующих точного пространственного определения, таких как определение позиций фигур на шахматной доске.

  • Детали изображений: Модель может испытывать трудности в понимании диаграмм или текста с цветовыми и стилевыми вариациями (например, сплошные линии, штриховые линии) на изображении.

  • Поворот изображения: Модель может неправильно интерпретировать наклонный или перевернутый текст и изображения.

### 6.2 Управление изображениями в сеансах

Поскольку API завершения чата является состоянием, вам необходимо самостоятельно управлять сообщениями (включая изображения), передаваемыми модели. Если вы хотите использовать одно и то же изображение несколько раз, вам необходимо повторно отправлять данные изображения с каждым запросом API.

```python
дополнительная_нагрузка = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Исходя из этого изображения, какие у вас есть предложения?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}"
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

новый_ответ = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=дополнительная_нагрузка)

print(новый_ответ.json())

7. Расчет стоимости

Каждое изображение при использовании опции detail: low потребляет фиксированные 85 токенов. Для изображений с опцией detail: high изображение сначала масштабируется пропорционально до размера 2048px x 2048px, затем более короткая сторона изображения убедительно приводится к размеру 768px. Затем изображение делится на несколько квадратов размером 512px, при этом каждый квадрат потребляет 170 токенов, и к окончательному итоговому подсчету добавляется еще 85 токенов.

Например, если у изображения размеры 1024px x 1024px, и выбрана опция detail: high, стоимость токенов составит:

  • Во-первых, поскольку 1024 меньше 2048, нет начальной коррекции размера.
  • Затем, при более короткой стороне 1024, изображение изменяется на размер 768 x 768.
  • Для представления изображения необходимо 4 квадрата размером 512px, поэтому итоговая стоимость токенов будет равна 170 * 4 + 85 = 765.

Для более подробного понимания метода расчета стоимости обратитесь к документации модели GPT-4 Vision.

8. Часто задаваемые вопросы

Ниже приведены некоторые распространенные вопросы и их ответы, с которыми пользователи могут столкнуться при использовании модели GPT-4 Vision:

В: Могу ли я улучшить возможности изображения gpt-4?

О: В настоящее время мы не поддерживаем улучшение возможностей изображения gpt-4.

В: Могу ли я использовать gpt-4 для создания изображений?

О: Нет, вы можете использовать dall-e-3 для создания изображений и gpt-4-vision-preview для понимания изображений.

В: Какие типы файловых загрузок поддерживаются?

О: В настоящее время мы поддерживаем файлы PNG (.png), JPEG (.jpeg и .jpg), WEBP (.webp) и неанимированные GIF (.gif).