smolagents ビジョンサポートのアップデート
Hugging Faceは smolagents にビジョンサポートを統合し、Vision Language Models (VLMs) をエージェントのパイプライン内でネイティブに使用できるようにしました。このアップデートにより、エージェントは視覚情報を処理できるようになり、オブジェクトの配置、色分けされたメッセージ、アイコンなどの重要なデータがテキスト抽出時に失われてしまう「ビジョンの壁」を克服します。
ネイティブなビジョン統合方法
smolagents では、視覚データが静的か動的かに応じて、エージェントに画像を渡すための2つの主要な方法を提供しています。
初期化時の静的画像入力
Document AIや、視覚的要素を含む長いPDFの分析などのユースケースでは、タスクの開始時に画像を一度だけ渡すことができます。これは、run メソッドに画像のリストを提供することで実現されます:
agent.run("Describe these images:", images=[image_1, image_2])
これらの入力は TaskStep の task_images 属性に保存され、プロンプトと共にモデルに渡されます。
コールバックによる動的画像入力
ウェブブラウザのように視覚的な状態が変化する環境では、画像をエージェントのメモリに動的に追加する必要があります。smolagents は、MultiStepAgent クラスとその ReAct フレームワークのループを通じてこれを実現します。
ReAct ループの各ステップの最後に、エージェントは agent.step_callbacks で定義されたすべての関数を実行します。カスタムコールバックを作成することで、開発者はエージェントのメモリ内にある ActionStep の observation_images 属性に新しい画像をログとして記録できます。これにより、モデルは次のステップを決定する前に、前のアクションの直接的な影響を視覚的に確認できます。
ビジョン対応ウェブブラウザエージェントの構築
Hugging Faceは、helium ライブラリ(selenium ベース)と CodeAgent を使用して自律的なウェブブラウジングエージェントを作成することで、これらのアップデートの有用性を示しています。
技術的な実装
ビジョンを備えたブラウジングエージェントを実装するには、以下のコンポーネントが利用されます:
- カスタムツール: ナビゲーション用の
go_back()や、CSSセレクターを使用してモーダルを閉じるclose_popups()など、自動化ライブラリでは処理が困難なアクションのために特化したツールが作成されます。 - ビジョンコールバック: ブラウザの現在の状態をPNGとしてキャプチャし、PIL画像に変換して、毎ステップの最後に
step_log.observations_imagesに割り当てるsave_screenshotコールバックが実装されます。 - モデル設定: 画像のサポートはすべてのモデルで利用可能です。VLM を使用して
TransformersModelを使用する場合、画像が正しく処理されるように、初期化時にflatten_messages_as_textパラメータをFalseに設定する必要があります。
ワークフローの例
提供された例では、CodeAgent に、トレンドの GitHub リポジトリのトップ著者の総コミット数を見つけるタスクが与えられます。エージェントは、ページ操作のための helium、ナビゲーションのためのカスタムツール、およびページレイアウトを視覚的に解釈して正しいプロフィールに移動するための VLM(Qwen2VL-72B など)を組み合わせて使用します。
モデルの互換性とパフォーマンス
ビジョンサポートは smolagents のモデルスイート全体に統合されています。ビジョンベースのタスクの有効性は、使用する VLM の性能に大きく依存します。Hugging Face は、Qwen2VL-72B や GPT-4o のような高容量モデルが、複雑な視覚的ナビゲーションタスクにおいてより高い成功率を示すと述べています。