4.0 KiB
4.0 KiB
ReadImage
画像対応ワーカーが画像を直接受け取るか、対応ワーカーに問い合わせて説明文を受け取る。
基本
ReadImage({ file_path: "input/screenshot.png" })
// → 画像内の文字・図表・物体について自然言語の説明が返る
BrowseWeb で開いたページに載っていた画像は source/images/ に自動で溜まる。そのまま渡せば読める。ページを開き直してスクリーンショットを撮る必要はない。索引 source/index.jsonl の kind: "image" の行に、どのページに載っていた画像かが入っている(詳細は ReadToolDoc({ name: "BrowseWeb" }))。
ReadImage({ file_path: "source/images/example.com-figure.png" })
動作要件
このツールが使える条件は 2 通りある。
| 条件 | 何が返るか |
|---|---|
実行中の worker が capabilities.image: true |
画像そのものが会話に注入される。以後の発言で画像を見ながら考えられる |
実行中の worker は非対応だが llm.offload.image: true かつ capabilities.image: true の worker が居る |
対応 worker が書いた説明文だけが返る。画像は会話に載らない |
どちらにも当てはまらないとき、このツールはワークスペースで許可されていても function definition から自動除外される。
回した実行(委譲モード)の性質
- 1 回きりの問い合わせ。画像はエージェントのコンテキストに載らない
- 「さっきの画像の右下は何色だった?」のような追い質問はできない。知りたいことは
promptに全部書く。promptを省くと汎用の説明が返るだけで、価値が大きく落ちる - 観点を変えて聞きたくなったら、
promptを変えてもう一度呼ぶ - 呼び出し先は
capabilities.image: trueの worker から空きのある台が自動で選ばれる。全台が埋まって いれば空くまで待つ(タスクを中断すれば待ちからも抜ける) - ブラウザ操作の分割スクリーンショット(既定で最大 10 枚)をこのモードで読むと、 1 枚ずつ独立した説明が 10 個返る。「この表の続きは次の画像」といった横断した 判断はできない。必要なら 1 枚ずつ観点を指定して呼ぶ
prompt の書き方
// 悪い例(委譲モードでは特に価値が低い)
ReadImage({ file_path: "input/chart.png" })
// 良い例
ReadImage({
file_path: "input/chart.png",
prompt: "縦軸の単位と、2024 年のバーの値を読み取って。凡例の項目名も全部挙げて。",
})
用途
- スクリーンショットの内容説明
- 図・グラフ・チャートの読み取り
- ページレイアウトの確認
- 写真の被写体・状況把握
文字読み取りについて
- ある程度の OCR は可能だが、精度が要求される文字情報には別途 OCR ツールの使用を検討
- 数字・記号・固有名詞を厳密に扱う場合は VLM のハルシネーションに注意
- パラメータシート、表、コード等は誤読リスクが高い
入力ファイル
input//output//source/images/配下のローカル画像ファイル- URL 指定は不可(DownloadFile で先にローカル保存する)
対応形式は 2 通りある。
| 形式 | 渡し方 | |
|---|---|---|
| そのまま渡す | png, jpg, jpeg, gif, webp, bmp | ファイルの中身をそのままモデルへ |
| PNG に起こして渡す | svg, avif, tiff, tif, ico | こちら側で PNG に変換してからモデルへ。ファイル自体は元の形式のまま残る |
後者はページの魚拓が溜める形式(source/images/)に合わせたもの。BMP を格納した古い形式の .ico だけは読めず、理由付きのエラーが返る(いまの web のアイコンはほぼ PNG を格納しているので通常は当たらない)。