APIMaster.ai
Back to Blog
APIMaster Blog

Perbaiki OpenCode "Model Does Not Support Image Input" — Vision GPT & Claude Tidak Berfungsi

OpenCode tidak mau membaca gambar dengan GPT atau Claude? Modelnya mendukung vision, tapi OpenCode hanya mengirim nama file. Perbaiki dengan mendeklarasikan attachment dan modalities untuk gpt-5.5 dan model Claude di opencode.jsonc.

OpenCodeimage inputVisionGPTClaudeopencode.jsonc

Published 2026-07-14

Quick Answer

Anda melampirkan PNG/JPG di OpenCode, meminta GPT atau Claude mendeskripsikannya, dan mendapat balasan seperti "the current model does not support image input" — atau modelnya hanya menyebut nama file, bukan gambarnya. Di hampir semua kasus, model tersebut memang mendukung vision; masalahnya adalah OpenCode tidak pernah mengirim gambar sebagai input multimodal.

Akar masalah: OpenCode hanya meneruskan gambar ketika model dideklarasikan mampu memproses gambar di opencode.jsonc. Tanpa deklarasi itu, ia memperlakukan lampiran sebagai referensi file biasa dan membuang piksel-pikselnya.

Perbaikan cepat: tambahkan dua field ke model di opencode.jsonc, lalu restart OpenCode:

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

Jika Anda butuh endpoint kompatibel-OpenAI yang mendukung vision dan langsung berfungsi dengan konfigurasi ini hari ini, APIMaster menyediakan model vision gpt-5.5 dan Claude di https://apimaster.ai/v1. Pengaturan lengkap: panduan konfigurasi OpenCode.

Seperti Apa Masalah Ini

  • Anda beralih ke model GPT atau Claude di OpenCode, menyeret masuk screenshot, lalu bertanya "describe this image."
  • Balasannya berupa variasi "I can't read images", "image input is not supported for this model", atau modelnya menjawab tentang nama file (screenshot.png) alih-alih isi sebenarnya.
  • Gambar yang sama berfungsi baik ketika Anda tempel langsung ke ChatGPT atau Claude.

Ini bukan keterbatasan model dan bukan API key yang rusak. gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, dan claude-haiku-4-5 semuanya menerima input gambar lewat API Chat Completions yang kompatibel-OpenAI. Gambarnya sekadar tidak pernah keluar dari OpenCode.

Kenapa Ini Terjadi

OpenCode memutuskan per model apakah sebuah lampiran boleh dikirim, dan apakah lampiran itu boleh berupa gambar. Ia membaca ini dari konfigurasi provider Anda di opencode.jsonc. Jika entri model Anda tampak seperti ini:

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

…maka OpenCode tidak punya sinyal bahwa model tersebut menerima gambar. Tergantung build-nya, ia entah menolak melampirkan file atau hanya meneruskan nama lampiran ke dalam teks prompt. Modelnya menerima "[attachment: diagram.png]" — sebuah string, bukan gambar — dan dengan benar menjawab bahwa ia tidak diberi gambar.

Perbaikannya adalah memberitahu OpenCode dua hal secara eksplisit:

Field Arti
"attachment": true Model ini diizinkan menerima lampiran.
"modalities": { "input": ["text", "image"] } Model ini menerima input image, jadi OpenCode mengonversi file menjadi blok konten image_url multimodal.

Setelah keduanya diatur, OpenCode meng-encode gambar dalam base64 dan mengirimnya sebagai input vision yang benar — dan modelnya membacanya.

Cara Memperbaikinya

1. Temukan opencode.jsonc Anda

OS Path
macOS / Linux ~/.config/opencode/opencode.jsonc
Windows C:\Users\<username>\.config\opencode\opencode.jsonc

2. Tambahkan attachment + modalities ke setiap model vision

Berikut blok provider yang berfungsi untuk GPT dan Claude pada endpoint yang kompatibel-OpenAI:

{
  "$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"]
          }
        }
      }
    }
  }
}

Contoh lengkap yang mencakup claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5, dan varian reasoning ada di panduan pengaturan OpenCode. Anda bisa mengaktifkan input gambar hanya untuk satu model — hanya model itu yang butuh dua field tersebut.

3. Gunakan base URL yang benar

Host yang kompatibel-OpenAI adalah:

https://apimaster.ai/v1

Jangan gunakan https://api.apimaster.ai/v1 — host dengan prefix api. bisa menyebabkan kegagalan TLS / koneksi.

4. Restart OpenCode

