これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用できます。
- シンプルな LLM Call と応答のモックを作成し、Weave にログします。
- より複雑な LLM Call と応答のモックを作成し、Weave にログします。
- ログしたトレースに対してサンプルのルックアップクエリを実行します。
ログしたトレースを表示する
このガイドのコードを実行して作成されたすべての Weave トレースを表示するには、Weave プロジェクト (team_id\project_id で指定) の Traces タブに移動し、トレースの名前を選択します。
始める前に、前提条件を済ませておいてください。
前提条件: 変数とエンドポイントを設定する
トレースをログする前に、サービス API のエンドポイントを設定し、W&B の認証情報で認証する必要があります。 次のコードは、サービス API へのアクセスに使用する URL エンドポイントを設定します。https://trace.wandb.ai/call/starthttps://trace.wandb.ai/call/endhttps://trace.wandb.ai/calls/stream_query
project_id: トレースをログする Weights & Biases のプロジェクト名。team_id: CoreWeave Forge のチーム名。wandb_token: ご自身の W&B APIキー。
シンプルなトレース
以下のセクションでは、シンプルなトレースの作成方法について説明します:シンプルなトレースを開始する
以下のコードは、サンプルの LLM Callpayload_start を作成し、url_start エンドポイントを使用して Weave にログします。payload_start オブジェクトは、クエリ Why is the sky blue? で OpenAI の gpt-4o への Call を模倣します。
成功すると、このコードはトレースが開始されたことを示すメッセージを出力します:
シンプルなトレースを終了する
シンプルなトレースを完了するために、以下のコードはサンプル LLM Callpayload_end を作成し、url_end エンドポイントを使用して Weave にログします。payload_end オブジェクトは、クエリ Why is the sky blue? に対する OpenAI の gpt-4o からの応答を模倣しています。このオブジェクトは、pricing summary information とチャット補完が Weave ダッシュボードのトレースビューで生成されるようにフォーマットされています。
成功すると、このコードはトレースが完了したことを示すメッセージを出力します:
複雑なトレース
シンプルな単一ステップのトレースをログしたので、以下のセクションでは、複数操作の RAG ルックアップに似た、子スパンを持つより複雑なトレースの作成方法をご案内します。複雑なトレースを開始する
以下のコードは、複数のスパンを持つより複雑なトレースを作成する方法を示しています。例として、Retrieval-Augmented Generation (RAG) のルックアップに続いて LLM Call を行うものがあります。最初の部分では、操作を表す親トレース (payload_parent_start) を初期化します。この場合、操作はユーザークエリ Can you summarize the key points of this document? を処理します。
payload_parent_start オブジェクトは、多段階のワークフローの初期ステップを模倣し、url_start エンドポイントを使用して Weave に操作をログします。
成功すると、このコードは親 Call がログされたことを示すメッセージを出力します:
RAG ドキュメント ルックアップ用の子スパンを追加
以下のコードは、前のステップで開始した複雑な親トレースに子スパンを追加する方法を示しています。このステップは、ワークフロー内の RAG ドキュメント ルックアップのサブ操作をモデル化します。 子トレースは、以下の内容を含むpayload_child_start オブジェクトで開始されます:
trace_id: この子スパンを親トレースにリンクします。parent_id: 子スパンを親操作に関連付けます。inputs: 検索クエリをログします。例:"This is a search query of the documents I'm looking for."
url_start エンドポイントへの呼び出しが成功すると、コードは子 Call が開始および完了したことを示すメッセージを出力します:
LLM 補完 Call の子スパンを追加する
次のコードは、複雑な親トレースに、LLM 補完 Call を表す子スパンをもう 1 つ追加する方法を示しています。このステップでは、前の RAG 操作で取得したドキュメントのコンテキストに基づいて LLM が応答を生成する処理をモデル化します。 LLM 補完のトレースは、payload_child_start オブジェクトで開始します。このオブジェクトには次の項目が含まれます。
trace_id: この子スパンを親トレースにリンクします。parent_id: 子スパンを親ワークフローに関連付けます。inputs: ユーザーのクエリと、追加されたドキュメントのコンテキストを含む、LLM への入力メッセージをログします。model: 操作に使用するモデル (gpt-4o) を指定します。
payload_child_end オブジェクトは LLM が生成した応答を output フィールドにログして、トレースを終了します。また、このコードは使用量の要約情報もログします。
成功すると、LLM の子スパンのトレースが開始され、終了したことを示すメッセージが出力されます:
複雑なトレースを終了する
次のコードは、親トレースを確定し、ワークフローの完了を示す方法を説明します。このステップでは、すべての子スパン (たとえば、RAG ルックアップや LLM 補完) の結果を集約し、最終出力とメタデータをログします。 トレースは、次の内容を含むpayload_parent_end オブジェクトを使用して確定されます。
id: 親トレースの開始時のparent_call_idです。output: ワークフローの最終出力を表します。summary: ワークフローの使用量データを集約します。prompt_tokens: すべてのプロンプトで使用されたトークンの総数です。completion_tokens: すべての応答で生成されたトークンの総数です。total_tokens: ワークフロー全体のトークン数の合計です。requests: 行われたリクエストの総数です (この場合は1) 。
ルックアップクエリを実行する
トレースが Weave にログされていれば、サービス API を使用してプログラムでクエリできます。以下のコードは、前のサンプル で作成されたトレースをクエリする方法を示しており、inputs.model フィールドが gpt-4o に等しいトレースのみをフィルターします。
query_payload オブジェクトには以下が含まれます:
project_id: クエリする チーム と project を識別します。filter: クエリが トレース のルート (top-level のトレース) のみを返すようにします。query:$exprオペレーターを使用してフィルターロジックを定義します。$getField:inputs.modelフィールドを取得します。$literal:inputs.modelが"gpt-4o"に等しいトレースに一致します。
limit: クエリを 10,000 件の結果に制限します。offset: 最初の結果からクエリを開始します。sort_by:started_atタイムスタンプで結果を降順に並べ替えます。include_feedback: 結果からフィードバックデータを除外します。