
皆さんは、AIに「複雑な計算」や「条件分岐」を伴うタスクを任せたいと思ったことはありませんか?今週、GitHubで大きな話題となっているsmolagentsは、Hugging Faceが公開した「コード駆動型」の次世代AIエージェント構築ライブラリです。
ライブラリの概要・なぜ注目されているか
smolagentsは、AIエージェントに「Pythonコードを書いて問題を解かせる」ことに特化した超軽量ライブラリです。従来の多くのフレームワークがJSON形式の指示に頼る中、このライブラリはAIにプログラムそのものを書かせるため、数学的な推論やデータの加工において圧倒的な強みを発揮します。
ソースコードがわずか約1,000行というシンプルさも魅力で、ブラックボックス化されがちなエージェントの挙動を完全に把握・カスタマイズできる点が、プログラマーたちの心を掴んでいます。
Windowsでのインストール方法
WindowsのコマンドプロンプトまたはPowerShellで、以下のコマンドを実行してください。
pip install smolagents litellm python-dotenv※検索機能などを活用する場合は、以下のツールも併せて導入するのがおすすめです。
pip install duckduckgo-search基本的な使い方(コード例)
AIが自らPythonコードを生成して、論理的な質問に回答する最もシンプルな例です。今回はGeminiのAPIを利用します。
import os
from dotenv import load_dotenv
from smolagents import CodeAgent, LiteLLMModel
# .envファイルから環境変数を読み込む
load_dotenv()
# 環境変数からGeminiのAPIキーを取得
api_key = os.environ.get("GEMINI_API_KEY")
# GoogleのGeminiモデルを設定
model = LiteLLMModel(
model_id="gemini/gemini-3-flash-preview",
api_key=api_key
)
# エージェントを初期化
agent = CodeAgent(tools=[], model=model)
# 複雑な計算を依頼
result = agent.run("フィボナッチ数列の第10項を計算して、その数値に123を足した結果を教えて。")
print(result)「main.py」という名前で保存してください。
同階層に「.env」ファイルを用意して、APIキーを設定してください。
GEMINI_API_KEY="(ここに設定)"「main.py」を実行すると結果が出力されます。
╭────────────────────────────────────────────────────── New run ───────────────────────────────────────────────────────╮
│ │
│ フィボナッチ数列の第10項を計算して、その数値に123を足した結果を教えて。 │
│ │
╰─ LiteLLMModel - gemini/gemini-3-flash-preview ───────────────────────────────────────────────────────────────────────╯
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Step 1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
─ Executing parsed code: ─────────────────────────────────────────────────────────────────────────────────────────────
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
# The 10th term (starting from F_1 = 1, F_2 = 1, ...)
# Or simply using the formula where F_0 = 0, F_1 = 1, ...
# If the sequence is 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... then the 10th term is 55.
fib_10 = fibonacci(10)
result = fib_10 + 123
print(f"Fibonacci 10th term: {fib_10}")
print(f"Result: {result}")
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Execution logs:
Fibonacci 10th term: 55
Result: 178
Out: None
[Step 1: Duration 7.17 seconds| Input tokens: 2,174 | Output tokens: 937]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Step 2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
─ Executing parsed code: ─────────────────────────────────────────────────────────────────────────────────────────────
final_answer(178)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Final answer: 178
[Step 2: Duration 2.44 seconds| Input tokens: 4,852 | Output tokens: 1,301]
178
実際の活用シーンやメリット
- 圧倒的な推論精度: プログラムを書いて実行するため、LLMが苦手とする数値計算ミスを回避できます。
- ミニマリズム: 依存関係が少なく、既存のプロジェクトに数行追加するだけでエージェント機能を組み込めます。
- 高い拡張性: 自分で作成したPython関数を「ツール」として即座にエージェントに渡すことができます。
AIにただ「聞く」だけでなく、AIに「作らせて動かす」。そんな開発体験をぜひ味わってみてくださいね。
