メインコンテンツへスキップ
実行中のコードを Weave で詳細なトレースとして確認するには、calls を作成します。これには主に 3 つの方法があります。

1. LLMライブラリcallの自動トラッキング

Weave は、openaianthropiccoheremistralLangChain など、多くの一般的なインテグレーションやフレームワークと自動的に連携します。 LLM またはフレームワークのライブラリを import して Weave のプロジェクトを初期化すると、コードを追加・変更しなくても、LLM またはプラットフォームに対するすべてのcallが Weave によって自動的にプロジェクトへトレースされます。サポートされているライブラリインテグレーションの完全な一覧については、インテグレーション概要 を参照してください。
自動的な挙動をより細かく制御したい場合は、LLM call の自動トラッキングを設定する を参照してください。

2. カスタム関数のトラッキング

LLM アプリケーションには、トラッキングしたい追加のロジック (前処理や後処理、プロンプトなど) が含まれていることがよくあります。
Weave では、@weave.op デコレータを使って、これらの calls を手動でトラッキングできます。例:
クラスの method もトラッキングできます。

クラスとオブジェクトの method をトラッキングする

クラスやオブジェクトの method もトラッキングできます。weave.op で method をデコレートすると、クラス内の任意の method をトラッキングできます。

並列 (マルチスレッド) の関数callをトレースする

デフォルトでは、並列に実行された calls はすべて、Weave で個別のルート call として表示されます。同じ親 Op の下に正しくネストするには、ThreadPoolExecutor を使用します。
次のコード例は、ThreadPoolExecutor の使用方法を示しています。 1 つ目の関数 func は、x を受け取って x+1 を返すシンプルな Op です。2 つ目の関数 outer は、入力のリストを受け取る別の Op です。 outer の内部で ThreadPoolExecutorexc.map(func, inputs) を使用すると、func の各 call に同じ親トレースコンテキストが引き継がれます。
Weave UI では、これにより 1 つの親 call の下に 5 つの子 calls がネストされた形で表示されるため、インクリメント処理が並列に実行されていても、完全な階層型トレースを取得できます。 outer の 1 つの親 call の下に、5 つの子 calls がネストされている Trace UI。

3. call の手動トラッキング

API を直接使用して、手動で call を作成することもできます。