Skip to main content
これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください:

Service APIを使用してトレースをログに記録しクエリする

以下のガイドでは、Weave Service APIを使用してトレースをログに記録する方法を学びます。具体的には、Service APIを使用して以下を行います:
  1. シンプルなLLMの呼び出しと応答のモックを作成し、Weaveにログを記録します。
  2. より複雑なLLMの呼び出しと応答のモックを作成し、Weaveにログを記録します。
  3. ログに記録されたトレースに対してサンプル検索クエリを実行します。
ログに記録されたトレースを表示する このガイドのコードを実行して作成されたすべてのWeaveトレースは、Traces タブのWeaveプロジェクト(team_id\project_idで指定)で、トレース名を選択することで表示できます。
始める前に、前提条件

Prerequisites: Set variables and endpoints

以下のコードは、Service APIにアクセスするために使用されるURLエンドポイントを設定します: さらに、以下の変数を設定する必要があります:
  • project_id:トレースをログに記録したいW&Bプロジェクトの名前。
  • team_id:あなたのW&Bチーム名。
  • wandb_token:あなたのW&B認証トークン

シンプルなトレース

以下のセクションでは、シンプルなトレースの作成手順を説明します。
  1. シンプルなトレースを開始する
  2. シンプルなトレースを終了する

シンプルなトレースを開始する

以下のコードはサンプルのLLM呼び出しを作成しpayload_starturl_startエンドポイントを使用してWeaveにログを記録します。payload_startオブジェクトはOpenAIのgpt-4oへの呼び出しを模倣し、クエリはWhy is the sky blue?です。 成功すると、このコードはトレースが開始されたことを示すメッセージを出力します:

シンプルなトレースを終了する

シンプルなトレースを完了するために、以下のコードはサンプルのLLM呼び出しpayload_endを作成し、url_endエンドポイントを使用してWeaveにログを記録します。payload_endオブジェクトはOpenAIのgpt-4oからのレスポンスを模倣し、クエリはWhy is the sky blue?です。このオブジェクトは、価格概要情報とチャット完了がWeaveダッシュボードのトレースビューで生成されるようにフォーマットされています。 成功すると、このコードはトレースが完了したことを示すメッセージを出力します:

複雑なトレース

以下のセクションでは、マルチオペレーションRAG検索に似た子スパンを持つより複雑なトレースの作成手順を説明します。
  1. 複雑なトレースを開始する
  2. 子スパンを追加する:RAGドキュメント検索
  3. 子スパンを追加する:LLM完了呼び出し
  4. 複雑なトレースを終了する

複雑なトレースを開始する

以下のコードは、複数のスパンを持つより複雑なトレースを作成する方法を示しています。これの例としては、検索拡張生成(RAG)検索の後にLLM呼び出しを行うことが挙げられます。最初の部分では、全体的な操作を表す親トレース(payload_parent_start)を初期化します。この場合、操作はユーザークエリCan you summarize the key points of this document?を処理することです。 payload_parent_startオブジェクトは、マルチステップワークフローの初期ステップを模倣し、url_startエンドポイントを使用して操作をWeaveにログ記録します。 成功すると、このコードは親呼び出しがログに記録されたことを示すメッセージを出力します:

複雑なトレースに子スパンを追加する:RAGドキュメント検索

以下のコードは、前のステップで開始した親トレースに子スパンを追加する方法を示しています。このステップは、全体的なワークフローにおけるRAGドキュメント検索のサブ操作をモデル化しています。 子トレースはpayload_child_startオブジェクトで開始され、以下を含みます:
  • trace_id:この子スパンを親トレースにリンクします。
  • parent_id:子スパンを親操作に関連付けます。
  • inputs:検索クエリをログに記録します。例えば、 "This is a search query of the documents I'm looking for."
url_startエンドポイントへの呼び出しが成功すると、コードは子呼び出しが開始され完了したことを示すメッセージを出力します:

複雑なトレースに子スパンを追加する:LLM完了呼び出し

以下のコードは、親トレースに別の子スパンを追加する方法を示しており、LLM完了呼び出しを表しています。このステップは、前のRAG操作で取得されたドキュメントコンテキストに基づくAIの応答生成をモデル化しています。 LLM完了トレースはpayload_child_startオブジェクトで開始され、以下を含みます:
  • trace_id:この子スパンを親トレースにリンクします。
  • parent_id:子スパンを全体的なワークフローに関連付けます。
  • inputs:LLMの入力メッセージをログに記録し、ユーザークエリと追加されたドキュメントコンテキストを含みます。
  • model:操作に使用されるモデルを指定します(gpt-4o)。
成功すると、コードはLLM子スパントレースが開始され終了したことを示すメッセージを出力します:
操作が完了すると、payload_child_endオブジェクトはoutputフィールドにLLMが生成した応答をログに記録することでトレースを終了します。使用状況の概要情報もログに記録されます。 成功すると、コードはLLM子スパントレースが開始され終了したことを示すメッセージを出力します:

複雑なトレースを終了する

以下のコードは、親トレースを完了させ、ワークフロー全体の完了をマークする方法を示しています。このステップでは、すべての子スパン(RAG検索や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 operator:
    • $getFieldinputs.modelフィールドを取得します。
    • $literalinputs.model"gpt-4o"に等しいトレースを一致させます。
  • limit:クエリを10,000件の結果に制限します。
  • offset: クエリを最初の結果から開始します。
  • sort_by: 結果をstarted_at タイムスタンプの降順で並べ替えます。
  • include_feedback: 結果からフィードバックデータを除外します。
クエリが成功すると、レスポンスにはクエリパラメータに一致するトレースデータが含まれます: