Smolagentsは、大規模言語モデル(LLM)を活用したエージェントを構築するためにHugging Faceで作成されたライブラリである。Hugging Faces社によると、この新しいライブラリはシンプルで特定のLLMにとらわれないことを目指しているという。セキュアな「コードでアクションを記述するエージェント」をサポートし、Hugging Face Hubと統合されている。
エージェント・システムは、狭いタスクを解決するために考え出された、あらかじめ決められたワークフローの単なる実行を超えて、コンピュータ・プログラムの可能性を拡張することを約束する。実際、現実の問題のほとんどは、あらかじめ決められたワークフローには当てはまらないと、ハギング・フェイス(Hugging Face)のエンジニアであるアイメリック・ルーシェ(Roucher)、メルヴェ・ノヤン(Noyan)、トーマス・ウルフ(Wolf)は言う。
HuggingFaceの考えでは、エージェントはLLMに外の世界へのアクセスを提供する。エージェントベースのシステムは、マルチステップエージェントまたはマルチエージェントであり、システム内のLLMのエージェンシーのレベルにおいて、他のLLMベースのシステムとは異なる。具体的には、AIエージェントは、LLMの出力がシステムのワークフローを制御するという特徴を持つ。これに対して、他のLLMベースのシステムでは、LLMの出力はプログラムの流れにまったく影響を与えないか、何らかの中間的な効果をもたらす。
エージェントシステムがワークフローの柔軟性を実現する方法は、LLMに外部ツールを呼び出す形のアクションを書かせることである。この考え方は、以下のメタコードで表現される。
memory = [user_defined_task] (ユーザー定義タスク)while llm_should_continue(memory):# このループがマルチステップ部分である action = llm_get_next_action(memory) # これはツールを呼び出す部分である。 observations = execute_action(action) memory += [action, observations]
このアイデアは新しいものではなく、Roucher、Noyan、Wolfが指摘しているように、Anthropic、OpenAI、その他がこのようなアクション、つまり外部ツールの呼び出しを記述するために使用している、一般的に受け入れられているJSONフォーマットがすでに存在している。ここでsmolagentsは、JSONはコンピュータが何をすべきかを表現する最良の方法ではないという認識に基づいて、独自のアプローチを取った。なぜなら、プログラミング言語は、コンピュータの動作を記述するための優れた方法であり、より優れた合成性、データ管理、汎用性を備えているからだ。LLMはすでに質の高いコードを作成する能力を持っているので、このアプローチによって大きな複雑さが加わることはない。
エージェント・システムを作るには、エージェントの出力の解析や、前回の反復で起こったことに基づくプロンプトの合成など、いくつかの再帰的な問題を解決する必要がある。エラー・ロギングやリトライ・メカニズムとともに、これらはsmolagentsが提供する重要な機能のひとつである。
しかし、エージェント・システムを構築したいのであれば、まずエージェントが必要かどうかを判断する必要がある。実際、Roucher、Noyan、Wolfが説明しているように、エージェントはやりすぎかもしれない。
もし[ある]決定論的なワークフローがすべてのクエリに適合するのであれば、ぜひすべてをコード化すればよいです!そうすれば、予測不可能なLLMがワークフローに干渉することによってもたらされるエラーのリスクなしに、100%信頼できるシステムが得られます。シンプルさとロバスト性のために、エージェント的な振る舞いを使わないように規則化することをお勧めします。
エージェントが必要だと確信したら、LLMといくつかのツールが必要だ。Hugging FaceHfApiModel
クラスを使ってどんなオープンモデルを使うこともできるし、LiteLMMModelを使って
たくさんのクラウドベースのLLMにアクセスもできる。ツールはLLMがいくつかの入力で実行できる関数に過ぎない。
Hugging Faceは、GPT4o、Claude3.5、LLaMA-3.3 70Bなどの主要なモデルを使って一連のベンチマークを実行し、smolagentsを作成した。そして、オープンモデルは最良のクローズドモデルに匹敵することを発見した。
Hugging Face smolagentsだけが、現在利用可能なエージェント・システム作成ツールではない。特に、OpenAIがリリースしたSwarmは、ルーチンとハンドオフを活用して、複数のエージェントを互いに協調させる。さらに、マイクロソフトはMagentic-Oneを発表し、AWSは独自のMulti-Agent Orchestratorを持っている。