Livestream-Ausgabe aktivieren

Nachdem Sie den Datenaufnahmestream erstellt und der App die Verarbeitungsknoten hinzugefügt haben, müssen Sie auswählen, wohin die verarbeiteten Daten gesendet werden sollen. Eine Möglichkeit besteht darin, die Ausgabe der Livestream-App direkt zu empfangen, damit Sie auf diese Echtzeitanalysen reagieren können.

Im Allgemeinen konfigurieren Sie die App so, dass die Modellausgabe in einem Google Cloud Data Warehouse wie dem Media Warehouse von Gemini Enterprise Agent Platform Vision oder BigQuery gespeichert wird. Nachdem die Daten in einem dieser Data Warehouses gespeichert wurden, können sie für Offline-Analysejobs verwendet werden, die auf Ihrem Anwendungsdiagramm basieren. Sie können die Modellausgaben aber auch per Livestreaming empfangen. Sie können Gemini Enterprise Agent Platform Vision die Modellausgaben an eine Streamressource weiterleiten lassen und sie dann entweder mit dem Befehlszeilentool (vaictl) oder der Gemini Enterprise Agent Platform Vision API in Echtzeit nutzen.

Angenommen, Sie haben das folgende Anwendungsdiagramm mit den folgenden drei Knoten:

  1. Der Datenquellenknoten „Input Stream“ (input-stream)
  2. Der Verarbeitungsknoten „Occupancy Count“ (occupancy-count)
  3. Der Knoten für das Ziel der App-Ausgabe „Media Warehouse“ (warehouse)

Die App-Ausgabe wird derzeit vom Stream an den Prozess für die Belegung gezählt und dann an das Media Warehouse von Gemini Enterprise Agent Platform Vision gesendet, wo sie gespeichert wird.

API-App-Konfiguration :

Konfiguration der Beispielanwendung in der Cloud Console
{
  "applicationConfigs": {
    "nodes": [
        {
          "displayName": "Input Stream",
          "name": "input-stream",
          "processor": "builtin:stream-input"
        },
        {
          "displayName": "Occupancy Count",
          "name": "occupancy-count",
          "nodeConfig": {
            "occupancyCountConfig": {
              "enablePeopleCounting": true,
              "enableVehicleCounting": true
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            }
          ],
          "processor": "builtin:occupancy-count"
        },
        {
          "displayName": "Media Warehouse",
          "name": "warehouse",
          "nodeConfig": {
            "mediaWarehouseConfig": {
              "corpus": "projects/PROJECT_ID/locations/LOCATION_ID/corpora/CORPUS_ID",
              "ttl": "86400s"
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            },
            {
              "parentNode": "occupancy-count"
            }
          ],
          "processor": "builtin:media-warehouse"
        }
    ]
  }
}

Streamausgabe aktivieren (Google Cloud Console)

Sie können die Streamausgabe in der Google Cloud Console aktivieren, wenn Sie das Modell zum ersten Mal bereitstellen oder wenn Sie die Bereitstellung des Modells aufheben und es dann erneut bereitstellen.

Console

  1. Öffnen Sie den Tab Anwendungen des Gemini Enterprise Agent Platform Vision-Dashboards.

    Tab „Anwendungen“ aufrufen

  2. Wählen Sie in der Liste neben dem Namen der Anwendung Diagramm ansehen aus.

  3. Klicken Sie auf der Seite des Anwendungsdiagramm-Generators auf die Schaltfläche Bereitstellen.

  4. Wählen Sie im Menü Anwendung bereitstellen die Option Ausgabestreaming aktivieren aus.

    App-Menü in der Console bereitstellen

  5. Wählen Sie im Drop-down-Menü Modell(e) die Modelle aus, für die Sie die Streamingausgabe aktivieren möchten.

  6. Klicken Sie auf Bereitstellen.

Streamausgabe aktivieren (API)

App-Knoten aktualisieren

Sie können die Konfiguration einer App in der Befehlszeile aktualisieren, sodass ein Modellknoten die Ausgabe speziell an einen Stream sendet.

Nachdem Sie diesen Schritt ausgeführt haben, können Sie die App-Instanz aktualisieren, um die Streamressource anzugeben, die die Ausgabedaten des Analyseknotens empfängt.

REST

