Langsung ke konten
Gambar dan file

Gambar dan file

Kirim gambar bersama pesan: model mana yang menerimanya, bentuk yang diterima, dan batasnya.

POST https://api.shannon-ai.com/v1/chat/completions

Gambar dikirim di dalam pesan user, sebagai salah satu bagian dari content-nya. Contoh membaca file lokal dan mengirimnya sebagai data URL.

import base64
from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")

with open("photo.jpg", "rb") as f:
    image = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "What is in this picture?"},
            {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64," + image}},
        ],
    }],
)

print(response.choices[0].message.content)
200 JSON
{
  "id": "chatcmpl-8d1f3a5c7e9b4d2f6a8c0e2b4d6f8a1c",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A grey cat asleep on a windowsill, with a potted fern beside it.",
        "reasoning_content": null
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 286,
    "completion_tokens": 19,
    "total_tokens": 305
  }
}

Model mana yang menerima gambar

Model Membaca
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Gambar, dan dokumen: PDF, Word, PowerPoint, Excel, dan file teks biasa.
shannon-1.6-lite, shannon-1.6-pro Gambar.
shannon-2-lite, shannon-2-pro Gambar, pada permintaan yang juga mengirim tools atau response_format.
Kimi-K3-3BIT-REAP, MiniMax-M3-3BIT-REAP, Kimi-K2.6-W4A16-AUTOROUND-REAP, inkling-W4A16-AUTOROUND-REAP, MiMo-V2.5-W8A16 Gambar.
DeepSeek-V4-Pro-0813-3BIT-REAP, GLM-5.2-3BIT-REAP, Nemotron3Ultra-3BIT-REAP, DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP, Laguna-S-2.1-W4A16-AUTOROUND-REAP, MiMo-V2.5-Pro-W8A16, Hy3-W8A16 Teks. Permintaan dengan gambar dijawab dengan status 400.
shannon-coder-1 Teks.

GET /v1/models melaporkan input gambar per id sebagai capabilities.vision. Model & harga

  • Model Shannon membaca file dari pesan user terakhir. Taruh gambar di pesan yang menanyakannya.
  • Keluarga Shannon 3 juga mempertahankan beberapa gambar dan dokumen dari pesan user sebelumnya jika dikirim inline, dan membaca jumlah gambar maksimum tertentu per permintaan, dihitung dari yang pertama.
  • Model open-weight hosted membaca gambar dari setiap pesan dalam percakapan.

Bentuk yang diterima

File dikirim dengan salah satu dari dua cara: di dalam permintaan sebagai base64, atau sebagai alamat yang diambil API. Setiap file dikirim bersama permintaan; API tidak memiliki endpoint unggah.

Endpoint Di dalam permintaan (base64) Lewat alamat
/v1/chat/completions {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,…"}} {"type": "image_url", "image_url": {"url": "https://…"}}
/v1/responses {"type": "input_image", "image_url": "data:image/jpeg;base64,…"} {"type": "input_image", "image_url": "https://…"}
/v1/messages {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": "…"}} {"type": "image", "source": {"type": "url", "url": "https://…"}}

Pesan user yang sama di setiap format:

{
  "role": "user",
  "content": [
    {"type": "text", "text": "What is in this picture?"},
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD…"
      }
    }
  ]
}
  • Data URL berbentuk data:<media type>;base64,<data>. Bagian ;base64 wajib.
  • Di /v1/chat/completions dan /v1/responses, image_url dapat berupa string itu sendiri atau objek {"url": "…"}.
  • Tipe file berasal dari data URL atau dari media_type. Tanpanya, gambar dibaca sebagai image/png.
  • File inline dihitung dalam ukuran body permintaan, yang dapat berukuran hingga 32 MiB.
  • Diterima demi kompatibilitas: image_url.detail.

Batas untuk file jarak jauh

Ketika Anda mengirim alamat, API mengambil file sebelum model berjalan, dalam batas berikut:

