Langkau ke kandungan
Imej dan fail

Imej dan fail

Hantar imej bersama mesej: model mana yang menerimanya, bentuk yang diterima dan had-hadnya.

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

Imej dibawa di dalam mesej pengguna, sebagai satu bahagian contentnya. Sampel membaca fail setempat dan menghantarnya 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 imej

Model Membaca
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Imej, dan dokumen: fail PDF, Word, PowerPoint, Excel dan teks biasa.
shannon-1.6-lite, shannon-1.6-pro Imej.
shannon-2-lite, shannon-2-pro Imej, dalam permintaan yang turut menghantar 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 Imej.
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 imej dijawab dengan status 400.
shannon-coder-1 Teks.

GET /v1/models melaporkan input imej bagi setiap id sebagai capabilities.vision. Model & harga

  • Model Shannon membaca fail dalam mesej pengguna yang terakhir. Letakkan imej dalam mesej yang bertanya mengenainya.
  • Keluarga Shannon 3 juga memerhatikan beberapa imej dan dokumen daripada mesej pengguna terdahulu apabila ia dihantar secara sebaris, dan membaca bilangan maksimum imej yang ditetapkan bagi setiap permintaan, dikira dari yang pertama.
  • Model open-weight yang dihoskan membaca imej dalam setiap mesej perbualan.

Bentuk yang diterima

Fail dihantar dengan salah satu daripada dua cara: di dalam permintaan sebagai base64, atau sebagai alamat yang diambil oleh API. Setiap fail dibawa bersama permintaan; API tidak mempunyai endpoint muat naik.

Endpoint Dalam permintaan (base64) Melalui 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://…"}}

Mesej pengguna yang sama dalam 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 mempunyai bentuk data:<media type>;base64,<data>. Bahagian ;base64 wajib.
  • Pada /v1/chat/completions dan /v1/responses, image_url boleh berupa rentetan itu sendiri atau objek {"url": "…"}.
  • Jenis fail datang daripada data URL atau daripada media_type. Tanpanya, imej dibaca sebagai image/png.
  • Fail sebaris dikira dalam saiz badan permintaan, yang boleh sehingga 32 MiB.
  • Diterima untuk keserasian: image_url.detail.

Had untuk fail jauh

Apabila anda menghantar alamat, API mengambil fail itu sebelum model berjalan, dalam had berikut:

Had Peraturan
Saiz Sehingga 8 MiB bagi setiap fail.
Masa 20 saat untuk menjawab.
Ubah hala Paling banyak 5.
Alamat http:// atau https://, tanpa nama pengguna atau kata laluan dalam alamat, pada hos yang mempunyai alamat awam.
Balasan hos Status dalam julat 200 dan badan yang tidak kosong. Jenis fail dibaca daripada Content-Type.
Diminta sebagai User-Agent: ShannonBot/1.0 (+https://shannon-ai.com)

Cara imej dikira dalam token

Pada model open-weight yang dihoskan, imej dikira satu token bagi setiap petak piksel 28 × 28: lebar dibahagi 28, dibundarkan ke atas, darab tinggi dibahagi 28, dibundarkan ke atas. Hasilnya menjadi sebahagian daripada usage.prompt_tokens dan dibilkan sebagai input.

1024 × 1024
1,369 token
1920 × 1080
2,691 token
512 × 512
361 token
  • Imej jauh diambil dahulu, jadi saiz sebenarnya yang dikira.
  • Imej yang saiznya tidak dapat dibaca dikira sebagai 1,024 token.
  • Endpoint pengiraan menggunakan peraturan yang sama untuk data URL. Ia tidak mengambil alamat jauh dan mengiranya sebagai 1,024 token. Pengiraan token
  • Bagi model Shannon, baca kos permintaan dengan imej daripada usage dalam balasan.

Dokumen dan fail lain

Keluarga Shannon 3 (shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro) juga membaca dokumen. Teks dokumen diambil keluar dan diberikan kepada model bersama mesej anda.

Dokumen Jenis 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 ialah satu bahagian mesej pengguna, sama seperti imej:

Endpoint Dalam permintaan (base64) Melalui 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 jenis media sebenar bagi fail itu. Tanpanya, dokumen dibaca sebagai application/pdf.
  • Fail teks biasa, seperti CSV, dibaca sebagai teks dan dilampirkan dengan cara yang sama.
  • Apabila dokumen tidak dapat dibaca, atau fail itu daripada jenis lain, model diberitahu dan boleh menyatakannya dalam jawapannya. Statusnya tetap 200.
  • Pada setiap model lain, bahagian dokumen tidak dimasukkan dalam bahan yang dibaca model, dan permintaan dijawab daripada selebihnya.
  • Dokumen yang dihantar melalui alamat diambil di bawah had untuk fail jauh di atas.

Ralat

Status Jenis Mesej Bila
400 invalid_request_error <id> does not accept image input Imej dihantar kepada model open-weight yang dihoskan yang hanya menerima teks. Tiada apa-apa ditolak daripada baki anda.
400 invalid_request_error audio and video input are not supported by any hosted model Bahagian audio atau video dihantar kepada model open-weight yang dihoskan.
413 invalid_request_error Failed to buffer the request body: … Badan permintaan, beserta fail sebarisnya, lebih besar daripada 32 MiB. Ralat itu membawa code: "request_too_large".

Model Shannon menjawab dengan status 200 walau apa pun fail yang dibawa permintaan: bahagian yang tidak dibacanya tidak dimasukkan. Pengendalian Ralat