In diesem Beispiel wird die Methode projects.locations.applications.patch verwendet. Mit dieser Anfrage wird die API-App-Konfiguration aus der vorherigen Beispiel-App so aktualisiert, dass der occupancy-count Knoten Ausgabekommentare an einen Gemini Enterprise Agent Platform Vision-Stream sendet. Dieses Verhalten wird durch das output_all_output_channels_to_stream Feld aktiviert.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

HTTP-Methode und URL:

PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID

JSON-Text der Anfrage:

{
  "applicationConfigs": {
    "nodes": [
        {
          "displayName": "Input Stream",
          "name": "input-stream",
          "processor": "builtin:stream-input"
        },
        {
          "displayName": "Occupancy Count",
          "name": "occupancy-count",
          "nodeConfig": {
            "occupancyCountConfig": {
              "enablePeopleCounting": true,
              "enableVehicleCounting": true
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            }
          ],
          "processor": "builtin:occupancy-count",
          "output_all_output_channels_to_stream": true
        }
    ]
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json, und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID" | Select-Object -Expand Content
Wenn der Aktualisierungsvorgang abgeschlossen ist, gibt der Vorgang den Status 200 OK ohne Fehler zurück und der Dienst aktualisiert die Anwendungsressource entsprechend.

App-Instanz aktualisieren

Im vorherigen Beispiel wurde gezeigt, wie Sie die App aktualisieren, damit der Zielknoten die Ausgabe an einen Stream senden kann. Nachdem Sie diese Option aktiviert haben, können Sie optional die App-Instanz aktualisieren, um die Streamressource anzugeben, die die Ausgabedaten des Analyseknotens empfängt.

Wenn Sie mit diesem Befehl keinen Stream angeben, verwendet die App-Plattform weiterhin einen Standardstream, der beim Bereitstellen des App-Knotens erstellt wird.

Sie müssen eine Streamressource erstellen, an die der Knoten die Ausgabe sendet.

Bevor Sie die folgende Anfrage senden.

REST

In diesem Beispiel wird die projects.locations.applications.updateApplicationInstances Methode verwendet. Diese Anfrage verwendet die aktualisierte API-App-Konfiguration aus der vorherigen Beispiel-App. Mit dem vorherigen Aktualisierungsbefehl wurde der Knoten occupancy-count so festgelegt, dass er Ausgabekommentare an einen Gemini Enterprise Agent Platform Vision-Stream senden kann. Mit diesem Befehl wird die App-Instanz so aktualisiert, dass die Daten von diesem Producer-occupancy-count Knoten an eine vorhandene Streamressource gesendet werden.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT: Ihre Google Cloud Projekt-ID oder Projektnummer.
  • LOCATION_ID: Die Region, in der Sie Agent Platform Vision verwenden. Beispiel: us-central1, europe-west4. Verfügbare Regionen ansehen.
  • APPLICATION_ID: Die ID der Zielanwendung.
  • inputResources: Die Eingaberessource (n) für die aktuelle Anwendungsinstanz. Dies ist ein Array von Objekten, das die folgenden Felder enthält:
    • consumerNode: Der Name des Diagrammknotens, der die Eingaberessource empfängt.
    • inputResource: Der vollständige Name der Eingaberessource.
  • outputResources.outputResource: Die stream-Ressource, an die die App -Daten ausgegeben werden sollen.
  • outputResources.producerNode: Der Name des Producer-Knotens für die App-Ausgabe. In diesem Beispiel ist das der Analyseknoten occupancy-count.
  • INSTANCE_ID: Die ID der App-Instanz.

HTTP-Methode und URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances

JSON-Text der Anfrage:

{
  "applicationInstances": [
    {
      "instance": {
        "inputResources": [
          {
            "consumerNode": "input-stream",
            "inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/INPUT_STREAM_ID"
          }
        ],
        "outputResources":[
          {
            "outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/OUTPUT_STREAM_ID",
            "producerNode": "occupancy-count"
          }
        ]
      },
      "instanceId": INSTANCE_ID
    }
  ]
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json, und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances" | Select-Object -Expand Content
Wenn der Aktualisierungsvorgang abgeschlossen ist, gibt der Vorgang den Status 200 OK ohne Fehler zurück und der Dienst aktualisiert die Anwendungsinstanz entsprechend.