> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/advanced-blocks/roboflow-custom-metadata.md).

# Roboflow カスタムメタデータ

Roboflow Model Monitoring ダッシュボードで、予測から推論 ID を抽出し、フィルタリング、分析、整理を可能にする名前と値のペアを追加することで、推論結果にカスタムメタデータフィールドを付与します。これにより、監視ワークフロー、運用分析、モデル性能の追跡に役立つ推論データを扱えます。

## このブロックの仕組み

このブロックは、Roboflow Model Monitoring に保存された推論結果にカスタムメタデータを追加し、予測に文脈情報を付与してフィルタリングと分析を行えるようにします。このブロックは次のことを行います：

1. モデル予測とメタデータ設定を受け取ります：
   * 対応している任意のモデルタイプ（物体検出、インスタンスセグメンテーション、キーポイント検出、または分類）の予測を受け取ります
   * 追加するカスタムメタデータのフィールド名とフィールド値を受け取ります
   * 実行モードの fire-and-forget フラグを受け入れます
2. Roboflow API キーを検証します：
   * 有効な Roboflow API キーが利用可能であることを確認します（API アクセスに必要です）
   * API キーがない場合は、取得方法の案内とともにエラーを発生させます
3. 予測から推論 ID を抽出します：
   * supervision の Detections オブジェクトの場合：データ辞書から推論 ID を抽出します
   * 分類予測の場合：予測辞書から推論 ID を抽出します
   * メタデータを付与する必要があるすべての一意な推論 ID を収集します
   * 推論 ID が見つからない場合の処理を行います（エラーメッセージを返します）
4. ワークスペース情報を取得します：
   * 提供された API キーを使用して Roboflow API からワークスペース ID を取得します
   * ワークスペース検索時の API 呼び出しを繰り返さないように、キャッシュ（15 分で期限切れ）を使用します
   * API キーの MD5 ハッシュをキャッシュキーとして使用して、ワークスペース名をキャッシュします
5. API を通じてカスタムメタデータを追加します：
   * Roboflow API を呼び出して、各推論 ID にカスタムメタデータフィールドを付与します
   * フィールド名とフィールド値を推論結果に関連付けます
   * メタデータは Model Monitoring ダッシュボードで利用可能になり、フィルタリングと分析に使用できます
6. 同期または非同期で実行します：
   * **非同期モード（fire\_and\_forget=True）**：タスクをバックグラウンドスレッドプールまたは FastAPI のバックグラウンドタスクに送信し、API 呼び出しの完了を待たずにワークフローを継続できるようにします
   * **同期モード（fire\_and\_forget=False）**：API 呼び出しの完了を待ち、即時のステータスを返します。デバッグやエラー処理に便利です
7. ステータス情報を返します：
   * 成功（False）または失敗（True）を示す error\_status を出力します
   * アップロードのステータスまたはエラー詳細を含む message を出力します
   * メタデータが正常に付与されたかどうかのフィードバックを提供します

このブロックにより、推論結果にカスタムメタデータを付与できるため、Model Monitoring ダッシュボードで予測をフィルタリングし、分析しやすくなります。たとえば、位置ラベル、品質スコア、処理フラグ、または推論データの整理と分析に役立つその他の文脈情報を付与できます。

## 一般的な使用例

