カスタムツールを使ったエージェントの作成

Hugging Face smolagents で学ぶ AI エージェント

Adel Nehme

VP of AI Curriculum, DataCamp

Hugging Face smolagents で学ぶ AI エージェント

カスタムツールのメリット

  • 信頼性: エージェントの推測に頼らず、ロジックを明示的に記述・テストできる
  • 再利用性: 複数のプロジェクトやエージェントでツールを共有できる
  • 一貫性: 実行ごとに予測可能な動作が得られる(デバッグに最適)
  • アクセス制御: 公開する対象(ファイル、API、データベースなど)を限定できる
Hugging Face smolagents で学ぶ AI エージェント

シナリオ:小売店を運営している場合

  • 在庫データはCSVファイルに保存されている(サイズ、色、数量、価格)
  • コードエージェントはCSVを読み込むコードを書ける
  • ただし、デフォルトではファイルにアクセスできない
  • ファイルアクセスをカスタムツールでラップする必要がある

Hugging Face smolagents で学ぶ AI エージェント

カスタムツールの構造

from smolagents import tool
import pandas as pd

@tool
def check_inventory(product_name: str) -> int:
    """
    Check the available quantity of a product in the inventory CSV.

    Args:
        product_name (str): The name of the product to look up.

    Returns:
        int: The quantity in stock. Returns 0 if the product is not found.
    """
    df = pd.read_csv("store_inventory.csv")
    match = df[df["product_name"] == product_name]
    stock_quantity = int(match.iloc[0]["quantity"]) if not match.empty else 0
    return stock_quantity
Hugging Face smolagents で学ぶ AI エージェント

カスタムツールのベストプラクティス

Hugging Face smolagents で学ぶ AI エージェント

Tシャツの在庫はありますか?

Hugging Face smolagents で学ぶ AI エージェント

カスタムツールをエージェントに登録する

from smolagents import CodeAgent

agent = CodeAgent(
    tools=[check_inventory], # Add custom tool
    model=InferenceClientModel(),
    additional_authorized_imports=["pandas"]  # Allow external package
)

agent.run("Do we have any large t-shirts in stock?")
Yes, we have 8 large t-shirts in stock.
Hugging Face smolagents で学ぶ AI エージェント

本番プロジェクトでのカスタムツール

Hugging Face smolagents で学ぶ AI エージェント

では、練習しましょう!

Hugging Face smolagents で学ぶ AI エージェント

Preparing Video For Download...