Batas Aturan
Ukuran Hingga 8 MiB per file.
Waktu 20 detik untuk menjawab.
Pengalihan Paling banyak 5.
Alamat http:// atau https://, tanpa nama pengguna atau kata sandi dalam alamat, pada host dengan alamat publik.
Balasan host Status dalam rentang 200 dan body yang tidak kosong. Tipe file dibaca dari Content-Type.
Diminta sebagai User-Agent: ShannonBot/1.0 (+https://shannon-ai.com)

Cara gambar dihitung dalam token

Pada model open-weight hosted, gambar dihitung satu token untuk setiap patch 28 × 28 piksel: lebar dibagi 28, dibulatkan ke atas, dikali tinggi dibagi 28, dibulatkan ke atas. Hasilnya menjadi bagian dari usage.prompt_tokens dan ditagih sebagai input.

1024 × 1024
1,369 token
1920 × 1080
2,691 token
512 × 512
361 token
  • Gambar jarak jauh diambil lebih dulu, jadi ukuran sebenarnya yang dihitung.
  • Gambar yang ukurannya tidak dapat dibaca dihitung 1,024 token.
  • Endpoint penghitungan memakai aturan yang sama untuk data URL. Endpoint itu tidak mengambil alamat jarak jauh dan menghitungnya sebagai 1,024 token. Penghitungan token
  • Untuk model Shannon, baca biaya permintaan dengan gambar dari usage dalam balasan.

Dokumen dan file lain

Keluarga Shannon 3 (shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro) juga membaca dokumen. Teks dokumen diambil dan diberikan ke model bersama pesan Anda.

Dokumen Tipe media
PDF application/pdf
Word application/vnd.openxmlformats-officedocument.wordprocessingml.document
PowerPoint application/vnd.openxmlformats-officedocument.presentationml.presentation
Excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Dokumen adalah bagian dari pesan user, seperti gambar:

Endpoint Di dalam permintaan (base64) Lewat alamat
/v1/chat/completions, /v1/messages {"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} {"type": "document", "source": {"type": "url", "url": "https://…"}}
/v1/responses {"type": "input_file", "file_data": "data:application/pdf;base64,…"} {"type": "input_file", "file_url": "https://…"}
{
  "model": "shannon-3",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "document",
          "source": {
            "type": "base64",
            "media_type": "application/pdf",
            "data": "JVBERi0xLjcKJeLjz9MK…"
          }
        },
        {"type": "text", "text": "Summarise this report in five points."}
      ]
    }
  ]
}
  • Berikan tipe media file yang sebenarnya. Tanpanya, dokumen dibaca sebagai application/pdf.
  • File teks biasa, seperti CSV, dibaca sebagai teks dan dilampirkan dengan cara yang sama.
  • Ketika dokumen tidak dapat dibaca, atau file bertipe lain, model diberi tahu dan dapat menyampaikannya dalam jawabannya. Statusnya tetap 200.
  • Pada model lain, bagian dokumen dihilangkan dari yang dibaca model, dan permintaan dijawab dari bagian sisanya.
  • Dokumen yang dikirim lewat alamat diambil dengan batas untuk file jarak jauh di atas.

Error

Status Tipe Pesan Kapan
400 invalid_request_error <id> does not accept image input Gambar dikirim ke model open-weight hosted yang hanya menerima teks. Tidak ada yang dipotong dari saldo Anda.
400 invalid_request_error audio and video input are not supported by any hosted model Bagian audio atau video dikirim ke model open-weight hosted.
413 invalid_request_error Failed to buffer the request body: … Body permintaan, beserta file inline-nya, lebih besar dari 32 MiB. Error membawa code: "request_too_large".

Model Shannon menjawab dengan status 200 apa pun file yang dibawa permintaan: bagian yang tidak dibacanya dihilangkan. Penanganan kesalahan