APIMaster.ai
Back to Blog
APIMaster Blog

Исправляем «Model Does Not Support Image Input» в OpenCode — не работает Vision у GPT и Claude

OpenCode не читает изображение с GPT или Claude? Модель поддерживает vision, но OpenCode отправляет только имя файла. Решение — объявить attachment и modalities для gpt-5.5 и моделей Claude в opencode.jsonc.

OpenCodeimage inputVisionGPTClaudeopencode.jsonc

Published 2026-07-14

Quick Answer

Вы прикрепили PNG/JPG в OpenCode, попросили GPT или Claude описать его и получили что-то вроде «the current model does not support image input» — или модель упоминает только имя файла, а не саму картинку. Почти во всех случаях модель действительно поддерживает vision; проблема в том, что OpenCode вообще не отправил изображение как мультимодальный ввод.

Корневая причина: OpenCode пересылает изображение только тогда, когда модель объявлена как поддерживающая изображения в opencode.jsonc. Без этого объявления он воспринимает вложение как обычную ссылку на файл и отбрасывает пиксели.

Быстрое решение: добавьте два поля к модели в opencode.jsonc, затем перезапустите OpenCode:

"attachment": true,
"modalities": {
  "input": ["text", "image"],
  "output": ["text"]
}

Если вам нужен OpenAI-совместимый endpoint с поддержкой vision, который работает с этой конфигурацией уже сегодня, APIMaster отдаёт gpt-5.5 и vision-модели Claude по адресу https://apimaster.ai/v1. Полная настройка: гайд по конфигурации OpenCode.

Как выглядит эта проблема

  • Вы переключаетесь на модель GPT или Claude в OpenCode, перетаскиваете скриншот и просите «describe this image».
  • В ответ приходит вариация «I can't read images», «image input is not supported for this model», или модель отвечает про имя файла (screenshot.png) вместо реального содержимого.
  • То же изображение прекрасно работает, если вставить его напрямую в ChatGPT или Claude.

Это не ограничение модели и не сломанный API-ключ. gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 и claude-haiku-4-5 — все принимают ввод изображений через OpenAI-совместимый Chat Completions API. Изображение просто так и не покинуло OpenCode.

Почему так происходит

OpenCode решает для каждой модели отдельно, можно ли отправить вложение и может ли это вложение быть изображением. Он считывает это из вашей конфигурации провайдера в opencode.jsonc. Если запись модели выглядит так:

"gpt-5.5": {
  "name": "gpt-5.5"
}

…то у OpenCode нет никакого сигнала о том, что модель принимает изображения. В зависимости от сборки он либо отказывается прикреплять файл, либо передаёт в текст промпта только имя вложения. Модель получает "[attachment: diagram.png]" — строку, а не картинку — и справедливо отвечает, что изображение ей не дали.

Решение — явно сообщить OpenCode две вещи:

Поле Значение
"attachment": true Этой модели разрешено получать вложения.
"modalities": { "input": ["text", "image"] } Эта модель принимает ввод image, поэтому OpenCode преобразует файл в мультимодальный content-блок image_url.

Как только оба поля заданы, OpenCode кодирует изображение в base64 и отправляет его как корректный vision-ввод — и модель его читает.

Как это исправить

1. Найдите свой opencode.jsonc

ОС Путь
macOS / Linux ~/.config/opencode/opencode.jsonc
Windows C:\Users\<username>\.config\opencode\opencode.jsonc

2. Добавьте attachment + modalities к каждой vision-модели

Вот рабочий блок провайдера для GPT и Claude на OpenAI-совместимом endpoint:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "apimaster": {
      "name": "APIMaster.ai",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://apimaster.ai/v1"
      },
      "models": {
        "gpt-5.5": {
          "name": "gpt-5.5",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          }
        },
        "claude-sonnet-4-6": {
          "name": "claude-sonnet-4-6",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          }
        }
      }
    }
  }
}

Полный пример, охватывающий claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 и reasoning-варианты, находится в гайде по настройке OpenCode. Вы можете включить ввод изображений только для одной модели — эти два поля нужны только ей.

3. Используйте правильный base URL

OpenAI-совместимый хост:

https://apimaster.ai/v1

Не используйте https://api.apimaster.ai/v1 — хост с префиксом api. может вызвать сбои TLS / подключения.

4. Перезапустите OpenCode

Изменения конфигурации загружаются при запуске. Полностью закройте и заново откройте OpenCode или как минимум начните новую сессию, иначе останется активной старая (слепая к изображениям) конфигурация.

