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

前提条件

始める前に、必要なライブラリをインストールしてインポートし、W&B APIキーを取得して、Weaveプロジェクトを初期化してください。

1. Weaveでプロンプトを作成し改良する

適切なプロンプトエンジニアリングは、モデルが適切にエンティティを抽出するよう導くために非常に重要です。まず、画像データから何を抽出し、どのようにフォーマットするかについての指示をモデルに与える基本的なプロンプトを作成します。次に、追跡と反復のためにWeaveにプロンプトを保存します。
次に、より多くの指示と検証ルールを追加してプロンプトを改善し、出力のエラーを減らすのに役立てます。

2. データセットを取得する

次に、OCRパイプラインの入力として使用する手書きメモのデータセットを取得します。 データセット内の画像はすでにbase64エンコードされており、前処理なしでLLMがデータを使用できることを意味します。

3. NERパイプラインを構築する

次に、NERパイプラインを構築します。パイプラインは2つの関数で構成されます:
  1. データセットからPIL画像を取得し、encode_imageVLMに渡すことができる画像のエンコードされた文字列表現を返す関数base64VLMに渡すことができる画像のエンコードされた文字列表現
  2. 画像とシステムプロンプトを取り、extract_named_entities_from_imageシステムプロンプトで説明されているように、その画像から抽出されたエンティティを返す関数
ここで、次のような関数を作成しますnamed_entity_recognation that:
  • 画像データをNERパイプラインに渡す
  • 結果を正しくフォーマットされたJSONで返す
デコレータを使用して@weave.op()weave.op関数の実行を自動的にW&B UIで追跡およびトレースします。 すべてのnamed_entity_recognationweave.op関数が実行されると、完全なトレース結果がWeave UIで表示されます。トレースを表示するには、WeaveプロジェクトのTracesタブに移動します。
最後に、データセット全体でパイプラインを実行し、結果を確認します。 次のコードはデータセットをループし、結果をローカルファイルprocessing_results.jsonに保存します。結果はWeave UIでも表示できます。
Weave UIのTracesテーブルで以下のようなものが表示されます。 Screenshot 2025-05-02 at 12.03.00 PM.png

4. Weaveを使用してパイプラインを評価する

VLMを使用してNERを実行するパイプラインを作成したので、Weaveを使用して体系的に評価し、どれだけうまく機能するかを確認できます。WeaveでのEvaluationsについての詳細はEvaluations Overviewで学ぶことができます。 Weave Evaluationの基本的な部分はScorersです。Scorersは、AI出力を評価し、評価メトリクスを返すために使用されます。AIの出力を取り、分析し、結果の辞書を返します。Scorersは必要に応じて入力データを参照として使用でき、評価からの説明や推論などの追加情報も出力できます。 このセクションでは、パイプラインを評価するための2つのScorersを作成します:
  1. プログラム的Scorer
  2. LLM-as-a-judgeのScorer

プログラム的Scorer

プログラム的Scorer、check_for_missing_fields_programaticallyは、モデル出力(named_entity_recognition関数の出力)を取り、結果の中でkeysフィールドが欠落しているか空であるかを識別します。 このチェックは、モデルがフィールドをキャプチャできなかったサンプルを特定するのに最適です。

LLM-as-a-judgeのScorer

評価の次のステップでは、画像データとモデルの出力の両方が提供され、評価が実際のNERパフォーマンスを反映していることを確認します。モデル出力だけでなく、画像の内容が明示的に参照されます。 このステップで使用されるScorer、check_for_missing_fields_with_llmは、スコアリングにLLMを使用します(具体的にはOpenAIのgpt-4o)。eval_promptの内容で指定されているように、check_for_missing_fields_with_llmBoolean値を出力します。すべてのフィールドが画像の情報と一致し、フォーマットが正しい場合、Scorerはtrueを返します。フィールドが欠落している、空である、不正確である、または一致しない場合、結果はfalseとなり、Scorerは問題を説明するメッセージも返します。

5. 評価を実行する

最後に、渡されたdatasetを自動的にループし、結果をWeave UIにまとめて記録する評価呼び出しを定義します。 次のコードは評価を開始し、NERパイプラインからのすべての出力に2つのScorersを適用します。結果はWeave UIのEvalsタブで確認できます。
上記のコードが実行されると、Weave UIの評価テーブルへのリンクが生成されます。リンクをたどって結果を表示し、モデル、プロンプト、および選択したデータセット間でパイプラインのさまざまな反復を比較します。Weave UIは、以下に示すようなビジュアライゼーションをチーム用に自動的に作成します。 Screenshot 2025-05-02 at 12.26.15 PM.png