コンテンツへスキップ
画像とファイル

画像とファイル

メッセージとともに画像を送信する方法:対応するモデル、利用できる形式、上限。

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

画像は、ユーザーメッセージの content の一部として、メッセージ内で送信します。サンプルは、ローカルファイルを読み込み、データ 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
  }
}

画像に対応するモデル

モデル 読み取り対象
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro 画像とドキュメント:PDF、Word、PowerPoint、Excel、プレーンテキストファイル。
shannon-1.6-lite, shannon-1.6-pro 画像。
shannon-2-lite, shannon-2-pro 画像。ただし tools や response_format も送信するリクエストの場合。
Kimi-K3-3BIT-REAP, MiniMax-M3-3BIT-REAP, Kimi-K2.6-W4A16-AUTOROUND-REAP, inkling-W4A16-AUTOROUND-REAP, MiMo-V2.5-W8A16 画像。
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 テキスト。画像を含むリクエストにはステータス 400 が返されます。
shannon-coder-1 テキスト。

GET /v1/models は、ID ごとの画像入力を capabilities.vision として報告します。 モデルと料金

  • Shannon モデルは、最後のユーザーメッセージのファイルを読み取ります。画像は、それについて尋ねるメッセージに入れてください。
  • Shannon 3 ファミリーは、インラインで送信された場合に限り、以前のユーザーメッセージの画像とドキュメントの一部も参照対象として保持します。また、リクエストごとに、最初から数えて決められた最大数の画像を読み取ります。
  • ホスト型オープンウェイトモデルは、会話のすべてのメッセージの画像を読み取ります。

利用できる形式

ファイルは二通りのどちらかの方法で送信します。base64 としてリクエスト内に含めるか、API が取得するアドレスとして指定します。すべてのファイルはリクエストとともに送られます。API にアップロード用のエンドポイントはありません。

エンドポイント リクエスト内(base64) アドレス指定
/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://…"}}

各形式での同じユーザーメッセージ:

{
  "role": "user",
  "content": [
    {"type": "text", "text": "What is in this picture?"},
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD…"
      }
    }
  ]
}
  • データ URL の形式は data:<media type>;base64,<data> です。;base64 の部分は必須です。
  • /v1/chat/completions と /v1/responses では、image_url は文字列そのものでも、オブジェクト {"url": "…"} でもかまいません。
  • ファイルの種類は、データ URL または media_type から決まります。指定がない場合、画像は image/png として読み取られます。
  • インラインファイルは、最大 32 MiB までのリクエストボディのサイズに含まれます。
  • 互換性のために受け付けられるもの:image_url.detail。

リモートファイルの制限

アドレスを送信した場合、API はモデルが実行される前にファイルを取得します。その際、次の制限が適用されます。

上限 ルール
サイズ ファイルあたり最大 8 MiB。
時間 応答まで 20 秒。
リダイレクト 最大 5 回まで。
アドレス http:// または https://。アドレスにユーザー名やパスワードを含めず、公開アドレスを持つホストであること。
ホストの応答 200 番台のステータスと、空ではないボディ。ファイルの種類は Content-Type から読み取られます。
リクエスト時の識別 User-Agent: ShannonBot/1.0 (+https://shannon-ai.com)

画像のトークン数の数え方

ホスト型オープンウェイトモデルでは、画像は 28 × 28 ピクセルのパッチごとに一トークンとして数えられます。幅を 28 で割って切り上げた値に、高さを 28 で割って切り上げた値を掛けたものです。その結果は usage.prompt_tokens の一部となり、入力として課金されます。

1024 × 1024
1,369 トークン
1920 × 1080
2,691 トークン
512 × 512
361 トークン
  • リモート画像は最初に取得されるため、実際のサイズで数えられます。
  • サイズを読み取れない画像は、1,024 トークンとして数えられます。
  • カウント用エンドポイントは、データ URL に対して同じルールを使います。リモートアドレスは取得せず、1,024 トークンとして数えます。 トークンカウント
  • Shannon モデルでは、画像を含むリクエストのコストを、応答の usage から確認してください。

ドキュメントとその他のファイル

Shannon 3 ファミリー(shannon-3、shannon-3-pro、shannon-3.1、shannon-3.1-pro)は、ドキュメントも読み取ります。ドキュメントのテキストが抽出され、メッセージとともにモデルに渡されます。

ドキュメント メディアタイプ
PDF application/pdf
Word application/vnd.openxmlformats-officedocument.wordprocessingml.document
PowerPoint application/vnd.openxmlformats-officedocument.presentationml.presentation
Excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

ドキュメントは、画像と同様に、ユーザーメッセージのパートです。

エンドポイント リクエスト内(base64) アドレス指定
/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."}
      ]
    }
  ]
}
  • ファイルの実際のメディアタイプを指定してください。指定がない場合、ドキュメントは application/pdf として読み取られます。
  • CSV などのプレーンテキストファイルは、テキストとして読み取られ、同じように添付されます。
  • ドキュメントを読み取れない場合や、ファイルが別の種類の場合は、その旨がモデルに伝えられ、モデルは回答でそれを述べられます。ステータスは 200 のままです。
  • それ以外のモデルでは、ドキュメントパートはモデルが読み取る内容から除かれ、リクエストは残りの部分で応答されます。
  • アドレスで送信されたドキュメントは、上記のリモートファイルの上限に従って取得されます。

エラー

ステータス タイプ メッセージ 発生条件
400 invalid_request_error <id> does not accept image input テキストしか受け付けないホスト型オープンウェイトモデルに、画像が送信されました。残高からは何も引かれません。
400 invalid_request_error audio and video input are not supported by any hosted model 音声または動画のパートが、ホスト型オープンウェイトモデルに送信されました。
413 invalid_request_error Failed to buffer the request body: … インラインファイルを含むリクエストボディが 32 MiB を超えています。エラーには code: "request_too_large" が含まれます。

Shannon モデルは、リクエストにどのようなファイルが含まれていてもステータス 200 で応答します。読み取らないパートは除かれます。 エラー処理