はじめに
開始するには、スクリプトの先頭で単にweave.init()
を呼び出します。weave.init()の引数は、トレースを整理するのに役立つプロジェクト名です。
呼び出しメタデータの追跡
LangChain呼び出しからメタデータを追跡するには、weave.attributes
コンテキストマネージャーを使用できます。このコンテキストマネージャーを使用すると、チェーンや単一のリクエストなど、特定のコードブロックにカスタムメタデータを設定できます。

トレース
開発中および本番環境の両方で、LLMアプリケーションのトレースを中央データベースに保存することは重要です。これらのトレースは、貴重なデータセットを提供することで、アプリケーションのデバッグと改善に不可欠です。 WeaveはLangChainアプリケーションのトレースを自動的にキャプチャします。プロンプトテンプレート、チェーン、LLM呼び出し、ツール、エージェントステップなど、LangChainライブラリを通じて行われるすべての呼び出しを追跡およびログに記録します。Weaveウェブインターフェイスでトレースを表示できます。
手動での呼び出しのトレース
自動トレースに加えて、WeaveTracer
コールバックまたは weave_tracing_enabled
コンテキストマネージャーを使用して手動で呼び出しをトレースできます。これらの方法は、LangChainアプリケーションの個々の部分でリクエストコールバックを使用するのに似ています。
Note: Weaveはデフォルトでランチェーン・ランナブルをトレースし、これは weave.init()
を呼び出すときに有効になります。環境変数 WEAVE_TRACE_LANGCHAIN
を "false"
に設定することで、weave.init()
を呼び出す前にこの動作を無効にできます。これにより、アプリケーション内の特定のチェーンや個々のリクエストのトレース動作を制御できます。
Using WeaveTracer
特定のリクエストをトレースするために、WeaveTracer
コールバックを個々のLangChainコンポーネントに渡すことができます。
Using weave_tracing_enabled
コンテキストマネージャー
あるいは、weave_tracing_enabled
コンテキストマネージャーを使用して、特定のコードブロックのトレースを有効にすることもできます。
設定
呼び出し時にweave.init
、環境変数 WEAVE_TRACE_LANGCHAIN
を "true"
に設定することでトレースが有効になります。これにより、WeaveはLangChainアプリケーションのトレースを自動的にキャプチャできます。この動作を無効にしたい場合は、環境変数を "false"
.
LangChainコールバックとの関係
自動ログ記録
提供される自動ログ記録weave.init()
は、LangChainアプリケーションのすべてのコンポーネントにコンストラクタコールバックを渡すのと似ています。これは、プロンプトテンプレート、チェーン、LLM呼び出し、ツール、エージェントステップなど、すべての相互作用がアプリケーション全体でグローバルに追跡されることを意味します。
手動ログ記録
手動ログ記録メソッド(WeaveTracer
および weave_tracing_enabled
)は、LangChainアプリケーションの個々の部分でリクエストコールバックを使用するのに似ています。これらの方法は、アプリケーションのどの部分がトレースされるかをより細かく制御できます:
- コンストラクタコールバック: チェーンまたはコンポーネント全体に適用され、すべての相互作用を一貫してログに記録します。
- リクエストコールバック:特定のリクエストに適用され、特定の呼び出しの詳細なトレースを可能にします。
モデルと評価
プロンプト、モデル構成、推論パラメータなど複数のコンポーネントを持つ様々なユースケースのアプリケーションでLLMを整理し評価することは難しいです。weave.Model
を使用することで、システムプロンプトや使用するモデルなどの実験の詳細を記録し整理することができ、異なるイテレーションを比較しやすくなります。
次の例はLangchainチェーンをWeaveModel
でラップする方法を示しています:

serve
、およびEvaluations
と共に使用することもできます。
評価
評価はモデルのパフォーマンスを測定するのに役立ちます。weave.Evaluation
クラスを使用することで、特定のタスクやデータセットに対するモデルのパフォーマンスを記録し、異なるモデルやアプリケーションのイテレーションを比較しやすくなります。次の例は、作成したモデルを評価する方法を示しています:

既知の問題
- 非同期呼び出しのトレース - Langchainの
AsyncCallbackManager
の実装におけるバグにより、非同期呼び出しが正しい順序でトレースされません。これを修正するためにPRを提出しました。そのため、ainvoke
、astream
およびabatch
メソッドをLangchain Runnablesで使用する場合、トレース内の呼び出し順序が正確でない可能性があります。