これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください:
Service API を使用して Traces の ログ とクエリを行う
このガイドでは、 Weave Service API を使用して Traces を ログ に記録する方法を学びます。具体的には、Service API を使用して以下の操作を行います。- シンプルな LLM の呼び出しと応答のモックを作成し、 Weave に ログ を記録する。
- より複雑な LLM の呼び出しと応答のモックを作成し、 Weave に ログ を記録する。
- ログ に記録された Traces に対してサンプル検索クエリを実行する。
ログに記録された Traces を表示する
このガイドの コード を実行した際に作成されたすべての Weave Traces は、 Weave プロジェクト(team_id\project_id で指定)の Traces タブに移動し、 Trace の名前を選択することで表示できます。
開始する前に、事前準備を完了させてください。
事前準備:変数とエンドポイントの設定
以下の コード は、Service API への アクセス に使用される URL エンドポイントを設定します。https://trace.wandb.ai/call/starthttps://trace.wandb.ai/call/endhttps://trace.wandb.ai/calls/stream_query
project_id: Traces を ログ に記録したい W&B Projects の名前。team_id: W&B の Teams 名。wandb_token: あなたの W&B APIキー。
シンプルな Trace
以下のセクションでは、シンプルな Trace の作成手順を説明します。シンプルな Trace を開始する
以下の コード は、サンプルの LLM 呼び出しpayload_start を作成し、url_start エンドポイントを使用して Weave に ログ を記録します。payload_start オブジェクト は、Why is the sky blue?(なぜ空は青いの?)というクエリを用いた OpenAI の gpt-4o への呼び出しを模倣しています。
成功すると、この コード は Trace が開始されたことを示すメッセージを出力します。
シンプルな Trace を終了する
シンプルな Trace を完了するために、以下の コード はサンプルの LLM 呼び出しpayload_end を作成し、url_end エンドポイントを使用して Weave に ログ を記録します。payload_end オブジェクト は、クエリ Why is the sky blue? に対する OpenAI の gpt-4o からのレスポンスを模倣しています。この オブジェクト は、Weave ダッシュボード の Trace ビューで料金サマリー 情報 とチャットの完了内容が生成されるようにフォーマットされています。
成功すると、この コード は Trace が完了したことを示すメッセージを出力します。
複雑な Trace
以下のセクションでは、マルチオペレーションの RAG 検索に似た、子スパン(child spans)を持つより複雑な Trace の作成手順を説明します。複雑な Trace を開始する
以下の コード は、複数のスパンを持つより複雑な Trace を作成する方法を示しています。この例としては、RAG(検索拡張生成)検索の後に LLM 呼び出しを行う場合が挙げられます。最初のパートでは、全体の操作を表す親 Trace(payload_parent_start)を初期化します。このケースでは、ユーザーのクエリ Can you summarize the key points of this document?(このドキュメントの要点をまとめてくれますか?)を処理する操作です。
payload_parent_start オブジェクト は、マルチステップ ワークフロー の最初のステップを模倣し、url_start エンドポイントを使用して Weave に操作を ログ 記録します。
成功すると、この コード は親の呼び出しが ログ に記録されたことを示すメッセージを出力します。
RAG ドキュメント検索用の子スパンを追加する
以下の コード は、前のステップで開始した複雑な親 Trace に子スパンを追加する方法を示しています。このステップでは、全体的な ワークフロー 内の RAG ドキュメント検索サブ操作をモデル化しています。 子 Trace はpayload_child_start オブジェクト で開始され、以下を含みます。
trace_id: この子スパンを親 Trace にリンクします。parent_id: 子スパンを親の操作に関連付けます。inputs: 検索クエリを ログ に記録します。例:"This is a search query of the documents I'm looking for."
url_start エンドポイントへの呼び出しが成功すると、 コード は子の呼び出しが開始および完了したことを示すメッセージを出力します。
LLM 完了呼び出し用の子スパンを追加する
以下の コード は、複雑な親 Trace に別の子スパンを追加し、LLM の完了呼び出しを表現する方法を示しています。このステップでは、前の RAG 操作で取得されたドキュメントのコンテキストに基づいた AI のレスポンス生成をモデル化しています。 LLM 完了 Trace はpayload_child_start オブジェクト で開始され、以下を含みます。
trace_id: この子スパンを親 Trace にリンクします。parent_id: 子スパンを全体的な ワークフロー に関連付けます。inputs: ユーザーのクエリと付加されたドキュメントのコンテキストを含む、LLM への入力メッセージを ログ に記録します。model: 操作に使用された モデル を指定します(gpt-4o)。
payload_child_end オブジェクト が output フィールドに LLM 生成レスポンスを ログ 記録して Trace を終了します。使用状況のサマリー 情報 も ログ に記録されます。
成功すると、 コード は LLM の子スパン Trace が開始および終了したことを示すメッセージを出力します。
複雑な Trace を終了する
以下の コード は、親 Trace を終了し、 ワークフロー 全体の完了をマークする方法を示しています。このステップでは、すべての子スパン(例:RAG 検索と LLM 完了)の結果を集約し、最終的な出力と メタデータ を ログ に記録します。 Trace はpayload_parent_end オブジェクト を使用して完了します。これには以下が含まれます。
id: 最初の親 Trace 開始時のparent_call_id。output: ワークフロー 全体の最終出力を表します。summary: ワークフロー 全体の使用状況データを統合します。prompt_tokens: すべてのプロンプトで使用された合計トークン数。completion_tokens: すべてのレスポンスで生成された合計トークン数。total_tokens: ワークフロー の合計トークン数。requests: 行われたリクエストの総数(この場合は1)。
検索クエリの実行
以下の コード は、前の例で作成された Traces を照会し、inputs.model フィールドが gpt-4o に等しい Traces のみをフィルタリングする方法を示しています。
query_payload オブジェクト には以下が含まれます。
project_id: クエリ対象の Team と プロジェクト を特定します。filter: クエリが trace roots(トップレベルの Trace)のみを返すようにします。query:$expr演算子を使用してフィルタロジックを定義します。$getField:inputs.modelフィールドを取得します。$literal:inputs.modelが"gpt-4o"に一致する Traces を照合します。
limit: クエリの結果を 10,000 件に制限します。offset: クエリを最初の結果から開始します。sort_by:started_atタイムスタンプの降順で結果を並べ替えます。include_feedback: 結果からフィードバック データ を除外します。