これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを利用できます:
Service API を使用してトレースを記録およびクエリする
- シンプルな LLM 呼び出しとレスポンスのモックを作成し、Weave に記録する。
- より複雑な LLM 呼び出しとレスポンスのモックを作成し、Weave に記録する。
- 記録されたトレースに対してサンプルのルックアップクエリを実行する。
記録されたトレースを表示する
このガイドのコードを実行したときに作成されるすべての Weave トレースは、team_id\project_id で指定される Weave プロジェクトの 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 への呼び出しを模倣したものです。
成功すると、このコードはトレースが開始されたことを示すメッセージを出力します。
シンプルなトレースを終了する
payload_end を作成し、url_end エンドポイントを使って Weave に記録します。payload_end オブジェクトは、クエリ Why is the sky blue? に対して OpenAI の gpt-4o から返されるレスポンスを模倣しています。オブジェクトは、料金サマリー情報とチャット補完結果が Weave ダッシュボードのトレースビューに表示されるような形式になっています。
成功すると、このコードはトレースが完了したことを示すメッセージを出力します。
複雑なトレース
複雑なトレースを開始する
payload_parent_start) を初期化します。この例では、「このドキュメントの要点を要約してもらえますか?」というユーザーのクエリ Can you summarize the key points of this document? を処理する操作が対象です。
payload_parent_start オブジェクトは、マルチステップワークフローの最初のステップを模倣し、url_start エンドポイントを使って Weave にこの操作を記録します。
成功すると、このコードは親呼び出しが記録されたことを示すメッセージを出力します。
RAG ドキュメント検索用の子スパンを追加する
payload_child_start オブジェクトで開始されます。このオブジェクトには次のフィールドが含まれます:
trace_id: この子スパンを親トレースにリンクします。parent_id: この子スパンを親の処理に関連付けます。inputs: 検索クエリをログに記録します。例:"This is a search query of the documents I'm looking for."
url_start エンドポイントの呼び出しが成功すると、子スパンの呼び出しが開始され完了したことを示すメッセージが出力されます。
LLM completion 呼び出し用の子スパンを追加する
payload_child_start オブジェクトで開始されます。このオブジェクトには次の情報が含まれます:
trace_id: この子スパンを親トレースにリンクします。parent_id: 子スパンを全体的なワークフローに関連付けます。inputs: ユーザーのクエリと、それに付加されたドキュメントコンテキストを含む、LLM への入力メッセージを記録します。model: この処理で使用するモデルを指定します(gpt-4o)。
payload_child_end オブジェクトは output フィールドに LLM が生成したレスポンスをログし、トレースを終了します。利用状況の概要情報もあわせてログされます。
成功すると、LLM の子スパンのトレースが開始され終了したことを示すメッセージが出力されます。
複雑なトレースを終了する
payload_parent_end オブジェクトを使って確定します。このオブジェクトには次が含まれます:
id: 最初に親トレースを開始したときのparent_call_id。output: ワークフロー全体の最終出力を表します。summary: ワークフロー全体の使用状況データを集約します。prompt_tokens: すべてのプロンプトで使用されたトークンの合計。completion_tokens: すべてのレスポンスで生成されたトークンの合計。total_tokens: ワークフローにおけるトークン数の合計。requests: 発行されたリクエストの総数(この例では1)。
ルックアップクエリを実行する
inputs.model フィールドが gpt-4o に等しいトレースだけをフィルタリングして抽出する方法を示します。
query_payload オブジェクトには次の項目が含まれます:
project_id: クエリ対象のチームとプロジェクトを識別します。filter: クエリが trace roots(最上位のトレース)のみを返すようにします。query:$expr演算子を使ってフィルタリングロジックを定義します:$getField:inputs.modelフィールドを取得します。$literal:inputs.modelが"gpt-4o"に等しいトレースにマッチさせます。
limit: クエリ結果を 10,000 件に制限します。offset: クエリの開始位置を最初の結果に設定します。sort_by: 結果をstarted_atタイムスタンプで降順に並べ替えます。include_feedback: 結果からフィードバックデータを除外します。