Hugging Face smolagents リリース
Hugging Faceは、smolagentsを導入しました。これは言語モデルのエージェント機能を解放するために設計されたシンプルなライブラリです。このライブラリの主な革新は、「Code Agents」―実行可能なコードとしてアクションを記述するエージェント―の推進であり、これにより従来のJSONベースのツール呼び出しと比較して、構成性、オブジェクト管理、汎用性が優れています。
AIエージェンシーのスペクトラム
AIシステムにおけるエージェンシーとは、LLMの出力がプログラムのワークフローに与える影響のレベルとして定義されます。これは二値状態ではなく連続したスペクトラムとして存在します:
- シンプルプロセッサ: LLM出力はプログラムフローに影響を与えない。
- ルーター: LLM出力は基本的な制御フロー(例:if/else)を決定する。
- ツール呼び出し: LLM出力は実行する関数とその引数を決定する。
- マルチステップエージェント: LLM出力はループを介して反復とプログラムの継続を制御する。
- マルチエージェント: 1つのエージェントワークフローが別のエージェントワークフローをトリガーする。
エージェンシーワークフローを使用するタイミング
エージェントシステムは、タスクのワークフローを事前に決定できない場合に最も効果を発揮します。決定論的ワークフロー(ハードコードロジック)はより信頼性が高く、単純で予測可能なタスクには優先されるべきですが、エージェントは複雑で現実世界のリクエストに必要な柔軟性を提供します。これらのリクエストは複数の変動要因に依存しています。
Code Agents と JSON ツール呼び出しの比較
従来のエージェントフレームワークでは、LLMがJSONスニペットとしてアクションを出力し、それを解析して実行することがしばしば求められます。smolagentsは、プログラミング言語がJSONよりもコンピュータのアクションを効率的に表現するように設計されているため、コードとしてアクションを記述することを優先します。
コードとしてアクションを記述することには、いくつかの技術的な利点があります:
- 構成性: コードはネストされたアクションと再利用可能な関数の定義を可能にします。
- オブジェクト管理: コードは、以前のアクションの出力を保存および操作するネイティブな方法を提供します。
- 汎用性: コードはコンピュータが実行できるあらゆる操作を表現できます。
- トレーニングデータの整合性: LLMはすでに高品質なコードで広範囲にトレーニングされているため、この形式に自然と熟練しています。
smolagents の主要機能
smolagentsはtransformers.agentsの後継であり、いくつかのコア目標に基づいて構築されています:
- シンプルさ: コアロジックは最小限に抑えられ、数千行のコードに収まります。
- ファーストクラスの Code Agent サポート: コードを記述するエージェントのための専用サポートを含み、E2B を介したサンドボックス環境でのセキュアな実行も提供します。
- Hub 統合: ツールは Hugging Face Hub と共有およびロードできます。
- モデルに依存しない: このライブラリは、Hub 上にホストされているモデル(
transformersまたは Inference API を介して)および LiteLLM 統合を介した OpenAI と Anthropic のモデルをサポートします。
エージェントの構築とデプロイ
エージェントを作成するには、2つの主要なコンポーネントが必要です:tools のリストと model (LLM エンジン)。
ツールは、型ヒントとドキュメント文字列を持つ Python 関数を定義し、@tool デコレータを適用することで作成されます。これらのツールは、共有のために Hugging Face Hub にプッシュできます。たとえば、CodeAgent は Google Maps ツールを装備し、繰り返し移動時間を収集し計算を行うことで複雑な旅行計画を立てることができます。
オープンモデルのパフォーマンス
ベンチマークによると、オープンソースモデルは現在、エージェントワークフローにおいて最高のクローズドモデルと競争できるようになりました。具体的には、データは「code agents」がさまざまな課題において「tool calling agents」を一貫して上回っていることを示しており、実行可能なコードを主要なアクション形式とするアプローチが正当化されています。