- HTTP-Anfrage
- Pfadparameter
- Anfragetext
- Antworttext
- Autorisierungsbereiche
- IAM-Berechtigungen
- AssistantConfirmationResponse
- StreamChatAiAssistantRequest.ClientCapability
- OperationCompletedEvent
- ArtifactChunk
- ArtifactChunk.State
- OptionQuestionsChunk
- OptionQuestionsChunk.Question
- OptionQuestionsChunk.Option
- AssistantConfirmationRequest
- AssistantConfirmationRequest.Target
- TurnResumeSnapshot
- TurnHandoffEvent
- TurnHandoffEvent.Reason
- TurnCompletedEvent
- TurnCompletedEvent.Reason
- TurnMetadata
- TurnMetadata.ContractStreamingPhase
Führt Arc, den KI-Assistenten, für die angegebene Assistentensitzung im Streaming-Modus aus.
HTTP-Anfrage
POST https://ces.googleapis.com/v1beta/{name=projects/*/locations/*/apps/*/assistantSessions/*}:streamChatAiAssistant
Die URL verwendet die Syntax der gRPC-Transcodierung.
Pfadparameter
| Parameter | |
|---|---|
name |
Erforderlich. Die Assistentensitzung, die zum Ausführen des Assistenten verwendet werden soll. Format: |
Anfragetext
Der Anfragetext enthält Daten mit folgender Struktur:
| JSON-Darstellung |
|---|
{ "message": string, "attachedGcsUris": [ string ], "contextToken": string, "confirmationResponse": { object ( |
| Felder | |
|---|---|
message |
Optional. Die Nachricht, die an den Assistant-Agenten gesendet werden soll. Kann leer sein, wenn |
attachedGcsUris[] |
Optional. Cloud Storage-URIs für Dateien, die vom Nutzer während dieser Runde hochgeladen wurden. Beispiel: „gs://cxas-transient-uploads/uuid/prd.pdf“ |
contextToken |
Optional. Undurchsichtiges Onboarding-Kontext-Token, das von |
confirmationResponse |
Optional. Die Antwort des Nutzers auf eine ausstehende |
clientCapabilities[] |
Optional. Antwortfunktionen, die dieser Client rendern kann. Der Server gibt nur Ereignisse aus, für die eine Funktion erforderlich ist (z. B. |
operationCompletedEvent |
Optional. Setzt eine Assistentensitzung fort, die pausiert wurde, während auf den Abschluss eines vom Client verwalteten Vorgangs mit langer Ausführungszeit gewartet wurde. |
resumeFromSequenceNumber |
Optional. Optionaler Cursor, um Ereignisse aus einer laufenden oder abgeschlossenen Runde fortzusetzen und wiederzugeben. |
attachOnly |
Optional. Optionales Flag, um die Nachricht an einen vorhandenen, laufenden Turn anzuhängen, ohne eine neue Nachricht zu senden. |
Antworttext
Antwortnachricht für SessionService.StreamChatAiAssistant.
Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:
| JSON-Darstellung |
|---|
{ "eventId": string, "eventTime": string, "uiEvent": { object ( |
| Felder | |
|---|---|
eventId |
Eindeutige Kennung für das Ereignis. |
eventTime |
Zeitstempel des Ereignisses. Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: |
uiEvent |
Optional. Nutzlast des UI-Ereignisses. |
turnMetadata |
Optional. Metadaten auf Turn-Ebene und Intent-Kategorisierung. |
sequenceNumber |
Optional. Monoton ansteigende Sequenznummer für diese Sitzungsrunde. |
turnInProgress |
Optional. Gibt an, ob die Runde noch aktiv im Hintergrund ausgeführt wird. |
| Die Ereignisnutzlast. Im Folgenden finden Sie eine Liste von Feldern, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt: | |
textChunk |
Text-Token (für das wortweise Streamen von Gemini-Antworten). |
status |
Einfaches Statusupdate. |
thoughtChunk |
Textblock mit Gedanken (Schlussfolgerung des Agenten vor dem Generieren der Antwort). |
toolCall |
Ereignis zur Ausführung des Toolaufrufs. |
toolResponse |
Ereignis für die Antwort auf einen Toolaufruf. |
artifactChunk |
Artefakt-Ereignis für generiertes Dokument (Live-Vorschau-Deltas + endgültiger Cloud Storage-Verweis). |
optionQuestionsChunk |
Strukturierte Klärungsoptionen, die aus der Modellrunde geparst wurden. In der Console werden diese als auswählbare Optionsliste und nicht als Rohtext gerendert. |
confirmationRequest |
Eine blockierende Bestätigung, bei der der Agent pausiert hat. Der KI-Agent setzt die Unterhaltung fort, wenn die Antwort in der |
sessionCheckpoint |
Ereignis für Sitzungsprüfpunkt/Zusammenfassung, das die Nutzerabsicht und eine fortlaufende Zusammenfassung enthält. |
resumeSnapshot |
Eine komprimierte Wiederholung eines laufenden Zuges, die als erstes Ereignis jedes Anhängens oder Fortsetzens vor jedem Live-Ereignis gesendet wird. Der Client ersetzt alle lokal gerenderten Zustände für diese Runde durch den Inhalt des Snapshots. |
handoff |
Weist den Client an, die Verbindung im Hintergrund mit „resumeFromSequenceNumber“ wiederherzustellen: Die Aufgabe, die diesen Stream bereitstellt, wird beendet und die Runde wird an anderer Stelle fortgesetzt. Kein Fehler. Der Stream wird nach diesem Ereignis normal abgeschlossen. |
turnCompleted |
Der Zug ist beendet. Wird als letztes Ereignis jeder Runde im ursprünglichen Stream und in jedem angehängten oder fortgesetzten Stream gesendet, damit Clients die Runde mit einem expliziten Signal beenden können, anstatt sie aus dem Schließen des Streams abzuleiten. |
| Ende der sich gegenseitig ausschließenden Felder. | |
Autorisierungsbereiche
Erfordert einen der folgenden OAuth-Bereiche:
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/ces
Weitere Informationen finden Sie unter Authentication Overview.
IAM-Berechtigungen
Erfordert die folgende IAM-Berechtigung für die Ressource name:
ces.assistantSessions.get
Weitere Informationen finden Sie in der IAM-Dokumentation.
AssistantConfirmationResponse
Die Antwort des Nutzers auf eine AssistantConfirmationRequest, die beim nächsten SessionService.StreamChatAiAssistant-Aufruf gesendet wird, um den pausierten Agenten fortzusetzen.
| JSON-Darstellung |
|---|
{ "confirmationId": string, // The following is a list of mutually exclusive fields. At most one of the // fields will be set in a response: "confirmed": boolean, "answerText": string // End of mutually exclusive fields. } |
| Felder | |
|---|---|
confirmationId |
Die |
| Die Antwort des Nutzers. Im Folgenden finden Sie eine Liste von Feldern, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt: | |
confirmed |
Binäre Antwort: „true“ genehmigt die pausierte Aktion, „false“ lehnt sie ab. |
answerText |
Der submitText der ausgewählten Option oder der vom Nutzer eingegebene Text. Die pausierte Aktion wird abgebrochen und der Text wird an den KI-Agenten übergeben, damit er darauf reagieren kann. |
| Ende der sich gegenseitig ausschließenden Felder. | |
StreamChatAiAssistantRequest.ClientCapability
Antwortfunktionen, die ein Client deklarieren kann.
| Enums | |
|---|---|
CLIENT_CAPABILITY_UNSPECIFIED |
Nicht angegebene Funktion; ignoriert. |
CONFIRMATION_CARDS |
Der Client rendert AssistantConfirmationRequest-Karten und beantwortet sie über confirmationResponse. |
CLIENT_MANAGED_LRO |
Der Client verwaltet Vorgänge mit langer Ausführungszeit out-of-band, indem er den Vorgang abfragt und operationCompletedEvent sendet, um die Runde fortzusetzen. Wenn nicht deklariert, verwaltet der Server die LRO-Abfrage und schließt den Zug inline ab. |
PROJECT_SCOPE |
Der Client rendert Ereignisse auf Projektebene: typedPayload-Karten, targetApp bei Toolaufrufen und ‑antworten, targets bei Bestätigungsanfragen und touchedApps bei Abschluss des Turns. |
OperationCompletedEvent
Ereignis, das vom Client oder Hintergrund-Worker gesendet wird, um eine Assistant-Sitzung fortzusetzen, nachdem ein asynchroner Vorgang mit langer Ausführungszeit (Long-Running Operation, LRO) abgeschlossen wurde.
| JSON-Darstellung |
|---|
{
"operationName": string,
"targetResourceName": string,
"operationType": string,
"status": string,
"deduplicationToken": string,
"error": {
object ( |
| Felder | |
|---|---|
operationName |
Der Name der Vorgangsressource (z.B. |
targetResourceName |
Die primäre Ressource, die vom Vorgang als Ziel verwendet oder erzeugt wird (z.B. ID des Bewertungslaufs, App-ID, Dataset-ID). |
operationType |
Der Vorgangstyp oder Toolname (z.B. „run_evaluation“, „copy_app“, „export_app“). |
status |
Status der Vorgangsausführung (z.B. „SUCCEEDED“, „FAILED“, „CANCELLED“). |
deduplicationToken |
Optionales Deduplizierungstoken (z.B. UUID), um zu verhindern, dass die Ausführung von Turns über gleichzeitige Browsertabs dupliziert wird. |
error |
Optionaler kanonischer Fehlerstatus, wenn der Vorgang fehlgeschlagen ist. |
metadata |
Optionale strukturierte Ergebnismetadaten (z.B. pass_rate, total_examples, export_uri). |
ArtifactChunk
Ein gestreamtes Fragment eines Dokumentartefakts (z.B. ein Markdown-TDD), das vom Assistenten generiert wird. Inhalts-Deltas werden gestreamt, während das Dokument geschrieben wird, damit Clients eine Live-Vorschau rendern können. Der FINALIZED-Chunk enthält den Cloud Storage-URI, sobald die Datei gespeichert wurde.
| JSON-Darstellung |
|---|
{
"artifactId": string,
"displayName": string,
"mimeType": string,
"contentDelta": string,
"gcsUri": string,
"state": enum ( |
| Felder | |
|---|---|
artifactId |
Kennung des Artefakts, die für alle Blöcke eines Artefakts im Stream gleich ist. |
displayName |
Der Dateiname, der dem Nutzer angezeigt wird, z.B. „hotel_booking_tdd.md“. Wird auf STARTED gesetzt (und bei FINALIZED wiederholt). |
mimeType |
Der IANA-Medientyp des Artefaktinhalts, z.B. „text/markdown“. |
contentDelta |
Inkrementelle Artefaktinhalte. Wird für DELTA-Blöcke festgelegt. |
gcsUri |
Das Cloud Storage-Objekt, in dem das Artefakt gespeichert wurde. Wird für FINALIZED-Blöcke festgelegt. |
state |
Lebenszyklusposition dieses Blocks. |
targetApp |
Nur Ausgabe. Die App, für die dieses Artefakt erstellt wurde, sofern es für eine erstellt wurde. Format: |
ArtifactChunk.State
Lebenszyklusposition dieses Blocks im Stream des Artefakts.
| Enums | |
|---|---|
STATE_UNSPECIFIED |
Nicht verwendeter Standardwert. |
STARTED |
Der Assistent hat mit der Erstellung des Artefakts begonnen. |
DELTA |
Ein Inhaltsinkrement; contentDelta ist festgelegt. |
FINALIZED |
Das Artefakt wurde beibehalten; gcsUri ist festgelegt. |
FAILED |
Fehler bei der Generierung oder Persistenz. Das Artefakt wurde nicht gespeichert. |
CLOSED |
Das Streaming des Dokuments ist abgeschlossen: Der Inhalt wurde vollständig über contentDelta-Blöcke bereitgestellt. Die Persistenz kann weiterhin erfolgen. Ein FINALIZED-Block mit einer gcsUri wird gesendet, wenn das Artefakt gespeichert wird. |
OptionQuestionsChunk
Strukturierte Klärungsoptionen, die der Assistant dem Nutzer zur Auswahl stellt. Diese werden serverseitig aus der Antwort des Modells umgewandelt (der Optionsblock wird aus dem gestreamten und gespeicherten Text entfernt). In der Console wird eine über die Tastatur navigierbare Optionsliste angezeigt, die über dem Composer angedockt ist.
| JSON-Darstellung |
|---|
{
"questions": [
{
object ( |
| Felder | |
|---|---|
questions[] |
Die in dieser Runde gestellten Fragen. Wenn mehr als ein Eintrag vorhanden ist, wird in der Konsole „1 von N“ angezeigt. |
OptionQuestionsChunk.Question
Eine Frage mit den zugehörigen Optionen.
| JSON-Darstellung |
|---|
{
"question": string,
"options": [
{
object ( |
| Felder | |
|---|---|
question |
Der Text der Frageüberschrift. |
options[] |
Die auswählbaren Optionen in der Reihenfolge der Präsentation. |
OptionQuestionsChunk.Option
Eine einzelne auswählbare Option.
| JSON-Darstellung |
|---|
{ "title": string, "details": string, "submitText": string } |
| Felder | |
|---|---|
title |
Kurzer Nur-Text-Titel für die Option (kein Markdown, keine Nummerierung). |
details |
Optionale Details zum Trade-off, die als sekundärer Text angezeigt werden. |
submitText |
Optionaler Nachrichtentext, der gesendet wird, wenn die Option ausgewählt wird. Der Standardwert ist |
AssistantConfirmationRequest
Eine blockierende Frage oder Bestätigung, die der Assistent beantwortet haben muss, bevor eine Agentenaktion fortgesetzt werden kann. Der anfragende Agent wird pausiert und erst fortgesetzt, wenn die Antwort in einem späteren StreamChatAiAssistantRequest.confirmation_response eintrifft.
| JSON-Darstellung |
|---|
{ "confirmationId": string, "context": string, "positiveLabel": string, "negativeLabel": string, "questions": [ { object ( |
| Felder | |
|---|---|
confirmationId |
ID, die diese Anfrage mit der zugehörigen Antwort korreliert. Für Clients nicht sichtbar; muss in der Antwortanfrage wortgetreu wiedergegeben werden. |
context |
Kontext, der beschreibt, was bestätigt wird (z.B. die Aktion, die der Agent ausführen möchte, oder die Frage, die er beantwortet haben muss). Wird als Nur-Text gerendert, nicht als Markdown. |
positiveLabel |
Label für die genehmigende Aktion einer binären Bestätigung (z.B. „Veröffentlichen“). Nicht festgelegt, wenn |
negativeLabel |
Label für die ablehnende Aktion einer binären Bestätigung (z.B. „Noch nicht“). Nicht festgelegt, wenn |
questions[] |
Bestätigung in Form einer Mehrfachauswahl. Wenn die Karte ausgefüllt ist, wird eine Liste mit auswählbaren Optionen gerendert und der „submitText“ der ausgewählten Option (oder der vom Nutzer eingegebene Text) wird als |
tool |
Name des Toolaufrufs, bei dem der KI-Agent pausiert hat (z.B. „update_app“), für die Kartenüberschrift. Nicht festgelegt für reine Fragen. |
agentName |
Anzeigename des KI-Agenten, der die Bestätigung ausgelöst hat (z.B. |
expireTime |
Zeit, nach der diese Bestätigung nicht mehr beantwortet werden kann. Eine abgelaufene Karte wird als inaktiv dargestellt und der Server lehnt die Bestätigung im nächsten Zug ab, damit der pausierte Agent nicht unbegrenzt wartet. Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: |
targets[] |
Alles, was durch die bestätigte Aktion geändert wird, damit die Console „2 Apps aktualisieren“ und ein Badge pro App rendern kann. Leer für alte Karten mit einem Ziel. |
AssistantConfirmationRequest.Target
Eine Ressource, die durch die bestätigte Aktion geändert wird.
| JSON-Darstellung |
|---|
{ "resource": string, "displayName": string, "action": string, "targetApp": string } |
| Felder | |
|---|---|
resource |
Die Ressource, die sich ändert, als vollständiger Ressourcenname. |
displayName |
Anzeigename der Ressource oder App für die Karte. |
action |
Die Aktion, z.B. |
targetApp |
Die Anwendung, zu der die Ressource gehört, oder leer für eine standortbezogene Aktion wie das Erstellen einer Anwendung. Format: |
TurnResumeSnapshot
Eine komprimierte Wiederholung eines laufenden Zuges: alles, was erforderlich ist, um die bisherige sichtbare Ausgabe des Zuges zu rendern, sowie die Position, von der aus die Live-Veranstaltungen fortgesetzt werden.
| JSON-Darstellung |
|---|
{
"turnId": string,
"resolvedSequenceNumber": string,
"events": [
{
object ( |
| Felder | |
|---|---|
turnId |
Gibt den Schritt an, an den die Information angehängt wird. |
resolvedSequenceNumber |
Die Position, die dieser Snapshot darstellt. Live-Veranstaltungen folgen mit einer sequenceNumber, die strikt größer als diese ist. Wenn der Wert niedriger ist als die vom Client angeforderte resumeFromSequenceNumber, hinkt der geleerte Fortschritt dem hinterher, was der Client bereits gerendert hat: Der Client muss seinen gerenderten Inhalt dieser Runde über diese Position hinaus verwerfen, bevor er den Snapshot anwendet. |
events[] |
Komprimierte Ereignisse, die die sichtbare Ausgabe des Turns in der Renderreihenfolge rekonstruieren, wobei dieselben Ereignisformen wie beim Livestreaming verwendet werden. |
orphanDeadlineTime |
Wann die TURN-Verbindung beendet wird, wenn kein Client mehr verbunden ist. Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: |
TurnHandoffEvent
Wird ausgegeben, bevor diese Aufgabe die Bereitstellung des Streams mitten in der Runde beendet (z.B. bei einem Serverneustart). Der Status der Runde wird beibehalten. Bei einer erneuten Verbindung mit „resumeFromSequenceNumber“ wird die Runde in einer anderen Aufgabe fortgesetzt.
| JSON-Darstellung |
|---|
{
"turnId": string,
"reason": enum ( |
| Felder | |
|---|---|
turnId |
Gibt den Zug an, der fortgesetzt werden soll. |
reason |
Warum der Stream übergeben wird. |
TurnHandoffEvent.Reason
Warum der Stream übergeben wird.
| Enums | |
|---|---|
REASON_UNSPECIFIED |
Nicht angegeben. |
SERVER_RESTART |
Die Bereitstellungsaufgabe wird heruntergefahren (Release-Push oder Neuplanung). |
TurnCompletedEvent
Terminalereignis einer Runde (siehe StreamChatAiAssistantResponse.turn_completed).
| JSON-Darstellung |
|---|
{
"turnId": string,
"reason": enum ( |
| Felder | |
|---|---|
turnId |
Die Kennung des beendeten Schritts. Sie stimmt mit „TurnResumeSnapshot.turn_id“ und „ActiveTurnInfo.turn_id“ überein. |
reason |
Warum der Zug beendet wurde. |
finalSequenceNumber |
Sequenznummer des letzten Ereignisses, das durch den Zug erzeugt wurde. Ein Client, dessen Cursor sich weiter unten befindet, hat Inhalte verpasst und sollte die Sitzung neu laden, um sie zu sehen. |
touchedApps[] |
Apps, die in dieser Runde ausgewählt oder geändert wurden, damit die Console genau die Stores dieser Apps aktualisieren kann. Nur projektbezogene Sitzungen. Format: |
TurnCompletedEvent.Reason
Warum die Runde beendet wurde, damit ein Client, der sich spät verbunden hat, das Ergebnis formulieren kann, anstatt es aus einem leeren Stream zu erraten.
| Enums | |
|---|---|
REASON_UNSPECIFIED |
Nicht angegeben. |
COMPLETED |
Die Runde wurde abgeschlossen. Die Sitzung enthält die bestätigte Ausgabe. |
ABANDONED |
Der Turn wurde nicht mehr von einer Aufgabe gesteuert. Er wurde auf einen festgeschriebenen Teil festgelegt und kann nicht fortgesetzt werden. |
RESUME_UNAVAILABLE |
Dieser Server unterstützt das Anhängen oder Fortsetzen der Sitzung nicht, daher wurde nichts verfolgt. Der Client sollte die Sitzung stattdessen neu laden. |
TurnMetadata
Metadaten auf Turn-Ebene und Intent-Kategorisierung.
| JSON-Darstellung |
|---|
{
"contractRelated": boolean,
"contractFinalized": boolean,
"contractStreamingPhase": enum ( |
| Felder | |
|---|---|
contractRelated |
Gibt an, ob diese Assistant-Runde vertragsbezogen war (z.B. Vertragsentwurf, -abstimmung, -extraktion oder -überarbeitung). |
contractFinalized |
Wird für das letzte Artefakt-Ereignis einer Runde festgelegt, deren Vertragsentwurf veröffentlicht wurde (eine Überarbeitung wurde aktiviert). Terminal für den Klärungsablauf dieses Entwurfs: contractProgress ist maßgeblich und vollständig. |
contractStreamingPhase |
Wird nur für Schätzungen des laufenden Fortschritts festgelegt, die während des Streamings eines Vertragsartefakt-Fences ausgegeben werden, und für das Ereignis „revision-turn-start“. Nicht festgelegt für autoritative Nutzlasten. |
contractDraftComplete |
Wird für das Terminalereignis eines Vertragsentwurfs festgelegt, dessen Platzhalter alle aufgelöst sind (contractProgress ist 100 %), unabhängig davon, ob der Entwurf veröffentlicht wurde. Clients schließen die Anzeige des Vertragsfortschritts ab und schließen sie. Die Veröffentlichung wird separat über „contractFinalized“ gemeldet. |
TurnMetadata.ContractStreamingPhase
Streamingphase der Nutzlast für den Vertragsfortschritt.
| Enums | |
|---|---|
CONTRACT_STREAMING_PHASE_UNSPECIFIED |
Die Nutzlast ist maßgeblich (berechnet aus einem vollständigen Vertragsdokument, einem persistenten Snapshot oder dem Status vor dem Entwurf). Clients müssen alle zuvor empfangenen Fortschritte damit ersetzen. |
DRAFTING |
Ein erster Vertragsentwurf wird gestreamt. „contractProgress“ ist eine Schätzung während der Ausführung: nicht abnehmend innerhalb eines Artefakt-Fence, begrenzt unterhalb des autoritativen Bereichs, wobei „pillarBreakdowns“ „totalItemCount == 0“ enthält, um geschätzte Säulenstatus zu markieren. |
REVISING |
Eine Überarbeitung eines bestehenden Vertrags wird gestreamt (z. B. nach dem Einreichen einer Annotation). Gleiche Schätzungssemantik wie DRAFTING. |