これはインタラクティブなノートブックです。ローカルで実行することも、以下のリンクから利用することもできます。
Service API を使用してトレースをログし、クエリする
- シンプルな LLM call とレスポンスのモックを作成し、Weave にログします。
- より複雑な LLM call とレスポンスのモックを作成し、Weave にログします。
- ログされたトレースに対してサンプルの検索クエリを実行します。
ログされたトレースを表示
このガイドのコードを実行したときに作成される Weave トレースはすべて、Weave プロジェクト (team_id\project_id で指定) の Traces タブに移動し、トレース名を選択すると表示できます。
始める前に、前提条件を完了してください
前提条件: 変数とエンドポイントを設定する
https://trace.wandb.ai/call/starthttps://trace.wandb.ai/call/endhttps://trace.wandb.ai/calls/stream_query
project_id: トレースをログする先の W&B プロジェクト名。team_id: W&B チーム名。wandb_token: W&B APIキー。
シンプルなトレース
シンプルなトレースを開始する
payload_start を作成し、url_start エンドポイントを使って Weave にログします。payload_start オブジェクトは、クエリ Why is the sky blue? を含む OpenAI の gpt-4o への call を模倣しています。
成功すると、このコードはトレースが開始されたことを示すメッセージを出力します。
シンプルなトレースを終了する
payload_end を作成し、url_end エンドポイントを使って Weave にログします。payload_end オブジェクトは、クエリ Why is the sky blue? に対する OpenAI’s gpt-4o からのレスポンスを模倣したものです。このオブジェクトは、Weave ダッシュボードの Trace view で料金サマリー情報と Chat Completion が生成されるように整形されています。
成功すると、このコードはトレースが完了したことを示すメッセージを出力します:
複雑なtrace
複雑なトレースを開始する
payload_parent_start) を初期化します。この場合の操作は、ユーザーのクエリ Can you summarize the key points of this document? を処理することです。
payload_parent_start オブジェクトは、複数の step から成る workflow の最初の step を模しており、url_start エンドポイントを使用してその操作を Weave にログします。
成功すると、このコードは親 call がログされたことを示すメッセージを出力します。
RAG ドキュメント検索用の子スパンを追加する
payload_child_start オブジェクトで開始され、これには次の内容が含まれます。
trace_id: この子スパンを親トレースに関連付けます。parent_id: この子スパンを親 operation に関連付けます。inputs: 検索クエリをログします。例:"探しているドキュメントの検索クエリです。"
url_start endpoint への call が成功すると、子 call が開始され、完了したことを示すメッセージが出力されます。
LLM completion call の子スパンを追加する
payload_child_start オブジェクトで開始され、これには次が含まれます。
trace_id: この子スパンを親トレースに紐付けます。parent_id: この子スパンを全体の workflow に関連付けます。inputs: ユーザークエリと追加されたドキュメントコンテキストを含む、LLM への入力メッセージをログします。model: この operation に使用するモデル (gpt-4o) を指定します。
payload_child_end オブジェクトは、LLM が生成した応答を output フィールドにログして、トレースを終了します。Usage のサマリー情報もログされます。
成功すると、コードは LLM の子スパンのトレースが開始されて終了したことを示すメッセージを出力します。
複雑な trace を終了する
payload_parent_end object を使用して完了します。これには次が含まれます。
id: 最初に親 trace を開始したときのparent_call_id。output: ワークフロー全体の最終出力を表します。summary: ワークフロー全体の使用状況データを集約します。prompt_tokens: すべてのプロンプトで使用された token の合計数。completion_tokens: すべての Response で生成された token の合計数。total_tokens: ワークフロー全体の token 総数。requests: 実行された Request の総数 (この場合は1) 。
ルックアップクエリを実行する
inputs.model フィールドが gpt-4o と等しいトレースだけをフィルタリングする方法を示しています。
query_payload オブジェクトには、次の内容が含まれます。
project_id: クエリ対象のチームとプロジェクトを識別します。filter: クエリが トレースルート (最上位のトレース) のみを返すようにします。query:$expr演算子を使用してフィルタリングロジックを定義します。$getField:inputs.modelフィールドを取得します。$literal:inputs.modelが"gpt-4o"に等しいトレースに一致します。
limit: クエリ結果を 10,000 件に制限します。offset: 先頭の結果からクエリを開始します。sort_by:started_atタイムスタンプの降順で結果を並べます。include_feedback: 結果からフィードバックデータを除外します。