コンテンツにスキップ

smolagents - コードファースト AI エージェントチートシート

smolagents - コードファースト AI エージェントチートシート

smolagents はHugging Faceからの最小限のコードファースト AI エージェントライブラリです。その中心的な考え方は:モデルがツール呼び出しをJSONブロブとして発行する代わりに、CodeAgentは直接Pythonコードを書き実行します。アクションをコードとして表現することで、単一ステップで複数のツールを呼び出し、ループと変数を使用し、ロジックをチェーンできます。これにより、LLM往復の数が削減される (約30%少ない) ため、複雑なタスクでパフォーマンスが向上します。モデル不可知論で、サンドボックス実行をサポートし、意図的に小さく、ハッカブルな状態を保ちます。

インストール

方法コマンド
pippip install smolagents
ツールエクストラ付きpip install "smolagents[toolkit]"
サンドボックスエクストラpip install "smolagents[e2b]" (または [docker])
モデルキーを設定export HF_TOKEN=... またはプロバイダーキー
確認python -c "import smolagents; print('ok')"

コアコンセプト

用語意味
CodeAgentPythonアクションを書くエージェント (デフォルト)
ToolCallingAgentクラシックJSONツール呼び出しを発行するエージェント
Toolエージェントが使用できる呼び出し可能 (スキーマ付き)
ModelLLMバックエンド (HF、OpenAI、LiteLLM、ローカル)
Sandbox生成されたコードの実行場所 (ローカル、E2B、Docker、Modal)

最小限のCodeAgent

from smolagents import CodeAgent, WebSearchTool, InferenceClientModel

agent = CodeAgent(
    tools=[WebSearchTool()],
    model=InferenceClientModel(),   # HF Inference API
)

agent.run("How many seconds would it take a cheetah to cross the Golden Gate Bridge?")
オブジェクト役割
CodeAgent(tools=[...], model=...)エージェント
agent.run("task")エンドツーエンドでタスクを実行
WebSearchTool()ビルトインツール
InferenceClientModel()HFホストモデルバックエンド

モデル

バックエンドクラス
HF Inference APIInferenceClientModel
ローカル transformersTransformersModel
LiteLLMを介したあらゆるプロバイダーLiteLLMModel(model_id="openai/gpt-4o")
OpenAI互換サーバーOpenAIServerModel(...)
vLLM / ローカルエンドポイントLiteLLM / OpenAI互換経由

ツール定義

from smolagents import tool

@tool
def get_weather(city: str) -> str:
    """Return the weather for a city.

    Args:
        city: The city to look up.
    """
    return f"Sunny in {city}"

agent = CodeAgent(tools=[get_weather], model=InferenceClientModel())
メカニズム用途
@tool デコレーター型付き機能をツールに変換
Tool サブクラススキーマ/動作をより詳細に制御
ツールコレクションツールセットをインポート (例:Hub)
MCPツールモデルコンテキストプロトコルサーバーを接続

サンドボックス実行 (重要)

CodeAgentは生成されたPythonを実行するため、本番環境で分離します。

サンドボックス方法
ローカル (デフォルト)プロセス内で実行 — 信頼できる開発のみ
E2Bexecutor_type="e2b" (リモートサンドボックス)
Dockerexecutor_type="docker"
Modalリモートサンドボックス実行
許可されたインポート生成されたコードがインポートできるモジュールを制限
agent = CodeAgent(tools=[...], model=..., executor_type="e2b")

マルチエージェント & 検索

パターン方法
管理されたエージェントあるエージェントを他のエージェントにツールとして与える
検索/RAGグラウンド化された回答のためのレトリバーツール
計画難しいタスク用の定期的な計画ステップ
ハンドオフマネージャーエージェント下のスペシャリストを合成

一般的なワークフロー

# ブラウズしてコードで計算するリサーチエージェント
from smolagents import CodeAgent, WebSearchTool, InferenceClientModel
agent = CodeAgent(tools=[WebSearchTool()], model=InferenceClientModel(),
                  executor_type="docker")
agent.run("Compare the population growth of Tokyo and Delhi since 2000.")

smolagentsと他のエージェントフレームワーク

側面smolagentsLangGraphPydantic AI
アクション形式Pythonコードグラフ/ステートマシン型付きツール呼び出し
サイズ/哲学最小限、ハッカブル完全な状態オーケストレーションタイプセーフ、FastAPIスタイル
LLM効率より少ないコール (コード)依存する標準
最適用途シングルエージェントコードループ耐久的なステートフルエージェントタイプセーフ本番エージェント

リソース