smolagents : Hugging Face AI エージェント・フレームワーク

smolagents は Hugging Face が公開した AI エージェント・フレークワークで、数行のコードで強力なエージェントを実行できるライブラリです。最初にその README を訳しておきます。

smolagents : Hugging Face AI エージェント・フレームワーク

作成 : クラスキャット・セールスインフォメーション
作成日時 : 08/19/2025
バージョン : v1.21.1

* 本記事は github.com/huggingface/smolagents の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています :

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス ⭐️ リニューアルしました 😉

クラスキャット は人工知能に関する各種サービスを提供しています。お気軽にご相談ください :

  • 人工知能導入個別相談会(無償)実施中! [詳細]

  • 人工知能研究開発支援 [詳細]
    1. 自社特有情報を含むチャットボット構築支援
    2. 画像認識 (医療系含む) / 画像生成

  • PoC(概念実証)を失敗させないための支援 [詳細]

お問合せ : 下記までお願いします。

  • クラスキャット セールス・インフォメーション
  • sales-info@classcat.com
  • ClassCatJP

 

 

smolagents : Hugging Face AI エージェント・フレームワーク

smolagents は数行のコードで強力なエージェントを実行できるライブラリです。それは以下を提供します :

単純さ (Simplicity) : エージェント用のロジックは ~1,000 行のコードに収まります (agents.py 参照)。抽象化は raw コード上、最小限の形に抑えました!

🧑‍💻 コードエージェントの First-class サポート : CodeAgent は (「エージェントをコードを記述するために使用する」のではなく、) アクションをコードで記述します。セキュアにするため、E2B, Docker や Pyodide+Deno WebAssembly サンドボックスを通してサンドボックス環境での実行をサポートします。

🤗 ハブ統合 : 最も効率的なエージェントのインスタントな共有のために、you can share/pull tools or agents to/from the Hub !

🌐 モデル非依存 : smolagents はあらゆる LLM をサポートします。それは、ローカルの transformers や ollama モデル、Hub 上の多くのプロバイダー の一つ、あるいは LiteLLM 統合経由で OpenAI, Anthropic やその他多くからの任意のモデルで構いません。

👁️ モダリティ非依存 : エージェントはテキスト、ビジョン、動画、更に音声入力もサポートします!Cf this tutorial for vision.

🛠️ ツール非依存 : 任意の MCP サーバLangChain のツールを使用でき、Hub スペース をツールとして使用することさえできます。

Full documentation can be found here.

Note : Check the our launch blog post to learn more about smolagents!

 

Quick デモ

まず、パッケージをツールのデフォルトセットとともにインストールします :

pip install smolagents[toolkit]

次にエージェントを定義し、それに必要なツールを与えて実行します!

from smolagents import CodeAgent, WebSearchTool, InferenceClientModel

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

agent.run("How many seconds would it take for a leopard at full speed to run through Pont des Arts?")

さらにエージェントを Space レポジトリとして、Hub に共有することもできます :

agent.push_to_hub("m-ric/my_agent")

# agent.from_hub("m-ric/my_agent") to load an agent from Hub

 
このライブラリは LLM 非依存です : 上記の例を任意の推論プロバイダーに切り替えることができるでしょう。

InferenceClientModel、HF でサポートされるすべての 推論プロバイダー へのゲートウェイ

from smolagents import InferenceClientModel

model = InferenceClientModel(
    model_id="deepseek-ai/DeepSeek-R1",
    provider="together",
)

 
100+ LLM にアクセス可能な LiteLLM

from smolagents import LiteLLMModel

model = LiteLLMModel(
    model_id="anthropic/claude-3-5-sonnet-latest",
    temperature=0.2,
    api_key=os.environ["ANTHROPIC_API_KEY"]
)

 
OpenAI-互換サーバ : Together AI

import os
from smolagents import OpenAIServerModel

model = OpenAIServerModel(
    model_id="deepseek-ai/DeepSeek-R1",
    api_base="https://api.together.xyz/v1/", # Leave this blank to query OpenAI servers.
    api_key=os.environ["TOGETHER_API_KEY"], # Switch to the API key for the server you're targeting.
)

 
OpenAI-互換サーバ : OpenRouter

import os
from smolagents import OpenAIServerModel

model = OpenAIServerModel(
    model_id="openai/gpt-4o",
    api_base="https://openrouter.ai/api/v1", # Leave this blank to query OpenAI servers.
    api_key=os.environ["OPENROUTER_API_KEY"], # Switch to the API key for the server you're targeting.
)

 
ローカル `transformers` モデル

from smolagents import TransformersModel

model = TransformersModel(
    model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
    max_new_tokens=4096,
    device_map="auto"
)

 

How do Code agents work?

CodeAgent は従来の ReAct エージェントのように殆ど動作します – 例外は、LLM エンジンがそのアクションを Python コードスニペットとして記述することです。

アクションは Python コードスニペットになりました。そのため、ツール呼び出しは Python 関数呼び出しとして実行されます。例えば、エージェントが一つのアクションで幾つかの web サイトを検索する方法は以下です :

requests_to_search = ["gulf of mexico america", "greenland denmark", "tariffs"]
for request in requests_to_search:
    print(f"Here are the search results for {request}:", web_search(request))

 

このライブラリはどれほど小さい (smol) でしょう?

抽象化を厳密な最小限に抑えるように努力しました : agents.py のメインコードは 1,000 行未満のコードです。それでも、幾つかのタイプのエージェントを実装しています : CodeAgent はそのアクションを Python コード・スニペットとして記述し、より古典的な ToolCallingAgent は組み込みのツール呼び出しメソッドを利用します。マルチエージェント階層、ツールコレクションからのインポート、リモートコード実行、ビジョンモデル … も備えています。

ところで、何故フレームワークを使うのでしょう?それは、この作業の大部分が自明ではないからです。例えば、コードエージェントはシステムプロンプト、パーサー、実行全体を通して、一貫したコード形式を維持する必要があります。そしてフレームワークはこの複雑さを処理します。しかしもちろん、ソースコードをハックして必要な部分だけを使用し、他の部分すべては除外することを勧めます。

 

以上