📖

smolagentsとは?最小構成のエージェント実装でLLMの力を引き出す

に公開

Hugging Faceが開発した「smolagents」は、わずか約1000行のコードで構成された、シンプルかつ強力なエージェントフレームワークです。LLMを活用したエージェントの構築を容易にし、開発者が最小限のコードで高度なタスクを実行できるように設計されています。

smolagentsの主な特徴

シンプルな設計

smolagentsは、エージェントのロジックを約1000行のコードに凝縮しており、過度な抽象化を避け、開発者がコードの全体像を把握しやすい構造となっています。

CodeAgentの導入

これがsmolaagentsの本質です。従来のエージェントフレームワークやfunction callingでは、LLMの出力をjson形式で解析し、ツールを呼び出す方法が一般的でした。smolagentsでは、LLMはPythonコードを直接生成し、実行する「CodeAgent」を採用し、より柔軟で少量の記述で表現力の高いエージェントの構築が可能です。

多様なモデルとの互換性

内部では、LiteLLMを使用して、OpenAI、Anthoropic、Hugging Faceのオープンモデルなど、さまざまなLLMと互換性があります。

モダリティとツールの柔軟性

テキスト、画像、音声、動画などの複数のモダリティに対応しています。拡張子もhtmlからpngやmp4など入力可能です。実装的にはテキストの場合は定義してるLLMに投げ、画像の場合はGPT4oにimg to textを依頼するツールで実現しています。
※あくまで実装例でGPT4oを使っているだけで、マルチモーダルモデルあればなんでも使えそうです。

smolagentsの使用方法

まずはsmolagentsをインストールします

uv add smolagents[toolkit]

エージェントの作成と実行

web検索ツールを使用するCodeAgentの例です

from smolagents import CodeAgent, WebSearchTool, InferenceClientModel

model = InferenceClientModel()
agent = CodeAgent(tools=[WebSearchTool()], model=model, stream_outputs=True)

agent.run("zennとはなんですか?")

この例では、web検索ツールを組み込んだエージェントが、指定された質問に対してLLMを活用して回答を生成します。

セキュリティ対策

smolagentsでは、LLMが生成したコードを実行します。コード生成で開発環境が荒らされては困ると思う人がたくさんいると思います。そこで、コードを安全に実行するためのセキュリティ機能が組み込まれています

  • サンドボックス環境: e2b.devやDockerを使用して、コードの実行を隔離し、システムへの影響を最小限に抑えます
  • 安全なPythonインタープリター: 安全性を考慮したPythonインタープリターを提供し、コードの実行リスクを軽減します

これらの機能により、smolagentsは安全にエージェント開発ができます。

smolagentsの活用例と可能性

smolagentsのコードによるツールの実行やweb検索ツールとマルチモーダルなファイル読み込み機能により、1つの実装例としてオープンソースのDeep Researchが提供されています。LangChainもオープンソースのDeep Researchを開発していますが、smolagentを基盤としたHuggingFaceのDeep Researchの方がコード記述量が少なく、カスタマイズもできるので有用だと感じております。ただし、人間の介入(Human-in-the-loop)が単純な実装ではできず、LangChainの方が介入する前提で開発されているのでどちらが良いかはユースケース次第だと思います。

まとめ

smolagentsは、LLMを活用したエージェント開発をシンプルかつ効率的に行うためのフレームワークです。その軽量な設計と柔軟性により、初心者から上級者まで幅広い開発者にとって有用なツールになるでしょう。

Discussion