メインコンテンツへスキップ
Weave Op は、すべての Call を自動的にログする、バージョン管理された関数です。
Op を作成するには、Python 関数を weave.op() でデコレートします
Op を呼び出すと、前回の Call からコードが変更されている場合は新しい Op バージョンが作成され、関数の入力と出力がログされます。@weave.op() でデコレートした関数は、呼び出す前に weave.init('your-project-name') を実行しなければ、通常どおりに動作します (コードのバージョン管理やトラッキングは行われません) 。Ops は Weave toolbelt を使用して serve または deploy できます。

表示名をカスタマイズする

@weave.op デコレーターの name パラメーターを設定すると、Op の表示名をカスタマイズできます。

kind と color を適用する

Weave UI で Ops をより見やすく整理するには、コード内の @weave.op デコレータに kind 引数と color 引数を追加して、カスタムの kind と color を設定します。たとえば、次のコードでは親関数に LLMkindbluecolor を、ネストされた関数に toolkindredcolor を適用しています。
これにより、次のように Weave UI 内の Ops に color と kind が適用されます。
LLM の kind と blue の color を持つ親 call と、tool の kind と red の color を持つネストされた call を示す Weave UI。
使用できる kind の値は次のとおりです。
  • agent
  • llm
  • tool
  • search
使用できる color の値は次のとおりです。
  • red
  • orange
  • yellow
  • green
  • blue
  • purple

ログする入力と出力をカスタマイズする

元の関数を変更せずに Weave がログするデータを変えたい場合 (たとえば、機密データを隠すため) 、Op デコレーターに postprocess_inputspostprocess_output を渡せます。postprocess_inputs は、キーが argument 名、値が argument の値である dict を受け取り、変換後の入力を含む dict を返します。postprocess_output は、通常その関数が返す任意の値を受け取り、変換後の出力を返します。

サンプリング率を制御する

@weave.op デコレーターで tracing_sample_rate パラメーターを設定すると、Op の call がどの頻度でトレースされるかを制御できます。これは、高頻度で実行される Ops で、call の一部だけをトレースすればよい場合に便利です。エージェントの開発中は、その挙動をより適切に把握して理解できるよう、すべてのトレースを収集することを推奨します。一方、本番では、エージェントの挙動の可観測性を維持しつつレートコストを抑えるために、トレースサンプリングを設定することを推奨します。Weave では、サンプリング率は最も外側の Op にのみ適用されます。ネストされた Op にサンプリング率が設定されていても、親 Op から先に呼び出された場合、そのネストされた Op のサンプリング率は無視されます。
Op の call がサンプリングされない場合:
  • 関数は通常どおり実行されます
  • トレースデータは Weave に送信されません
  • その call では子 Op もトレースされません
サンプリング率は 0.0 以上 1.0 以下である必要があります。
logging中にcall linkが表示されないようにするには、WEAVE_PRINT_CALL_LINK 環境変数を false に設定します。これは、出力の冗長さを抑え、ログの煩雑さを減らしたい場合に便利です。

Op を削除する

Op のバージョンを削除するには、Op ref で .delete() を呼び出します。
削除した Op にアクセスすると、エラーになります。