Dopo aver creato lo stream di importazione dati dati e aggiunto i nodi di elaborazione all'app, devi scegliere dove inviare i dati elaborati. Un'opzione è ricevere direttamente l'output dell'app di live streaming in modo da poter agire su queste analisi in tempo reale.
In generale, configuri l'app in modo che memorizzi l'output del modello in un
Google Cloud data warehouse come Media Warehouse di Vision di Gemini Enterprise Agent Platform o BigQuery.
Una volta memorizzati i dati in uno di questi warehouse, possono essere utilizzati per job di analisi offline basati sul grafico dell'applicazione. Tuttavia, puoi anche ricevere gli output del modello in live streaming. Puoi fare in modo che Vision di Gemini Enterprise Agent Platform inoltri gli output del modello a una risorsa stream e puoi utilizzare lo strumento da riga di comando (vaictl) o l'API Vision di Gemini Enterprise Agent Platform per utilizzarli in tempo reale.
Supponiamo di avere il seguente grafico dell'applicazione con i seguenti tre nodi:
- Il nodo dell'origine dati "Input Stream" (
input-stream) - Il nodo di elaborazione "Occupancy Count" (
occupancy-count) - Il nodo di destinazione dell'output dell'app "Media Warehouse" (
warehouse)
L'output dell'app viene attualmente inviato dallo stream al processo di conteggio dell'occupazione e poi a Media Warehouse di Vision di Gemini Enterprise Agent Platform, dove viene memorizzato.
Configurazione dell'app API:
|
{
"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"
}
]
}
} |
Abilitare l'output dello stream (Google Cloud console)
Puoi abilitare l'output dello stream nella Google Cloud console quando esegui il deployment del modello per la prima volta o quando annulli il deployment e poi lo esegui di nuovo.
Console
Apri la scheda Applicazioni della dashboard di Vision di Gemini Enterprise Agent Platform.
Accanto al nome dell'applicazione nell'elenco, seleziona Visualizza app.
Nella pagina del builder del grafico dell'applicazione, fai clic sul pulsante Esegui il deployment.
Nel menu delle opzioni Esegui il deployment dell'applicazione che si apre, seleziona Abilita flusso di dati di output.

Dal menu a discesa Modello/i corrispondente, seleziona i modelli per cui vuoi abilitare l'output dello streaming.
Fai clic su Esegui il deployment.
Abilitare l'output dello stream (API)
Aggiornare il nodo dell'app
Puoi aggiornare la configurazione di un'app dalla riga di comando in modo che un nodo del modello invii l'output a uno stream specifico.
REST
Questo esempio utilizza il metodo projects.locations.applications.patch. Questa richiesta aggiorna la configurazione dell'app API dall'app di esempio precedente
in modo che il nodo occupancy-count invii le annotazioni di output
a uno stream di Vision di Gemini Enterprise Agent Platform. Questo comportamento è abilitato dal
output_all_output_channels_to_stream campo.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT: il tuo Google Cloud ID progetto o numero di progetto.
- LOCATION_ID: la regione in cui utilizzi
Vision di Agent Platform. Ad esempio:
us-central1,europe-west4. Vedi regioni disponibili. - APPLICATION_ID: l'ID dell'applicazione di destinazione.
Metodo HTTP e URL:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
Corpo JSON della richiesta:
{
"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
}
]
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
e quindi esegui il comando seguente:
$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
200 OK senza errori e il servizio aggiorna di conseguenza la risorsa dell'applicazione.
Aggiornare l'istanza dell'app
L'esempio precedente mostra come aggiornare l'app, il che consente al nodo di destinazione di inviare l'output a uno stream. Dopo aver abilitato questa opzione, puoi facoltativamente aggiornare l'istanza dell'app per specificare la risorsa stream che riceve i dati di output del nodo di analisi.
Se non specifichi uno stream con questo comando, la piattaforma dell'app continua a utilizzare uno stream predefinito creato quando viene eseguito il deployment del nodo dell'app.
Prima di inviare la richiesta seguente, devi creare una risorsa stream a cui il nodo invia l'output
devi creare una risorsa stream a cui il nodo invia l'output.
REST
Questo esempio utilizza il
projects.locations.applications.updateApplicationInstances
metodo. Questa richiesta utilizza la configurazione dell'app API aggiornata dall'app di esempio precedente. Il comando di aggiornamento precedente ha impostato il nodo occupancy-count in modo che possa inviare le annotazioni di output a uno stream di Vision di Gemini Enterprise Agent Platform. Questo comando
aggiorna l'istanza dell'app in modo che invii i dati dal nodo del produttore occupancy-count
a una risorsa stream esistente.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT: il tuo Google Cloud ID progetto o numero di progetto.
- LOCATION_ID: la regione in cui utilizzi
Vision di Agent Platform. Ad esempio:
us-central1,europe-west4. Vedi regioni disponibili. - APPLICATION_ID: l'ID dell'applicazione di destinazione.
inputResources: la risorsa o le risorse di input per l'istanza dell'applicazione corrente. Si tratta di un array di oggetti che contengono i seguenti campi:consumerNode: il nome del nodo del grafico che riceve la risorsa di input.inputResource: il nome completo della risorsa di input.
outputResources.outputResource: la risorsastreama cui inviare i dati dell'app.outputResources.producerNode: il nome del nodo del produttore dell'output dell'app. In questo esempio si tratta del nodo di analisi,occupancy-count.- INSTANCE_ID: l'ID dell'istanza dell'app.
Metodo HTTP e URL:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
Corpo JSON della richiesta:
{
"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
}
]
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
e quindi esegui il comando seguente:
$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
200 OK senza errori e il servizio aggiorna di conseguenza l'istanza dell'applicazione.