5. Предпочитайте локальную загрузку / base64 публичным URL

Загрузите локальный PNG/JPG в OpenCode — он преобразуется в base64 data URL, и это надёжный путь. Передача публичного URL изображения напрямую может не сработать, потому что upstream должен его скачать и может упереться в ограничения формата, размера, MIME или защиты от хотлинкинга:

Error while downloading file. Upstream status code: 400.

Если вы это видите, перейдите на локальный файл / base64 data URL вместо удалённого URL.

Проверка, что всё работает

В OpenCode

Переключитесь на apimaster/gpt-5.5 или apimaster/claude-sonnet-4-6, загрузите изображение и спросите:

Describe the main content of this image.

Правильная конфигурация вернёт настоящее описание. Если модель по-прежнему видит только имя файла, значит поля attachment / modalities отсутствуют или OpenCode не был перезапущен.

Напрямую через API (изолируем проблему)

Чтобы убедиться, что сам endpoint обрабатывает vision — отделяя проблему конфигурации OpenCode от проблемы провайдера — отправьте base64-изображение. Никогда не прописывайте настоящий ключ жёстко; используйте переменную окружения:

export APIMASTER_API_KEY="your APIMaster API key"

curl https://apimaster.ai/v1/chat/completions \
  -H "Authorization: Bearer $APIMASTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {
        "role": "user",
        "content": [
          { "type": "text", "text": "Describe this image." },
          {
            "type": "image_url",
            "image_url": { "url": "data:image/png;base64,YOUR_IMAGE_BASE64" }
          }
        ]
      }
    ],
    "max_tokens": 1000
  }'

Замените model на claude-sonnet-4-6, чтобы так же протестировать Claude. Ответ 200, описывающий изображение, означает, что vision работает на уровне API — а значит, любой оставшийся сбой на стороне конфигурации OpenCode.

Держите API-ключ в безопасности

  • Никогда не помещайте API-ключ в opencode.jsonc. Этот файл хранит только провайдера, модели и их возможности.
  • Настраивайте ключ через flow /connect в OpenCode, интерфейс Connect Provider или переменную окружения.
  • Не вставляйте ключ в чаты, скриншоты, issues или публичные репозитории. Если он утёк, немедленно отзовите и перевыпустите его в консоли провайдера.

Чем помогает APIMaster

Если вам нужен единый OpenAI-совместимый endpoint, где vision у GPT и Claude «просто работает» с конфигурацией выше, APIMaster создан именно для этого:

Преимущество Что вы получаете
Один endpoint, много vision-моделей gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 — все поддерживают изображения, все на https://apimaster.ai/v1 с одним ключом.
Скидка Цены Marketplace до ~90% дешевле прайса OpenAI и ~85% дешевле прайса Claude (актуальные цены на сайте).
Соответствие модели Дешёвый релей может втихую подменить модель — убедитесь, что получаете настоящую, с помощью детекции по отпечаткам.

Пополнение от $1, оплата по факту использования, без подписки. Полная пошаговая настройка OpenCode — включая ввод изображений — в гайде по конфигурации OpenCode.

Зарегистрироваться на APIMaster →

Похожие гайды

FAQ

Поддерживает ли OpenCode ввод изображений вообще? Да. OpenCode может отправлять изображения любой vision-модели, но для этой модели в opencode.jsonc нужно объявить attachment: true и modalities.input: ["text", "image"]. Без объявления он отправляет только имя файла.

Какие модели APIMaster умеют читать изображения в OpenCode? gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 и claude-haiku-4-5 — все принимают ввод изображений. Добавьте два поля возможностей к каждой модели, которую хотите использовать с изображениями.

Почему модель видит только имя файла? OpenCode не преобразовал вложение в ввод изображения — вместо этого он поместил имя вложения в текст промпта. Это верный признак того, что поля attachment / modalities отсутствуют.

Я добавил поля, а всё равно не работает. Что дальше? Полностью перезапустите OpenCode, начните новую сессию и убедитесь, что активная модель — именно та, которую вы настроили. Затем протестируйте endpoint напрямую с помощью base64 curl выше, чтобы понять, в чём проблема — в OpenCode или в провайдере.

Почему публичный URL изображения выдал ошибку? Upstream должен скачивать удалённые URL и может быть заблокирован из-за размера, формата, MIME или защиты от хотлинкинга (Error while downloading file. Upstream status code: 400.). Используйте локальную загрузку / base64 data URL вместо этого.