smolagents は数行のコードで強力なエージェントを実行できるライブラリです。以下のような機能を提供します:
✨ シンプルさ: エージェントのロジックは約 1,000 行のコードに収まります (agents.py を参照)。抽象化を最小限に保ち、生のコードを優先しました!
🧑💻 Code Agents への第一級サポート。当社の CodeAgent はアクションをコードで記述します (「コードを書くために使われるエージェント」とは異なります)。セキュリティを確保するために、Blaxel、E2B、Modal、Docker、または Pyodide+Deno WebAssembly サンドボックスを介したサンドボックス環境での実行をサポートしています。
🤗 Hub インテグレーション: ツールまたはエージェントを Hub との間で共有/取得でき、最も効率的なエージェントを即座に共有できます!
🌐 モデル非依存: smolagents はあらゆる LLM をサポートします。ローカルの transformers または ollama モデル、Hub の多くのプロバイダーの 1 つ、または LiteLLM インテグレーション経由での OpenAI、Anthropic などからの任意のモデルを使用できます。
👁️ モダリティ非依存: エージェントはテキスト、ビジョン、ビデオ、さらにはオーディオ入力をサポートします! ビジョンについては このチュートリアル を参照してください。
🛠️ ツール非依存: 任意の MCP サーバーからのツール、LangChain からのツール、さらには Hub Space をツールとして使用することもできます。
完全なドキュメントは こちら から確認できます。
注
当社のローンチ ブログ記事 を確認して、smolagents についてさらに詳しく学んでください!
まず、デフォルトのツールセットでパッケージをインストールします:
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?")smolagents_readme_leopard.mp4
さらに、エージェントをハブにスペースリポジトリとして共有することもできます。
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",
)LiteLLM で 100 以上の LLM にアクセス
from smolagents import LiteLLMModel
model = LiteLLMModel(
model_id="anthropic/claude-4-sonnet-latest",
temperature=0.2,
api_key=os.environ["ANTHROPIC_API_KEY"]
)OpenAI 互換サーバー: Together AI
import os
from smolagents import OpenAIModel
model = OpenAIModel(
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 OpenAIModel
model = OpenAIModel(
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/Qwen3-Next-80B-A3B-Thinking",
max_new_tokens=4096,
device_map="auto"
)Azure モデル
import os
from smolagents import AzureOpenAIModel
model = AzureOpenAIModel(
model_id = os.environ.get("AZURE_OPENAI_MODEL"),
azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"),
api_key=os.environ.get("AZURE_OPENAI_API_KEY"),
api_version=os.environ.get("OPENAI_API_VERSION")
)Amazon Bedrock モデル
import os
from smolagents import AmazonBedrockModel
model = AmazonBedrockModel(
model_id = os.environ.get("AMAZON_BEDROCK_MODEL_ID")
)CLIから2つのコマンド(smolagentとwebagent)を使用してエージェントを実行できます。
smolagentは、様々なツールで装備できるマルチステップのCodeAgentを実行するための汎用コマンドです。
# Run with direct prompt and options
smolagent "Plan a trip to Tokyo, Kyoto and Osaka between Mar 28 and Apr 7." --model-type "InferenceClientModel" --model-id "Qwen/Qwen3-Next-80B-A3B-Thinking" --imports pandas numpy --tools web_search
# Run in interactive mode (launches setup wizard when no prompt provided)
smolagentインタラクティブモードでは、以下をガイドします:
- エージェントタイプの選択(CodeAgent vs ToolCallingAgent)
- 利用可能なツールボックスからのツール選択
- モデルの設定(タイプ、ID、API設定)
- 追加インポートなどの詳細オプション
- タスクプロンプト入力
一方、webagentはheliumを使用した特定のウェブブラウジングエージェントです(詳細はこちらを参照してください)。
たとえば:
webagent "go to xyz.com/men, get to sale section, click the first clothing item you see. Get the product details, and the price, return them. note that I'm shopping from France" --model-type "LiteLLMModel" --model-id "gpt-5"当社のCodeAgentは基本的に古典的なReActエージェントと同様に動作しますが、LLMエンジンがアクションをPythonコードスニペットとして書き込む点が異なります。
flowchart TB
Task[User Task]
Memory[agent.memory]
Generate[Generate from agent.model]
Execute[Execute Code action - Tool calls are written as functions]
Answer[Return the argument given to 'final_answer']
Task -->|Add task to agent.memory| Memory
subgraph ReAct[ReAct loop]
Memory -->|Memory as chat messages| Generate
Generate -->|Parse output to extract code action| Execute
Execute -->|No call to 'final_answer' tool => Store execution logs in memory and keep running| Memory
end
Execute -->|Call to 'final_answer' tool| Answer
%% Styling
classDef default fill:#d4b702,stroke:#8b7701,color:#ffffff
classDef io fill:#4a5568,stroke:#2d3748,color:#ffffff
class Task,Answer io
アクションはPythonコードスニペットになりました。したがって、ツール呼び出しはPython関数呼び出しとして実行されます。たとえば、エージェントが単一のアクションで複数のウェブサイトにわたってウェブ検索を実行する方法は以下の通りです:
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))アクションをコードスニペットとして記述することは、LLMが呼び出したいツールのディクショナリーを出力させるという現在の業界慣行よりも優れていることが実証されています:ステップが30%削減され(したがってLLM呼び出しが30%削減)、困難なベンチマークでより高いパフォーマンスを達成しています。詳細についてはエージェントに関する高レベルの紹介をご覧ください。
コード実行は深刻なセキュリティ上の問題となる可能性があるため(任意のコード実行!)、エージェントコードはサンドボックスで実行する必要があります。複数のオプションをサポートしています:
- E2B、Blaxel、Modal — 管理されたクラウドサンドボックス、セットアップが最も簡単です
- Docker — セルフホストされたコンテナー分離
- Pyodide+Deno WebAssembly — ブラウザーまたはエッジ環境用の軽量サンドボックス
組み込みのLocalPythonExecutorはセキュリティサンドボックスではありません。いくつかの制限を適用していますが、回避される可能性があり、セキュリティ境界として使用してはいけません。
CodeAgentとともに、アクションをJSON/テキストブロブとして記述する標準のToolCallingAgentも提供しています。ユースケースに最も適したスタイルを選択できます。
抽象化を最小限に抑えることに力を注ぎました。メインコードの agents.py は 1,000 行未満です。
それでも、複数のタイプのエージェントを実装しています:CodeAgent はアクションを Python コードスニペットとして記述し、より古典的な ToolCallingAgent は組み込みのツール呼び出しメソッドを活用します。マルチエージェント階層、ツールコレクションからのインポート、リモートコード実行、ビジョンモデルなども備えています。
ところで、なぜフレームワークを使うのでしょうか?それは、この多くの部分が非自明だからです。たとえば、コードエージェントはシステムプロンプト全体、パーサー、実行を通じてコードの一貫した形式を維持する必要があります。したがって、私たちのフレームワークがこの複雑さを処理します。もちろん、ソースコードにハッキングして必要な部分だけを使用することをお勧めします。
いくつかの主要なモデルで CodeAgent インスタンスを作成し、このベンチマークで比較しました。このベンチマークは複数の異なるベンチマークから質問を集めて、様々な課題をミックスしています。
詳細については、ここでベンチマーク化コードを確認してください。使用されたエージェントセットアップの詳細、および LLM コードエージェントと素の状態の比較を参照してください(ネタバレ:コードエージェントの方がより効果的です)。
この比較は、オープンソースモデルが現在、最高のクローズドソースモデルに対抗できることを示しています。
セキュリティは、エージェントワークフローで作業する際の重要な考慮事項です。

