メインコンテンツへスキップ
OpenTelemetry (OTEL) を使用すると、Weave で PydanticAI のエージェントとツールの call をトレースできます。PydanticAI は、生成 AI を使った本番環境向けのアプリケーションを簡単かつ型安全に構築できるように、Pydantic チームが開発した Python のエージェントフレームワークです。すべてのエージェントとツールの call をトレースするために OTEL を使用します。
Weave における OTEL トレースの詳細については、Send OTEL Traces to Weave を参照してください。
このガイドでは、OTEL を使用して PydanticAI のエージェントとツールの call をトレースし、それらのトレースを Weave で可視化する方法を説明します。必要な依存関係をインストールし、Weave にデータを送信する OTEL トレーサーを設定し、PydanticAI のエージェントとツールを計装する方法を学びます。また、アプリケーション内のすべてのエージェントでデフォルトでトレースを有効にする方法も紹介します.

前提条件

始める前に、必要なOTELの依存関係をインストールしてください。
次に、WeaveでOTELトレースを設定します

Weave で OTEL トレースを設定する

PydanticAI から Weave にトレースを送信するには、TracerProviderOTLPSpanExporter を使用して OTEL を設定します。エクスポーターには、認証とプロジェクト識別に必要な正しいエンドポイントと HTTP ヘッダーを設定してください。
APIキーやプロジェクト情報などの機密性の高い環境変数は、環境ファイル (例: .env) に保存し、os.environ を使って読み込むことをおすすめします。こうすることで、認証情報を安全に保ち、コードベースに含めずに済みます。

必須設定

  • エンドポイント: https://trace.wandb.ai/otel/v1/traces
  • ヘッダー:
    • Authorization: W&B APIキーを使用するBasic認証
    • project_id: W&B の entity/プロジェクト名 (例: myteam/myproject)

設定例

次のコード例では、PydanticAI アプリケーションから Weave に OTEL トレースを送信するために、OTLP span exporter と トレーサープロバイダー を設定する方法を示します。

OTEL で PydanticAI Agents をトレースする

PydanticAI エージェントをトレースし、トレースデータを Weave に送信するには、トレーサープロバイダーで設定した InstrumentationSettings オブジェクトを Agent コンストラクタに渡します。これにより、すべてのエージェントとツールの call が、OTEL の設定に従ってトレースされます。 次の例では、トレースを有効にしたシンプルなエージェントを作成する方法を示します。重要な step は、エージェントの初期化時に instrument 引数を設定することです。
エージェントへのすべてのcallはトレースされ、Weave に送信されます。
シンプルなPydanticAIエージェントのトレースの可視化

OTEL で PydanticAI のツールをトレースする

Weave では、エージェント と ツール の call を含む、OTEL でインストルメントされたあらゆる PydanticAI の operation をトレースできます。つまり、エージェント がツール (たとえば @agent.tool_plain でデコレートされた関数) を呼び出すと、ツールの inputs、outputs、そしてモデルの推論を含むやり取り全体が Weave でキャプチャされ、可視化されます。 次の例では、system prompt とツールを備えた エージェント を作成する方法を示します。トレースは エージェント とツールの両方で自動的に有効になります。
ツール call のトレース可視化
エージェント call と ツール call はどちらも Weave でトレースされるため、アプリケーションの推論から実行までの全経路を確認できます.

デフォルトですべてのエージェントにインストルメンテーションを適用する

アプリケーション内のすべての PydanticAI エージェントに OTEL トレースを適用するには、Agent.instrument_all() method を使用します。これにより、instrument パラメーターを明示的に指定していないエージェントに対して、デフォルトの InstrumentationSettings インスタンスが設定されます。
これは、設定を繰り返し記述することなく、すべてのエージェントで一貫したトレースを実現したい大規模なアプリケーションで役立ちます。詳細については、PydanticAI OTEL ドキュメントを参照してください。

さらに詳しく