- Requête HTTP
- Paramètres de chemin d'accès
- Corps de la requête
- Corps de la réponse
- Niveaux d'accès des autorisations
- Autorisations IAM
- 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
Exécute Arc, l'assistant IA, pour la session d'assistant spécifiée en mode streaming.
Requête HTTP
POST https://ces.googleapis.com/v1beta/{name=projects/*/locations/*/apps/*/assistantSessions/*}:streamChatAiAssistant
L'URL utilise la syntaxe de transcodage gRPC.
Paramètres de chemin d'accès
| Paramètres | |
|---|---|
name |
Obligatoire. Session de l'assistant à utiliser pour exécuter l'assistant. Format : |
Corps de la requête
Le corps de la requête contient des données présentant la structure suivante :
| Représentation JSON |
|---|
{ "message": string, "attachedGcsUris": [ string ], "contextToken": string, "confirmationResponse": { object ( |
| Champs | |
|---|---|
message |
Facultatif. Message à envoyer à l'agent de l'assistant. Peut être vide lorsque |
attachedGcsUris[] |
Facultatif. URI Cloud Storage des fichiers importés par l'utilisateur au cours de ce tour. Exemple : "gs://cxas-transient-uploads/uuid/prd.pdf" |
contextToken |
Facultatif. Jeton de contexte d'intégration opaque renvoyé par |
confirmationResponse |
Facultatif. Réponse de l'utilisateur à un |
clientCapabilities[] |
Facultatif. Fonctionnalités de réponse que ce client peut afficher. Le serveur n'émet que les événements qui nécessitent une fonctionnalité (par exemple, |
operationCompletedEvent |
Facultatif. Reprend une session d'assistant mise en pause en attendant la fin d'une opération de longue durée gérée par le client. |
resumeFromSequenceNumber |
Facultatif. Curseur facultatif pour reprendre et rejouer les événements d'un tour en cours ou terminé. |
attachOnly |
Facultatif. Option facultative permettant d'associer un tour en cours sans envoyer de nouveau message. |
Corps de la réponse
Message de réponse pour SessionService.StreamChatAiAssistant.
Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :
| Représentation JSON |
|---|
{ "eventId": string, "eventTime": string, "uiEvent": { object ( |
| Champs | |
|---|---|
eventId |
Identifiant unique de l'événement. |
eventTime |
Code temporel de l'événement. Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : |
uiEvent |
Facultatif. Charge utile de l'événement d'UI. |
turnMetadata |
Facultatif. Métadonnées au niveau du tour de parole et catégorisation des intents. |
sequenceNumber |
Facultatif. Numéro de séquence à croissance monotone pour ce tour de session. |
turnInProgress |
Facultatif. Indique si le tour est toujours en cours d'exécution en arrière-plan. |
| Charge utile de l'événement. Voici une liste de champs mutuellement exclusifs. Au maximum, un des champs sera défini dans une réponse : | |
textChunk |
Jeton de texte (pour diffuser les réponses de Gemini mot par mot). |
status |
Mise à jour de l'état simple. |
thoughtChunk |
Fragment de texte de réflexion (raisonnement de l'agent avant de générer une réponse). |
toolCall |
Événement d'exécution d'appel d'outil. |
toolResponse |
Événement de réponse à un appel d'outil. |
artifactChunk |
Événement d'artefact de document généré (deltas d'aperçu en direct + pointeur Cloud Storage final). |
optionQuestionsChunk |
Options de clarification structurées analysées à partir du tour de modèle. La console les affiche sous la forme d'une liste d'options sélectionnables au lieu de texte brut. |
confirmationRequest |
Confirmation bloquante sur laquelle l'agent s'est arrêté. L'agent reprend lorsque la réponse arrive sur le |
sessionCheckpoint |
Événement de récapitulatif de point de contrôle/compactage de session contenant l'intention utilisateur et un résumé glissant. |
resumeSnapshot |
Replay compacté d'un tour en cours, envoyé en tant que premier événement de chaque association ou reprise avant tout événement en direct. Le client remplace tout état affiché localement pour ce tour par le contenu de l'instantané. |
handoff |
Indique au client de se reconnecter de manière silencieuse avec resumeFromSequenceNumber : la tâche diffusant ce flux va disparaître et le tour se poursuivra ailleurs. Il ne s'agit pas d'une erreur. Le flux se termine normalement après cet événement. |
turnCompleted |
Le tour est terminé. Envoyé en tant que dernier événement de chaque tour, sur le flux d'origine et sur chaque flux associé ou repris, afin que les clients puissent mettre fin au tour sur un signal explicite au lieu de le déduire de la fermeture du flux. |
| Fin des champs mutuellement exclusifs. | |
Niveaux d'accès des autorisations
Nécessite l'un des niveaux d'accès OAuth suivants :
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/ces
Pour plus d'informations, consultez la page Authentication Overview.
Autorisations IAM
Nécessite l'autorisation IAM suivante sur la ressource name :
ces.assistantSessions.get
Pour en savoir plus, consultez la documentation IAM.
AssistantConfirmationResponse
Réponse de l'utilisateur à un AssistantConfirmationRequest, envoyée lors de l'appel SessionService.StreamChatAiAssistant suivant pour réactiver l'agent mis en pause.
| Représentation JSON |
|---|
{ "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. } |
| Champs | |
|---|---|
confirmationId |
La |
| La réponse de l'utilisateur. Voici une liste de champs mutuellement exclusifs. Au maximum, un des champs sera défini dans une réponse : | |
confirmed |
Réponse binaire : "true" approuve l'action mise en veille, "false" la refuse. |
answerText |
"submitText" de l'option choisie ou texte libre de l'utilisateur. L'action suspendue est annulée et le texte est transmis à l'agent pour qu'il agisse. |
| Fin des champs mutuellement exclusifs. | |
StreamChatAiAssistantRequest.ClientCapability
Fonctionnalités de réponse qu'un client peut déclarer.
| Enums | |
|---|---|
CLIENT_CAPABILITY_UNSPECIFIED |
Capacité non spécifiée ; ignorée. |
CONFIRMATION_CARDS |
Le client affiche les fiches AssistantConfirmationRequest et y répond via confirmationResponse. |
CLIENT_MANAGED_LRO |
Le client gère les opérations de longue durée hors bande en interrogeant l'opération et en envoyant operationCompletedEvent pour reprendre le tour. Si elle n'est pas déclarée, le serveur gère l'interrogation LRO et termine le tour de manière intégrée. |
PROJECT_SCOPE |
Le client affiche les événements au niveau du projet : cartes typedPayload, targetApp sur les appels d'outils et les réponses, targets sur les demandes de confirmation et touchedApps à la fin du tour. |
OperationCompletedEvent
Événement envoyé par le client ou le nœud de calcul en arrière-plan pour reprendre une session de l'assistant une fois qu'une opération de longue durée (LRO) asynchrone est terminée.
| Représentation JSON |
|---|
{
"operationName": string,
"targetResourceName": string,
"operationType": string,
"status": string,
"deduplicationToken": string,
"error": {
object ( |
| Champs | |
|---|---|
operationName |
Nom de la ressource d'opération (par exemple, |
targetResourceName |
Ressource principale ciblée ou produite par l'opération (par exemple, ID d'exécution de l'évaluation, ID d'application, ID d'ensemble de données). |
operationType |
Type d'opération ou nom de l'outil (par exemple, "run_evaluation", "copy_app", "export_app"). |
status |
État de l'exécution de l'opération (par exemple, "SUCCEEDED", "FAILED", "CANCELLED"). |
deduplicationToken |
Jeton de déduplication facultatif (par exemple, UUID) pour empêcher l'exécution de tours en double à partir d'onglets de navigateur simultanés. |
error |
État d'erreur canonique facultatif si l'opération a échoué. |
metadata |
Métadonnées de résultat structurées facultatives (par exemple, pass_rate, total_examples, export_uri). |
ArtifactChunk
Fragment diffusé d'un artefact de document (par exemple, un TDD Markdown) généré par l'assistant. Les deltas de contenu sont diffusés pendant l'écriture du document afin que les clients puissent afficher un aperçu en direct. Le fragment FINALIZED contient l'URI Cloud Storage une fois que le fichier a été conservé.
| Représentation JSON |
|---|
{
"artifactId": string,
"displayName": string,
"mimeType": string,
"contentDelta": string,
"gcsUri": string,
"state": enum ( |
| Champs | |
|---|---|
artifactId |
Identifiant de l'artefact, stable pour tous les fragments d'un artefact dans le flux. |
displayName |
Nom du fichier présenté à l'utilisateur, par exemple "hotel_booking_tdd.md". Défini sur STARTED (et répété sur FINALIZED). |
mimeType |
Type de média IANA du contenu de l'artefact, par exemple "text/markdown". |
contentDelta |
Contenu d'artefact incrémentiel. Défini sur les fragments DELTA. |
gcsUri |
Objet Cloud Storage dans lequel l'artefact a été conservé. Définie sur les fragments FINALISÉS. |
state |
Position de ce fragment dans le cycle de vie. |
targetApp |
Uniquement en sortie. L'application pour laquelle cet artefact a été produit, le cas échéant. Format : |
ArtifactChunk.State
Position du cycle de vie de ce fragment dans le flux de l'artefact.
| Enums | |
|---|---|
STATE_UNSPECIFIED |
Valeur par défaut non utilisée. |
STARTED |
L'assistant a commencé à générer l'artefact. |
DELTA |
Incrément de contenu ; contentDelta est défini. |
FINALIZED |
L'artefact a été conservé. gcsUri est défini. |
FAILED |
Échec de la génération ou de la persistance ; l'artefact n'a pas été enregistré. |
CLOSED |
Le streaming du document est terminé : son contenu a été entièrement diffusé via des fragments contentDelta. La persistance peut toujours suivre : un fragment FINALIZED avec un gcsUri est envoyé si et quand l'artefact est enregistré. |
OptionQuestionsChunk
Options de clarification structurées que l'assistant demande à l'utilisateur de choisir, transduites côté serveur à partir du tour du modèle (le bloc d'options est supprimé du texte diffusé et conservé). La console affiche une liste d'options ancrée au-dessus de l'éditeur, dans laquelle vous pouvez naviguer à l'aide du clavier.
| Représentation JSON |
|---|
{
"questions": [
{
object ( |
| Champs | |
|---|---|
questions[] |
Questions posées lors de ce tour. Si plusieurs entrées sont disponibles, le pager "1 sur N " de la console s'affiche. |
OptionQuestionsChunk.Question
Une question avec ses options.
| Représentation JSON |
|---|
{
"question": string,
"options": [
{
object ( |
| Champs | |
|---|---|
question |
Texte de l'en-tête de la question. |
options[] |
Options sélectionnables, dans l'ordre de présentation. |
OptionQuestionsChunk.Option
Une seule option sélectionnable.
| Représentation JSON |
|---|
{ "title": string, "details": string, "submitText": string } |
| Champs | |
|---|---|
title |
Titre court de l'option en texte brut (pas de Markdown, pas de numérotation). |
details |
Détails facultatifs sur les compromis affichés sous forme de texte secondaire. |
submitText |
Texte du message facultatif à envoyer lorsque l'option est choisie. La valeur par défaut est |
AssistantConfirmationRequest
Question ou confirmation bloquante à laquelle l'assistant doit répondre avant qu'une action de l'agent puisse se poursuivre. L'agent demandeur est mis en pause et ne reprend que lorsque la réponse arrive sur un StreamChatAiAssistantRequest.confirmation_response ultérieur.
| Représentation JSON |
|---|
{ "confirmationId": string, "context": string, "positiveLabel": string, "negativeLabel": string, "questions": [ { object ( |
| Champs | |
|---|---|
confirmationId |
Identifiant mettant en corrélation cette requête avec sa réponse. Opaque pour les clients ; doit être répété textuellement dans la requête de réponse. |
context |
Contexte décrivant ce qui est confirmé (par exemple, l'action que l'agent souhaite effectuer ou la question à laquelle il doit répondre). Affiché en texte brut, et non en Markdown. |
positiveLabel |
Libellé de l'action d'approbation d'une confirmation binaire (par exemple, "Publier"). Non défini lorsque |
negativeLabel |
Libellé de l'action de refus d'une confirmation binaire (par exemple, "Pas encore"). Non défini lorsque |
questions[] |
Formulaire de confirmation à choix multiples. Lorsqu'elle est renseignée, la fiche affiche une liste d'options sélectionnables, et le submitText de l'option choisie (ou le texte libre de l'utilisateur) est renvoyé sous la forme |
tool |
Nom de l'appel d'outil sur lequel l'agent s'est arrêté (par exemple, "update_app"), pour l'en-tête de la fiche. Non défini pour les questions pures. |
agentName |
Libellé d'affichage de l'agent qui a déclenché la confirmation (par exemple, |
expireTime |
Délai après lequel il n'est plus possible de répondre à cette confirmation. Une carte expirée est considérée comme inactive, et le serveur refuse la confirmation au tour suivant afin que l'agent en pause n'attende pas indéfiniment. Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : |
targets[] |
Tout ce que l'action confirmée modifiera, afin que la console puisse afficher "Mettre à jour 2 applications" et un badge par application. Vide pour les anciennes fiches à cible unique. |
AssistantConfirmationRequest.Target
Une ressource que l'action confirmée va modifier.
| Représentation JSON |
|---|
{ "resource": string, "displayName": string, "action": string, "targetApp": string } |
| Champs | |
|---|---|
resource |
Ressource qui sera modifiée, sous la forme d'un nom de ressource complet. |
displayName |
Nom à afficher de la ressource ou de l'application, pour la fiche. |
action |
L'action, par exemple |
targetApp |
Application à laquelle appartient la ressource, ou vide pour une action limitée à un emplacement, comme la création d'une application. Format : |
TurnResumeSnapshot
Une rediffusion compactée d'un tour en cours : tout ce qui est nécessaire pour afficher la sortie visible du tour jusqu'à présent, ainsi que la position à partir de laquelle les événements en direct continuent.
| Représentation JSON |
|---|
{
"turnId": string,
"resolvedSequenceNumber": string,
"events": [
{
object ( |
| Champs | |
|---|---|
turnId |
Identifie le tour auquel l'élément est associé. |
resolvedSequenceNumber |
Position représentée par cet instantané. Les événements en direct suivent avec un sequenceNumber strictement supérieur à celui-ci. Lorsqu'elle est inférieure à la valeur resumeFromSequenceNumber demandée par le client, la progression vidée est en retard par rapport à ce que le client a déjà affiché : le client doit supprimer le contenu affiché de ce tour au-delà de cette position avant d'appliquer l'instantané. |
events[] |
Événements compactés reconstruisant la sortie visible du tour, dans l'ordre de rendu, en utilisant les mêmes formes d'événement que le streaming en direct. |
orphanDeadlineTime |
Date à laquelle le tour sera arrêté si aucun client ne reste associé. Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : |
TurnHandoffEvent
Émis avant que cette tâche n'arrête de diffuser le flux en cours de tour (par exemple, un redémarrage du serveur). L'état du tour est conservé. Une reconnexion contenant resumeFromSequenceNumber le poursuit sur une autre tâche.
| Représentation JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| Champs | |
|---|---|
turnId |
Identifie le tour à reprendre. |
reason |
Raison pour laquelle le flux est transféré. |
TurnHandoffEvent.Reason
Raison pour laquelle le flux est transféré.
| Enums | |
|---|---|
REASON_UNSPECIFIED |
Non spécifié. |
SERVER_RESTART |
La tâche de diffusion est en cours d'arrêt (push de version ou reprogrammation). |
TurnCompletedEvent
Événement terminal d'un tour (voir StreamChatAiAssistantResponse.turn_completed).
| Représentation JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| Champs | |
|---|---|
turnId |
Identifiant du virage qui s'est terminé. Correspond à TurnResumeSnapshot.turn_id et ActiveTurnInfo.turn_id. |
reason |
Pourquoi le tour s'est terminé. |
finalSequenceNumber |
Numéro de séquence du dernier événement produit par le tour. Un client dont le curseur est plus bas a manqué du contenu et doit recharger la session pour le voir. |
touchedApps[] |
Applications ciblées ou modifiées lors de cette session, afin que la console puisse actualiser précisément les magasins de ces applications. Sessions limitées au projet uniquement. Format : |
TurnCompletedEvent.Reason
Raison pour laquelle le tour s'est terminé, afin qu'un client qui s'est connecté tardivement puisse formuler le résultat au lieu de le deviner à partir d'un flux vide.
| Enums | |
|---|---|
REASON_UNSPECIFIED |
Non spécifié. |
COMPLETED |
Le tour s'est terminé. La session contient sa sortie validée. |
ABANDONED |
Aucune tâche ne pilotait plus le tour ; il a été scellé à un partiel validé et ne peut pas être poursuivi. |
RESUME_UNAVAILABLE |
Ce serveur ne gère pas l'association ni la reprise de la session. Rien n'a donc été suivi. Le client doit plutôt actualiser la session. |
TurnMetadata
Métadonnées au niveau du tour de parole et catégorisation des intents.
| Représentation JSON |
|---|
{
"contractRelated": boolean,
"contractFinalized": boolean,
"contractStreamingPhase": enum ( |
| Champs | |
|---|---|
contractRelated |
Indique si ce tour de l'assistant était lié à un contrat (par exemple, rédaction, alignement, extraction ou révision d'un contrat). |
contractFinalized |
Défini sur l'événement d'artefact final d'un tour dont le brouillon de contrat a été publié (une révision a été activée). Terminal pour le flux de clarification de ce brouillon : contractProgress est officiel et complet. |
contractStreamingPhase |
Défini uniquement sur les estimations de progression en cours émises pendant la diffusion d'un artefact de contrat et sur l'événement revision-turn-start. Non défini sur les charges utiles de référence. |
contractDraftComplete |
Défini sur l'événement de terminal d'un brouillon de contrat dont chaque espace réservé est résolu (contractProgress est de 100 %), que le brouillon ait été publié ou non. Les clients complètent et ignorent l'affichage de la progression du contrat. La publication est signalée séparément par contractFinalized. |
TurnMetadata.ContractStreamingPhase
Phase de streaming de la charge utile de progression du contrat.
| Enums | |
|---|---|
CONTRACT_STREAMING_PHASE_UNSPECIFIED |
La charge utile fait autorité (calculée à partir d'un document de contrat complet, d'un instantané persistant ou de l'état de pré-brouillon). Les clients doivent remplacer toute progression précédemment reçue par celle-ci. |
DRAFTING |
Un brouillon de contrat initial est en cours de diffusion. contractProgress est une estimation en cours : non décroissante dans une limite d'artefact, plafonnée en dessous de la plage faisant autorité, avec pillarBreakdowns portant totalItemCount == 0 pour marquer les états de pilier estimés. |
REVISING |
Une révision d'un contrat existant est en cours de diffusion (par exemple, après l'envoi d'une annotation). Même sémantique d'estimation que DRAFTING. |