smolagents のすべてのエージェントは、ReAct フレームワークの抽象化である MultiStepAgent クラスに基づいています。
ReAct フレームワークは現在、エージェントを構築する主流なアプローチです。その名前は 2 つの単語: “Reason” と “Act.” の連結により、このアーキテクチャに従うエージェントは必要な数のステップでタスクを解決します。各ステップは推論ステップとアクションステップで構成されます。
smolagents : コンセプト・ガイド : 他段階エージェントはどのように動作するか?
作成 : クラスキャット・セールスインフォメーション
作成日時 : 08/25/2025
バージョン : v1.21.2
* 本記事は huggingface.co/docs/smolagents/ の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
smolagents : コンセプト・ガイド : 他段階エージェントはどのように動作するか?
ReAct フレームワーク (Yao et al., 2022) は現在、エージェントを構築する主流なアプローチです。
名前は 2 つの単語、“Reason” と “Act.” の連結に基づいています。実際、このアーキテクチャに従うエージェントは必要な数のステップでタスクを解決します。各ステップは 推論ステップ、それから (手元のタスクの解決に近づけるためにツール呼び出しを定式化する) アクションステップ で構成されます。
smolagents のすべてのエージェントは、ReAct フレームワークの抽象化である、単一の MultiStepAgent クラスに基づいています。
基本的なレベルでは、このクラスは以下のステップのサイクルでアクションを実行します、そこでは既存の変数と知識は以下のようにエージェント・ログに組み込まれます :
- 初期化: システムプロンプトは SystemPromptStep に保存され、ユーザクエリは TaskStep にログ記録されます。
- While ループ (ReAct ループ):
- agent.write_memory_to_messages() を使用してエージェントログを LLM-readable チャット・メッセージ のリストに書きます。
- これらのメッセージを Model オブジェクトに送信して補完 (completion) を取得する。補完をパースしてアクションを取得します (ToolCallingAgent 用に JSON blob、CodeAgent 用にコードスニペット)。
- アクションを実行し、結果をメモリに記録します (ActionStep)。
- 各ステップの最後に、agent.step_callbacks で定義されたすべてのコールバック関数を実行します。
- agent.write_memory_to_messages() を使用してエージェントログを LLM-readable チャット・メッセージ のリストに書きます。
オプションで、planning が有効化されている場合、プランは定期的に更新されて PlanningStep に保存されます。これは手元のタスクについての事実 (facts) をメモリに供給することも含みます。
CodeAgent については、下図のようなものです :
エージェントの 2 つのバージョンを実装しています :
- CodeAgent はツール呼び出しを Python コードスニペットとして生成します。
- ToolCallingAgent は、多くのフレームワークで一般的であるように、ツール呼び出しを JSON として記述します。ニーズに応じて、いずれのアプローチも使用できます。例えば、web ブラウジングは各ページ操作後に待機が必要である場合が多いので、JSON ツール呼び出しがうまくフィットします。
以上