Perubahan konfigurasi dimuat saat startup. Tutup penuh lalu buka kembali OpenCode, atau minimal mulai sesi baru, kalau tidak konfigurasi lama (yang buta-gambar) tetap aktif.

5. Utamakan upload lokal / base64 daripada URL publik

Upload PNG/JPG lokal di OpenCode — file itu dikonversi menjadi data URL base64, yang merupakan jalur andal. Meneruskan URL gambar publik secara langsung bisa gagal, karena upstream harus mengunduhnya dan mungkin terbentur batasan format, ukuran, MIME, atau hotlink:

Error while downloading file. Upstream status code: 400.

Jika Anda melihat itu, beralih ke file lokal / data URL base64 alih-alih URL remote.

Uji Bahwa Ini Berfungsi

Di OpenCode

Beralih ke apimaster/gpt-5.5 atau apimaster/claude-sonnet-4-6, upload sebuah gambar, lalu tanyakan:

Describe the main content of this image.

Konfigurasi yang benar mengembalikan deskripsi nyata. Jika ia masih hanya melihat nama file, berarti field attachment / modalities hilang atau OpenCode belum di-restart.

Langsung lewat API (isolasi masalahnya)

Untuk memastikan endpoint-nya sendiri menangani vision — memisahkan masalah konfigurasi OpenCode dari masalah provider — kirim gambar base64. Jangan pernah hardcode key asli; gunakan environment variable:

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
  }'

Ganti model ke claude-sonnet-4-6 untuk menguji Claude dengan cara yang sama. Respons 200 yang mendeskripsikan gambar berarti vision berfungsi di lapisan API — jadi kegagalan yang tersisa ada di sisi konfigurasi OpenCode.

Jaga Keamanan API Key Anda

  • Jangan pernah menaruh API key di dalam opencode.jsonc. File itu hanya memuat provider, model, dan kapabilitas.
  • Konfigurasikan key lewat alur /connect OpenCode, UI Connect Provider, atau environment variable.
  • Jangan tempel key ke chat, screenshot, issue, atau repo publik. Jika bocor, cabut dan buat ulang segera di konsol provider Anda.

Bagaimana APIMaster Membantu

Jika Anda menginginkan satu endpoint kompatibel-OpenAI di mana vision GPT dan Claude "langsung berfungsi" dengan konfigurasi di atas, APIMaster dibangun tepat untuk ini:

Keunggulan Yang Anda dapatkan
Satu endpoint, banyak model vision gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 — semuanya mampu memproses gambar, semuanya di https://apimaster.ai/v1 dengan satu key.
Diskon Harga Marketplace hingga ~90% lebih murah dari tarif daftar OpenAI dan ~85% lebih murah dari tarif daftar Claude (harga live ada di situs).
Kesetiaan model Relay murah bisa diam-diam menukar model — pastikan Anda mendapat yang asli dengan deteksi fingerprint.

Mulai dari top-up $1, bayar sesuai pemakaian, tanpa langganan. Pengaturan OpenCode langkah demi langkah lengkap — termasuk input gambar — ada di panduan konfigurasi OpenCode.

Daftar di APIMaster →

Panduan Terkait

FAQ

Apakah OpenCode mendukung input gambar sama sekali? Ya. OpenCode bisa mengirim gambar ke model apa pun yang mendukung vision, tapi Anda harus mendeklarasikan attachment: true dan modalities.input: ["text", "image"] untuk model itu di opencode.jsonc. Tanpa deklarasi itu, ia hanya mengirim nama file.

Model APIMaster mana yang bisa membaca gambar di OpenCode? gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, dan claude-haiku-4-5 semuanya menerima input gambar. Tambahkan dua field kapabilitas ke setiap model yang ingin Anda gunakan dengan gambar.

Kenapa modelnya hanya melihat nama file? OpenCode tidak mengonversi lampiran menjadi input gambar — ia malah menaruh nama lampiran ke dalam teks prompt. Ini adalah tanda pasti bahwa field attachment / modalities hilang.

Saya sudah menambahkan field-nya tapi masih gagal. Sekarang apa? Restart penuh OpenCode, mulai sesi baru, dan pastikan model aktif adalah yang Anda konfigurasikan. Lalu uji endpoint langsung dengan curl base64 di atas untuk memeriksa apakah masalahnya ada di OpenCode atau di provider.

Kenapa URL gambar publik error? Upstream harus mengunduh URL remote dan bisa terblokir oleh ukuran, format, MIME, atau proteksi hotlink (Error while downloading file. Upstream status code: 400.). Gunakan upload lokal / data URL base64 sebagai gantinya.