メインコンテンツへスキップ
W&B Weave は、さまざまなコンテンツタイプのログ記録と表示をサポートしており、動画、画像、オーディオクリップ、PDF、CSV データ、HTML に対応する専用関数を備えています。このガイドは、Weave トレースでメディアの入力と出力を取得し、ほかのトレースデータとあわせて確認および共有したい開発者向けです。各メディアタイプをログして表示する基本的な例から応用例まで紹介します。

概要

このガイドの例ではアノテーションを使用します。メディアのログを始める最も直接的な方法であるため、アノテーションの使用を推奨します。より高度な設定については、Content API セクションを参照してください。メディアを Weave にログするには、Annotated[bytes, Content]Annotated[str, Content] のような型アノテーションを、op の入力型または戻り値の型として追加します。パス引数に Annotated[str, Content] でアノテーションを付けると、Weave はトレース内でそのメディアを自動的に開いて検出し、表示します。
以下のセクションでは、各タイプのメディアをログする例を紹介します。各セクションは最小限の例から始まり、その後より高度なシナリオへと展開します。

画像をログする

次の例では、画像を生成して Weave の UI にログする方法を示します。
生成された、かぼちゃ帽子をかぶった猫の画像が表示された Weave トレース view
Annotated[bytes, Content] を関数のアノテーションとして使用するか、Annotated[str, Content] をファイルパスのアノテーションとして使用して、画像をログできます。次の例では、シンプルな画像を描画し、その後 Content アノテーションを使って Weave にログします。
Weave は画像をログして、画像を表示できるトレースへのリンクを返します。

応用例: DALL-E で画像を生成して Weave にログする

次の例では、猫の画像を生成して Weave にログします。

高度な例: ログする前に大きな画像をリサイズする

UI のレンダリングコストやストレージへの影響を抑えるため、ログする前に画像をリサイズしておくと便利です。画像をリサイズするには、@weave.oppostprocess_output を使用できます。
Weave はサイズ変更した画像をログし、その画像を確認できる トレース へのリンクを返します。

動画をログする

以下の例では、動画を生成して Weave の UI にログする方法を示します。
Weave での動画ログ
Annotated[bytes, Content] 型で関数にアノテーションを付けることで、動画をログできます。Weave は mp4 動画を自動的に処理します。以下は最小限の例です。
Weave は動画をログし、動画を確認できるトレースへのリンクを返します。

応用例: 動画解析 project で動画をログする

次の例では、動画理解 project 内で動画をログする方法を示します。
Weave は入力動画とモデルの解析結果の両方をログするため、トレース内でまとめて確認できます。

ドキュメントをログする

