メインコンテンツへスキップ
このページに掲載されているコードサンプルは、すべて Python です。
このページでは、エージェントベースのアプリケーションをトラッキングして分析するために、Smolagents を W&B Weave と統合する方法を説明します。Weave のトレース機能とバージョン管理機能を使って、モデル推論をログし、関数呼び出しを監視し、Experiments を整理する方法を学べます。ここで紹介する例に沿って進めることで、有用な知見を取得し、アプリケーションを効率的にデバッグし、異なるモデル設定を比較できます。これらはすべて Weave の Web インターフェース上で行えます。

概要

Smolagents は、強力なエージェント型アプリケーションを構築するための最小限の抽象化を備えた、シンプルなフレームワークです。OpenAI、Hugging Face Transformers、Anthropic など、複数の LLM プロバイダをサポートします。 Weave は Smolagents のトレースを自動的に収集します。トラッキングを開始するには、weave.init() を呼び出し、通常どおりライブラリを使用します。

前提条件

  1. Smolagents を Weave で使用する前に、必要なライブラリをインストールするか、最新バージョンにアップグレードしてください。次のコマンドは、smolagentsopenaiweave をインストールまたはアップグレードし、出力を抑制します。
    pip install -U smolagents openai weave -qqq
    
  2. Smolagents は、OpenAI、Hugging Face Transformers、Anthropic など、複数の LLM プロバイダをサポートしています。選択したプロバイダに対応する環境変数を設定して、APIキーを指定してください。
    import os
    import getpass
    
    os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ")
    

基本的なトレース

言語モデルアプリケーションのトレースを一元管理された場所に保存することは、開発時にも本番環境でも不可欠です。これらのトレースはデバッグに役立つだけでなく、アプリケーション改善のための貴重なデータセットにもなります。 Weave は Smolagents のトレースを自動的にキャプチャします。トラッキングを開始するには、weave.init() を呼び出して Weave を初期化し、その後は通常どおりライブラリを使用します。 次の例では、ツールを使用する LLM エージェントの推論 call を Weave でログする方法を示します。このシナリオでは、次のことを行います。
  • Smolagents の OpenAIServerModel を使用して、言語モデル (OpenAI の gpt-4o) を定義します。
  • 必要に応じてエージェントが呼び出せる検索ツール (DuckDuckGoSearchTool) を設定します。
  • ツールとモデルを渡して、ToolCallingAgent を構築します。
  • 検索ツールをトリガーするクエリをエージェント経由で実行します。
  • Weave は各関数とモデルの呼び出しをログし、Web インターフェースで確認できるようにします。
import weave
from smolagents import DuckDuckGoSearchTool, OpenAIServerModel, ToolCallingAgent

# Weaveを初期化する
weave.init(project_name="smolagents")

# SmolagentsがサポートするLLMプロバイダーを定義する
model = OpenAIServerModel(model_id="gpt-4o")

# クエリに基づいてDuckDuckGoウェブ検索ツールを定義する
search_tool = DuckDuckGoSearchTool()

# ツール呼び出しエージェントを定義する
agent = ToolCallingAgent(tools=[search_tool], model=model)
answer = agent.run(
    "Get me just the title of the page at url 'https://wandb.ai/geekyrakshit/story-illustration/reports/Building-a-GenAI-assisted-automatic-story-illustrator--Vmlldzo5MTYxNTkw'?"
)
コードサンプルを実行したら、Weave プロジェクトのダッシュボードにアクセスして、トレースを確認します。
Weave は各推論 call をログし、入力、出力、メタデータの詳細を提供します。

カスタムツールのトレース

smolagents@tool で関数をデコレートするか、smolagents.Tool クラスを継承することで、agentic ワークフロー用のカスタムツールを定義できます。 Weave は、Smolagents ワークフロー内のカスタムツールの call を自動的にトラッキングします。次の例では、Weave でカスタム Smolagents ツールの call をログする方法を示します。
  • カスタムの get_weather 関数を定義し、Smolagents の @tool でデコレートすることで、エージェントが推論プロセスの一部としてこの関数を呼び出せるようにします。
  • この関数は、location と、摂氏で出力するための optional フラグを受け取ります。
  • OpenAIServerModel を使用して言語モデルをインスタンス化します。
  • カスタムツールとモデルを使って ToolCallingAgent を作成します。
  • エージェントがクエリを実行すると、get_weather ツールを選択して呼び出します。
  • Weave は、モデルの推論とカスタムツールの呼び出しの両方を、argument と Return Value を含めてログします。
from typing import Optional

import weave
from smolagents import OpenAIServerModel, ToolCallingAgent, tool

weave.init(project_name="smolagents")

@tool
def get_weather(location: str, celsius: Optional[bool] = False) -> str:
    """
    指定した場所の今後数日間の天気を取得します。
    引数:
        location: 場所。
        celsius: 温度にセルシウスを使用するかどうか。
    """
    return f"{location}の天気は晴れで、気温は7°C前後です。"

model = OpenAIServerModel(model_id="gpt-4o")
agent = ToolCallingAgent(tools=[get_weather], model=model)
answer = agent.run("東京の天気はどうですか?")
コードサンプルを実行したら、Weave プロジェクトのダッシュボードにアクセスしてトレースを確認します。
Weave は各カスタムツールの call をログします。