メインコンテンツへスキップ
これはインタラクティブなノートブックです。ローカルで実行することも、以下のリンクを使用することもできます。

サードパーティシステムからトレースをインポート

このノートブックでは、CSV ファイル内の過去の会話トレースを W&B Weave にインポートして、分析したり、モデルの動作を比較したり、Weave でインストルメントされていないアプリケーションの外部で生成されたデータに対して評価を実行したりする方法を紹介します。 場合によっては、GenAI アプリケーションのリアルタイムのトレースを取得するために、Weave のインテグレーションを Python や JavaScript のコードに組み込めないことがあります。そうした場合でも、後からそれらのトレースを CSV または JSON 形式で入手できることがよくあります。 このノートブックでは、より低レベルな Weave Python API を使って CSV ファイルからデータを抽出し、Weave にインポートして、分析や評価を行う方法を紹介します。 このクックブックで前提とするサンプルデータセットは、次の構造になっています。
このノートブックでのインポート時の判断を理解するには、Weaveのトレースが 1:多 の連続した親子関係を持つことを覚えておいてください。つまり、1 つの親に複数の子を持たせることができ、その親自体が別の親の子になる場合もあります。 このノートブックでは、会話全体のloggingを行えるよう、親の識別子として conversation_id を、子の識別子として turn_index を使用します。 ご自身のデータセット、ファイルパス、および W&B project に合わせて、以下のセクションの変数を変更する必要があります。

環境を設定する

必要なパッケージをすべてインストールして import します。 wandb.login() でログインできるように、WANDB_API_KEY を環境に設定します (Colab にはシークレットとして指定します) 。 Colab にアップロードする file の名を name_of_file に設定し、ログ先の W&B project を name_of_wandb_project に設定します。
トレースのログ先チームを指定するには、name_of_wandb_project[TEAM_NAME]/[PROJECT_NAME] 形式を指定することもできます。
その後、weave.init() を呼び出して Weave クライアントを取得します。

データを読み込む

環境の準備ができたら、Weave が想定する親子構造に合うように、CSV データを読み込んで整形します。 データを pandas の DataFrame に読み込み、conversation_idturn_index でソートして、親子関係が正しい順序になるようにします。 その結果、会話のターンが conversation_data に配列として格納された、2 列の pandas DataFrame になります。

トレースを Weave にログする

データを会話とターンの形式に整えたら、次のステップはそれらのレコードを親 Call と子 Call として Weave に書き込むことです。 pandas DataFrame を反復処理します。
  • conversation_id ごとに親 Call を作成します。
  • ターン配列を反復処理して、turn_index 順に並べた子 Call を作成します。
下位レベルの Python API における重要な概念は次のとおりです。
  • Weave Call は Weave トレースに相当します。この Call には、親や子を関連付けることができます。
  • Weave Call には、feedback やメタデータなど、ほかの項目を関連付けることもできます。この例では inputs と output のみを関連付けていますが、データにそれらが含まれている場合は、import に追加できます。
  • Weave Call には createdfinished があります。これは、これらがリアルタイムでトラッキングされることを前提としているためです。今回は事後の import であるため、オブジェクトを定義して相互に関連付けたあとで、作成と完了を一度に行います。
  • Call の op 値は、同じ構成の Call を Weave がどのように分類するかを示します。この例では、すべての親 Call は Conversation タイプで、すべての子 Call は Turn タイプです。必要に応じて変更できます。
  • Call は inputsoutput を持つことができます。inputs は作成時に定義し、output は Call の完了時に定義します。

結果: Weave にログされたトレース

この時点で、CSV データは Weave にインポートされています。これで、定義した Conversation および Turn オペレーションの下にグループ化された会話とそのターンを Weave UI で確認できます。 トレース:
Weave UI にインポートされた会話のトレース
オペレーション:
Weave UI の Conversation オペレーションと Turn オペレーション

オプション: トレースをエクスポートして評価を実行する

トレースを Weave に取り込み、会話がどのように見えるかを把握したら、それらを別のプロセスにエクスポートして Weave の評価を実行できます。
Weave プロジェクトからトレースをエクスポート
これを行うには、query API を使用して W&B からすべての会話を取得し、それらからデータセットを作成します。

結果

エクスポートしたデータセットは Weave に再び公開され、評価の入力として使用できる状態になりました。
評価で使用できる状態になった、Weave UI で公開済みのデータセット
評価の詳細については、新しく作成したデータセットを使って RAG アプリケーションを評価する方法を紹介したクイックスタートをご覧ください。