マルチモーダル入力(Vision)─ 画像・スクリーンショットをエージェントに渡す
結論から言うと、現代のLLMは画像を「見て」理解できる。テキストと画像を組み合わせてAPIに送るだけで、スクリーンショットの読み取り・図の解説・帳票からの数値抽出など、テキストだけでは難しかったタスクをエージェントで扱えるようになる。
なぜ画像入力が重要か?
テキストだけで情報を伝えるのは意外と手間がかかる。UIのバグを文章で説明するより「スクリーンショットを見てください」のほうがずっと速い。エージェントに画像を渡せると、次のようなユースケースが広がる。
- UI操作の自動化: スクリーンショットを見てクリック先を判断する(→レッスン22「Computer Use」と組み合わせると強力)
- 帳票・図の読み取り: 領収書やグラフから数値を抽出する
- マルチモーダルRAG: 図入りPDFを画像とテキストの両面から検索する
- 品質チェック: 製品画像を見て欠陥を検出する
Anthropicが公開している Vision ドキュメントでは、「画像→テキスト」の順にコンテンツを並べるとパフォーマンスが高い、と説明されている。
どうやって画像を渡すか
Anthropic APIでは、messagesのcontent配列にimageブロックを追加するだけ。渡し方は3通りある。
1. base64エンコード(最も基本的な方法)
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "<BASE64文字列>"
}
}
2. URL指定(公開画像なら手軽)
{
"type": "image",
"source": {
"type": "url",
"url": "https://example.com/chart.png"
}
}
3. Files API(file_id)(会話が長くなる場合に推奨)
会話ターンを重ねるたびに同じ画像をbase64で送り直すと、リクエストサイズが膨らんでコストと遅延が増える。Files APIに一度アップロードしてfile_idを参照するだけに留めると、ペイロードを小さく保てる。
知っておくべき制限とコスト
| 項目 | 内容 |
|---|---|
| 対応フォーマット | JPEG / PNG / GIF / WebP |
| 最大ファイルサイズ | 10 MB(API直接) |
| 1リクエストの最大枚数 | 100〜600枚(モデルによる) |
トークンコストは画像サイズに比例する。内部では28×28ピクセルを「1ビジュアルトークン」として計算する設計で、1000×1000ピクセルの画像は約1,296ビジュアルトークン相当になるとされる。費用が気になる場合は、送る前に画像をリサイズするのが有効だ。
苦手なことも押さえておく
- 人物の特定: 規約で禁止されており、APIも拒否する
- 精密な座標・個数: 近似値に留まる(精密な座標が必要なら専用ガイドを参照)
- 医療診断用の精密読影: 専門家の代替として使わないこと
- AI生成画像かどうかの判別: 精度は保証されない
マルチモーダルモデルの研究背景としては、2023年にNeurIPS で発表されたLLaVA論文(Visual Instruction Tuning, Liu et al., arXiv:2304.08485)が代表的で、ビジョンエンコーダと言語モデルを組み合わせる設計が現在の主流とされる。
まとめ
マルチモーダル入力は、テキストだけでは扱いにくい情報をエージェントに渡す強力な手段だ。APIではimageブロックをコンテンツに追加するだけで使え、JPEG・PNG・GIF・WebPに対応している。トークンコストは画像サイズに比例するため、必要に応じてリサイズしてから送るのが実践的なコツ。まず小さな画像で動作を確認し、用途に合ったサイズと品質に調整していくのがおすすめだ。