> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Smolagents

> Weave の自動トレースを使用して Smolagents アプリケーションをトラッキングし、ツール呼び出し、モデルの推論、マルチステップのエージェントワークフローを取得します。

<Warning>
  このページのコードサンプルはすべて Python で記述されています。
</Warning>

このページでは、[Smolagents](https://huggingface.co/docs/smolagents/en/index) を W\&B Weave と統合し、エージェント型アプリケーションをトラッキングおよび分析する方法について説明します。エージェント型ワークフローを構築しており、モデルやツールの呼び出しを可視化したい開発者を対象としています。Weave のトレース機能とバージョン管理機能を使用して、モデルの推論をログし、関数の Call をモニターし、実験を整理する方法を学びます。このページのサンプルに沿って進めることで、有益なインサイトを取得し、アプリケーションを効率的にデバッグし、さまざまなモデルの設定を比較できます。これらはすべて Weave の Web インターフェース上で行えます。

<h2 id="overview">
  概要
</h2>

Smolagents は、エージェント型アプリケーションを構築するための最小限の抽象化を提供するフレームワークです。OpenAI、Hugging Face Transformers、Anthropic などの複数の LLM プロバイダをサポートしています。

Weave は [Smolagents](https://huggingface.co/docs/smolagents/en/index) のトレースを自動的に取得します。トラッキングを開始するには、`weave.init()` を呼び出してから、通常どおりライブラリを使用してください。

<h2 id="prerequisites">
  前提条件
</h2>

始める前に、必要なライブラリをインストールし、選択した LLM プロバイダへのアクセスを設定する必要があります。

1. Smolagents を Weave で使用する前に、必要なライブラリをインストールするか、最新バージョンにアップグレードする必要があります。次のコマンドは `smolagents`、`openai`、`weave` をインストールまたはアップグレードし、出力を抑制します。

   ```bash theme={"system"}
   pip install -U smolagents openai weave -qqq
   ```

2. Smolagents は、OpenAI、Hugging Face Transformers、Anthropic など複数の LLM プロバイダをサポートしています。Smolagents がモデルを呼び出す際に認証できるように、選択したプロバイダーの APIキーを設定します。対応する環境変数を設定してください。

   ```python lines theme={"system"}
   import os
   import getpass

   os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ")
   ```

<h2 id="basic-tracing">
  基本的なトレース
</h2>

このセクションでは、基本的な Smolagents ワークフローのトレースを Weave が自動的に取得する仕組みを説明します。

言語モデルアプリケーションのトレースを一元管理することは、開発環境でも本番環境でも欠かせません。トレースはデバッグに役立つだけでなく、アプリケーションを改善するためのデータセットとしても活用できます。

Weave は [Smolagents](https://huggingface.co/docs/smolagents/en/index) のトレースを自動的に取得します。トラッキングを開始するには、`weave.init()` を呼び出して Weave を初期化し、あとは通常どおりライブラリを使用するだけです。

次の例では、ツールを使用する LLM エージェントへの推論 Call を Weave でログする方法を示します。このシナリオでは、次の処理を行います。

* Smolagents の `OpenAIServerModel` を使用して、言語モデル (OpenAI の `gpt-4o`) を定義します。
* エージェントが必要に応じて呼び出せる検索ツール (`DuckDuckGoSearchTool`) を設定します。
* ツールとモデルを渡して `ToolCallingAgent` を構築します。
* 検索ツールが呼び出されるクエリを、エージェント経由で実行します。
* Weave は関数およびモデルの各 invocation をログし、Weave の Web インターフェースで確認できるようにします。

```python lines theme={"system"}
import weave
from smolagents import DuckDuckGoSearchTool, OpenAIServerModel, ToolCallingAgent

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

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

# クエリに基づいて検索を行う DuckDuckGo の Web 検索ツールを定義します
search_tool = DuckDuckGoSearchTool()

# ツール呼び出しエージェントを定義します
agent = ToolCallingAgent(tools=[search_tool], model=model)
answer = agent.run(
    "Get me just the title of the page at url 'https://forge.coreweave.com/wandb/geekyrakshit/story-illustration/reports/Building-a-GenAI-assisted-automatic-story-illustrator--Vmlldzo5MTYxNTkw'?"
)
```

コードサンプルを実行したら、Weave プロジェクトのダッシュボードにアクセスしてトレースを確認します。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/smolagents-trace.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1c3d1f1d2c7f65e64ab91816093f555f" alt="Weave は各推論 Call をログし、入力、出力、メタデータの詳細を記録します。" width="3342" height="1864" data-path="products/wandb/weave/_media/smolagents-trace.png" />
</Frame>

<h2 id="tracing-custom-tools">
  カスタムツールのトレース
</h2>

組み込みツールに加えて、カスタムツールでエージェントを拡張し、それらのツール呼び出しも Weave でトレースできます。

`smolagents` の `@tool` で関数をデコレートするか、`smolagents.Tool` クラスを継承することで、エージェント型ワークフロー用のカスタムツールを宣言できます。

Weave は、Smolagents ワークフローにおけるカスタムツール呼び出しを自動的にトラッキングします。次の例は、Weave でカスタム Smolagents ツールの呼び出しをログする方法を示しています。

* カスタムの `get_weather` 関数を定義し、Smolagents の `@tool` でデコレートします。これにより、エージェントは推論プロセスの中でこの関数を呼び出せるようになります。
* この関数は、場所と、摂氏で出力するかどうかを指定するオプションのフラグを受け入れます。
* `OpenAIServerModel` を使用して言語モデルをインスタンス化します。
* カスタムツールとモデルを指定して `ToolCallingAgent` を作成します。
* エージェントがクエリを実行すると、`get_weather` ツールが選択されて呼び出されます。
* Weave は、モデルの推論とカスタムツールの invocation の両方を、引数と戻り値も含めてログします。

```python lines theme={"system"}
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:
    """
    Get the weather in the next few days for a given location.
    Args:
        location: The location.
        celsius: Whether to use Celsius for temperature.
    """
    return f"The weather in {location} is sunny with temperatures around 7°C."

model = OpenAIServerModel(model_id="gpt-4o")
agent = ToolCallingAgent(tools=[get_weather], model=model)
answer = agent.run("What is the weather in Tokyo?")
```

コードサンプルを実行したら、Weave プロジェクトのダッシュボードにアクセスしてトレースを確認してください。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/smolagents-custom-tool.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=8db13e892f9c1ee196a872e56f5c8354" alt="Weave はカスタムツールのツール呼び出しをそれぞれログします。" width="3342" height="1864" data-path="products/wandb/weave/_media/smolagents-custom-tool.png" />
</Frame>


## Related topics

- [インテグレーションの概要](/ja/products/wandb/weave/guides/integrations.md)