* **位置ベースのフィルタリング**：地理的な分析とフィルタリングのために、推論に位置メタデータを付与します（例：推論に「toronto」「warehouse\_a」「production\_line\_1」などの位置ラベルを付与する）。これにより、位置ベースの監視ワークフローを実現できます
* **品質管理タグ付け**：品質追跡のために、推論に品質または検証メタデータを付与します（例：推論に「pass」「fail」「requires\_review」「approved」などのタグを付ける）。これにより、品質管理ワークフローを実現できます
* **文脈注釈**：よりよい整理と分析のために、推論へ文脈情報を追加します（例：カメラ ID、時間帯、バッチ番号、オペレーター ID、環境条件などをタグ付けする）。これにより、文脈分析ワークフローを実現できます
* **分類強化**：モデル予測を超えて、推論結果にカスタムラベルやカテゴリを付与します（例：ビジネスロジックの結果、ワークフローの判断、ユーザーフィードバック、手動修正をタグ付けする）。これにより、強化された分類ワークフローを実現できます
* **運用分析**：運用コンテキストを表すメタデータを付与して、運用指標を追跡します（例：シフト情報、生産バッチ、機器状態、性能指標をタグ付けする）。これにより、運用分析ワークフローを実現できます
* **フィルタリングとセグメンテーション**：データセグメントを表すメタデータを付与することで、Model Monitoring ダッシュボードで高度なフィルタリングを可能にします（例：顧客セグメント、製品カテゴリ、ユースケース種別、デプロイ環境をタグ付けする）。これにより、セグメンテーションワークフローを実現できます

## 他のブロックへの接続

このブロックは予測を受け取り、ステータス情報を出力します：

* **モデルブロックの後** （物体検出モデル、インスタンスセグメンテーションモデル、分類モデル、キーポイント検出モデル）の後に、推論結果へメタデータを付与します（例：検出結果に位置タグを追加する、分類結果に品質ラベルを付与する、キーポイント検出に文脈タグを付ける）。これにより、モデルからメタデータへのワークフローを実現できます
* **フィルタリングまたは分析ブロックの後** （DetectionsFilter、ContinueIf、OverlapFilter）の後に、フィルタリングまたは分析済みの結果へメタデータを付与します（例：フィルタ条件を付けた検出結果にタグを付ける、分析結果をメタデータとして追加する、処理済み結果にワークフロー状態をラベル付けする）。これにより、分析からメタデータへのワークフローを実現できます
* **条件付き実行ブロックの後** （ContinueIf、Expression）の後に、ワークフローの判断に基づいてメタデータを付与します（例：判断結果をタグ付けする、条件分岐ラベルを追加する、条件に基づいて結果をマークする）。これにより、条件からメタデータへのワークフローを実現できます
* **他の sink ブロックと並列に** メタデータのタグ付けを他のデータ保存操作と組み合わせます（例：データセットへのアップロード中にタグ付けする、ログ記録中にメタデータを追加する、Webhook 通知と組み合わせる）。これにより、並列 sink ワークフローを実現できます
* **可視化ブロックの前後で** 可視化操作の前後でメタデータが確実に付与されるようにします（例：可視化に文脈を付ける、可視化済み結果にメタデータを追加する）。これにより、メタデータ付きの可視化ワークフローを実現できます
* **ワークフローの終端で** ワークフロー完了前に、すべての推論結果にメタデータが付与されるようにします（例：最終メタデータの付与、包括的な結果タグ付け、完全なメタデータカバレッジ）。これにより、エンドツーエンドのメタデータワークフローを実現できます

## 要件

このブロックには、環境またはワークフロー設定で有効な Roboflow API キーが必要です。API キーは Roboflow API で認証し、Model Monitoring 機能にアクセスするために必要です。API キーの取得方法については <https://docs.roboflow.com/reference/authentication/authentication/find-your-roboflow-api-key> を参照してください。このブロックは、推論 ID を含む予測を必要とします（予測は推論 ID を含むモデルによって生成されている必要があります）。対応する予測タイプは、物体検出、インスタンスセグメンテーション、キーポイント検出、分類です。このブロックは API 呼び出しを最適化するためにワークスペースのキャッシュ（15 分で期限切れ）を使用します。Roboflow の Model Monitoring の詳細は、<https://docs.roboflow.com/deployment/monitoring-and-analytics/model-monitoring> を参照してください。

### 種別識別子

ステップで次の識別子を使用します `"type"` フィールド: `roboflow_core/roboflow_custom_metadata@v1` ワークフローにステップとしてブロックを追加するには。

### プロパティ

| **名前**            | **型**  | **説明**                                                                                                                                                                                                                                       | 参照 |
| ----------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`            | `str`  | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                      | ❌  |
| `field_name`      | `str`  | Roboflow Model Monitoring で作成するカスタムメタデータフィールドの名前です。これは、Model Monitoring ダッシュボードでフィルタリングと分析に使用できるフィールド名になります。フィールド名は説明的で、付与されるメタデータの種類を表すものにしてください（例：'location'、'quality'、'camera\_id'、'batch\_number'）。このフィールド名は、メタデータ値を整理し、分類するために使用されます。   | ❌  |
| `field_value`     | `str`  | カスタムメタデータフィールドに割り当てる値です。これは、推論結果に付与され、Model Monitoring ダッシュボードでフィルタリングと分析に使用できる実際のデータです。文字列リテラルでも、ワークフローの出力を参照するセレクタでもかまいません。一般的な値：位置識別子（例：'toronto'、'warehouse\_a'）、品質ラベル（例：'pass'、'fail'、'review'）、識別子（例：カメラ ID、バッチ番号）、または用途に関連するその他の文脈情報。 | ✅  |
| `fire_and_forget` | `bool` | 実行モードフラグ。True（既定）の場合、ブロックはバックグラウンドで非同期実行され、API 呼び出しの完了を待たずにワークフロー処理を継続できます。これによりワークフローは高速に実行されますが、エラーはすぐには利用できません。False の場合、ブロックは同期実行され、API 呼び出しの完了を待ってから、即時のステータスとエラー情報を返します。デバッグやエラー処理には False を、性能を優先する本番ワークフローには True を使用してください。         | ✅  |

この **参照** 列は、で利用可能な動的値を使用してプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細情報

### ランタイム互換性

`requires_internet` - air-gapped / offline deployments : このブロックは、完全オフライン／エアギャップ環境からアクセスできないサービスに依存します。

### 入出力バインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `Roboflowカスタムメタデータ` のバージョン `v1` 持つか確認してください。

<details>

<summary>入出力バインディング</summary>

* 入力
  * `predictions` (*Union\[*[*`classification_prediction`*](/workflows/ja/gaido/developer-guide/kinds/classification-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`keypoint_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/keypoint-detection-prediction.md)*,* [*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)*]*）：カスタムメタデータを付与する対象のモデル予測（物体検出、インスタンスセグメンテーション、キーポイント検出、または分類）です。予測には、Roboflow Model Monitoring で特定の推論結果とメタデータを関連付けるために使用される推論 ID が含まれている必要があります。推論 ID は、supervision の Detections オブジェクトまたは分類予測辞書から自動的に抽出されます。メタデータは、予測内で見つかったすべての推論 ID に付与されます。
  * `field_value` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)）：カスタムメタデータフィールドに割り当てる値です。これは、推論結果に付与され、Model Monitoring ダッシュボードでフィルタリングと分析に使用できる実際のデータです。文字列リテラルでも、ワークフローの出力を参照するセレクタでもかまいません。一般的な値：位置識別子（例：'toronto'、'warehouse\_a'）、品質ラベル（例：'pass'、'fail'、'review'）、識別子（例：カメラ ID、バッチ番号）、または用途に関連するその他の文脈情報。
  * `fire_and_forget` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)）：実行モードフラグ。True（既定）の場合、ブロックはバックグラウンドで非同期実行され、API 呼び出しの完了を待たずにワークフロー処理を継続できます。これによりワークフローは高速に実行されますが、エラーはすぐには利用できません。False の場合、ブロックは同期実行され、API 呼び出しの完了を待ってから、即時のステータスとエラー情報を返します。デバッグやエラー処理には False を、性能を優先する本番ワークフローには True を使用してください。
* 出力
  * `error_status` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)): ブールフラグ。
  * `message` ([`string`](/workflows/ja/gaido/developer-guide/kinds/string.md)): 文字列値。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/roboflow_custom_metadata@v1",
	    "predictions": "$steps.object_detection.predictions",
	    "field_name": "location",
	    "field_value": "toronto",
	    "fire_and_forget": true
	}
```

</details>
