Cloud Functions と Pub/Sub を使用してモデル イベント通知を有効にする

Gemini Enterprise エージェント プラットフォーム ビジョンでは、モデルはカメラなどのデバイスからメディアデータを受け取り、データに対して AI 予測を実行し、アノテーションを継続的に生成します。多くの場合、処理されたデータは、メディア ウェアハウスや BigQuery などのデータ宛先(「データシンク」)に送信され、さらなる分析ジョブに使用されます。ただし、一部のアノテーションを異なる方法で処理する必要がある場合や、アノテーションのニーズが時間的制約を受ける場合もあります。Cloud Run functions と Pub/Sub の統合は、これらのニーズに対応するのに役立ちます。

モデル イベント通知を有効にするには、次の操作を行う必要があります。

  1. Cloud Run functions を使用して、モデルデータをリッスンし、そこからイベントを生成します。
  2. Cloud Run 関数で生成されたイベントを Pub/Sub イベントチャネル経由で送信します。

サポートされているモデル

次のモデルでは、Cloud Run functions のイベント生成と Pub/Sub イベント通知の統合が提供されています。

始める前に

  • 少なくともストリームノードとサポートされているモデルノードを含むアプリを作成します。
  • 省略可。Gemini Enterprise Agent Platform Vision SDK をインストールし、アプリにデータを取り込みます。アクティビティ通知を設定する前にこれを行わない場合は、設定後に実行する必要があります。
  • 省略可。使用する Cloud Run 関数を作成します。モデル出力を処理するように Cloud Run functions を構成する前に Cloud Run functions を作成していない場合は、そのプロセスで作成する必要があります。
  • 省略可。使用する Pub/Sub トピックを作成します。Pub/Sub でモデルイベント通知を有効にする前に Pub/Sub トピックを作成していない場合は、そのプロセスで作成する必要があります。
  • 省略可。Pub/Sub サブスクリプションを選択して作成します。Pub/Sub でモデル イベント通知を有効にする前に Pub/Sub サブスクリプションを作成しない場合は、トピックからメッセージを読み取るために、後で作成する必要があります。

モデル出力を処理するように Cloud Run functions を構成する

イベントベースの通知をトリガーするには、まずモデル出力を処理してイベントを生成するように Cloud Run functions を設定する必要があります。

Cloud Run 関数はモデルに接続し、後処理アクションとしてその出力をリッスンします。Cloud Run 関数は AppPlatformCloudFunctionResponse を返す必要があります。イベント(appplatformeventbody)は、次の手順で構成する Pub/Sub トピックに送信されます。

Cloud Run 関数のサンプル(占有率分析モデル)

Cloud Run 関数のサンプル

/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.hello_http = (req, res) => {
// Logging statement can be read with cmd `gcloud functions logs read {$functionName}`.
// For more about logging, please see https://cloud.google.com/functions/docs/monitoring

// The processor output will be stored in req.body.
const messageString = constructMessage(req.body);

// Send your message to operator output with res HTTP response context.
res.status(200).send(messageString);
};

function constructMessage(data) {
// Typically, your processor output should contains appPlatformMetadata & it's designed output.
// Here we will use the occupancy analytics model as an example.
const appPlatformMetadata = data.appPlatformMetadata;
const annotations = data.annotations;
const events = [];
for(const annotation of annotations) {
   events.push({
      "event_message": "Event message goes here",
      "payload" : {
         "attr_key_goes_here" : "val_goes_here"
      },
      "event_id" : "event_id_goes_here"
   });
}

// Typically, your cloud function should return a string represent a JSON which has two fields:
// "annotations" must follow the specification of the target model.
// "events" should be of type "AppPlatformEventBody".
const messageJson = {
   "annotations": annotations,
   "events": events,
};
return JSON.stringify(messageJson);
}

次の手順に沿って、モデル出力ストリームを Cloud Run 関数に送信します。

コンソール

  1. Gemini Enterprise Agent Platform Vision ダッシュボードの [アプリケーション] タブを開きます。

    [アプリケーション] タブに移動

  2. リストからアプリケーションの名前の横にある [アプリを表示] を選択します。

  3. サポートされているモデルをクリックして、モデルの詳細サイドパネルを開きます。

  4. [アクティビティ通知] セクションの [後処理] リストで、既存の Cloud Run 関数を選択するか、新しい関数を作成します。

    Cloud Console で後処理 Cloud Functions イメージを選択する

Pub/Sub を使用してモデル イベント通知を有効にする

モデル出力を処理してイベントを生成するように Cloud Run functions を設定したら、Pub/Sub を使用してイベント通知を設定できます。トピックからメッセージを読み取るには、Pub/Sub サブスクリプションを選択して作成する必要があります。

コンソール

  1. Gemini Enterprise Agent Platform Vision ダッシュボードの [アプリケーション] タブを開きます。

    [アプリケーション] タブに移動

  2. リストからアプリケーションの名前の横にある [アプリを表示] を選択します。

  3. サポートされているモデルをクリックして、モデルの詳細サイドパネルを開きます。

  4. [アクティビティ通知] セクションで、[イベント通知を設定] を選択します。

  5. 開いた [イベント通知の Pub/Sub を設定する] オプション ウィンドウで、既存の Pub/Sub トピックを選択するか、新しいトピックを作成します。

  6. [Frequency] フィールドで、同じタイプのイベントの通知を送信できる頻度(秒単位)の整数値を設定します。

    Cloud コンソールでアクティビティ通知イメージを設定する

  7. [設定] をクリックします。

次のステップ