以下の例では、ドキュメントを生成し、Weave の UI にログします。
Weave での PDF ドキュメントのログ
Annotated[bytes, Content] 型で関数にアノテーションを付けるか、Annotated[str, Content[Literal['text']] でドキュメントのタイプを指定して、ドキュメントをログできます。Weave は pdfcsvmdtextjsonxml のファイルタイプを自動的に処理します。Annotated[str, Content] を使って、ファイルパス経由でログすることもできます。次の例では、入力された PDF ファイルと CSV ファイルのコピーを保存し、その後、関数から返されたファイルの内容も保存します。

応用例: RAG システム内でドキュメントをログする

この例では、Retrieval-Augmented Generation (RAG) システム内でドキュメントをログする方法を示します。
Weave はソース PDF と生成された回答の両方をログするため、各応答の生成元となったドキュメントを監査できます。

オーディオをログする

次の例では、オーディオを Weave にログする方法を示します。
ログされたオーディオ file をインライン オーディオ プレーヤー付きで表示した Weave トレース view
関数に Annotated[bytes, Content] タイプのアノテーションを付けるか、Annotated[str, Content[Literal['mp3']]] でオーディオのタイプを指定すると、オーディオを Weave にログできます。Weave は mp3wavflacoggm4a のファイルタイプを自動的に処理します。Annotated[str, Content] を使って、ファイルパスからログすることもできます。次のコードスニペットは、正弦波を生成して録音し、そのオーディオを Weave にログします。

高度な例: AI 作成のオーディオを生成してログする

この例では、Content アノテーションを使用して、AI 作成のオーディオを生成してログします。
このオーディオは Weave にログされ、オーディオプレーヤーとともに UI に自動的に表示されます。オーディオプレーヤーでは、元の音声波形を表示したり、ダウンロードしたりできます。
Weave でのオーディオのログ
次の例では、OpenAI API からのストリーミングレスポンスを使ってオーディオをログする方法を示します。
Audio Logging の cookbook をお試しください。この cookbook には、Weave と統合された Real-Time Audio API ベースのアシスタントの高度な例も含まれています。

HTML をログする

以下の例では、HTML を生成して Weave の UI にログする方法を示します。
Weave での HTML のログ
Annotated[bytes, Content[Literal['html']]] で関数にアノテーションを付けることで、インタラクティブな HTML をログできます。次の例では、最小限の HTML ページを作成して Weave にログします。

高度な例: Serverless Inference を使用して単体で完結する HTML ページを生成し、Weave にログする

この例では、Serverless Inference を使用して単体で完結する HTML ページを生成し、それらのページを Weave にログします。
この HTML は Weave にログされ、UI に自動的に表示されます。表内の file_name.html セルをクリックすると、フルスクリーンで開きます。元の .html ファイルをダウンロードすることもできます。

Contents API

Content API は Weave 内のメディアオブジェクトを扱います。これは、前述のアノテーションベースの例よりも細かく制御する必要がある場合に使用します。たとえば、base64 データ、カスタムバイトバッファ、またはテキストからコンテンツをインポートしたい場合や、カスタムメタデータを追加する必要がある場合です。コンテンツは、base64 データ、ファイルパス、生のバイト列、またはテキストとして Weave にインポートできます。
Content API は Python でのみ利用できます。

使用方法

Content API の主な使用方法は 2 つあります。型アノテーションと直接初期化です。 型アノテーションでは、使用すべき適切なコンストラクターが自動的に判別されます。一方、直接初期化では、より細かな制御が可能になり、コード内で Content API のランタイム機能を活用できます。

型アノテーション

Weave Content API は主に型アノテーションを通じて使用するように設計されており、これにより、トレースされた入力と出力をコンテンツブロブとして処理・保存する必要があることを Weave に示します。

直接初期化

次のような機能を活用するには:
  • デフォルトのアプリケーション (PDFビューアーなど) でファイルを開く。
  • モデルをJSONにダンプして、独自のblob storage (S3など) にアップロードする。
  • Content blob に関連付けるカスタムメタデータ (その生成に使用したモデルなど) を渡す。
次のいずれかのメソッドを使用して、対象のタイプからコンテンツを直接初期化します:
  • Content.from_path - ファイルパスから作成。
  • Content.from_bytes - 生のバイト列から作成。
  • Content.from_text - テキスト文字列から作成。
  • Content.from_base64 - base64エンコードされたデータから作成。

カスタムMIMEタイプ

Weave はほとんどのバイナリMIMEタイプを検出できますが、カスタムMIMEタイプや markdown などのテキスト文書は自動的に検出されないことがあるため、ファイルのMIMEタイプまたは拡張子を手動で指定する必要があります。

型アノテーションを使ったカスタムMIMEタイプ

直接初期化によるカスタムMIMEタイプ

Contentのプロパティ

クラス属性とmethodの詳細な一覧については、Content リファレンスドキュメントを参照してください。

属性

ユーティリティメソッド

  • save(dest: str | Path) -> None: コンテンツをファイルに保存します。
  • open() -> bool: システムのデフォルトアプリケーションでファイルを開きます (事前にコンテンツが保存されているか、パスから読み込まれている必要があります)。
  • as_string() -> str: データを文字列として表示します (bytes は encoding 属性を使用してデコードされます)。

初期化 method

ファイルパスからcontentオブジェクトを作成します。
生のバイトデータから content オブジェクトを作成します:
テキストから content オブジェクトを作成します:
Base64 エンコードされたデータから content オブジェクトを作成します:

カスタムメタデータを追加する

任意の Content オブジェクトにカスタムメタデータを添付できます: