- Solicitação HTTP
- Parâmetros de caminho
- Corpo da solicitação
- Corpo da resposta
- Escopos de autorização
- Permissões do 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
Executa o Arc, o assistente de IA, para a sessão de assistente especificada em um modo de streaming.
Solicitação HTTP
POST https://ces.googleapis.com/v1beta/{name=projects/*/locations/*/apps/*/assistantSessions/*}:streamChatAiAssistant
O URL usa a sintaxe de transcodificação gRPC.
Parâmetros de caminho
| Parâmetros | |
|---|---|
name |
Obrigatório. A sessão do assistente que será usada para executar o assistente. Formato: |
Corpo da solicitação
O corpo da solicitação contém dados com a seguinte estrutura:
| Representação JSON |
|---|
{ "message": string, "attachedGcsUris": [ string ], "contextToken": string, "confirmationResponse": { object ( |
| Campos | |
|---|---|
message |
Opcional. A mensagem a ser enviada ao agente assistente. Pode ficar vazio quando |
attachedGcsUris[] |
Opcional. URIs do Cloud Storage para arquivos enviados pelo usuário durante essa rodada. Exemplo: "gs://cxas-transient-uploads/uuid/prd.pdf" |
contextToken |
Opcional. Token de contexto de integração opaco retornado por |
confirmationResponse |
Opcional. A resposta do usuário a um |
clientCapabilities[] |
Opcional. Recursos de resposta que este cliente pode renderizar. O servidor só emite eventos que precisam de uma capacidade (por exemplo, |
operationCompletedEvent |
Opcional. Retoma uma sessão do assistente pausada aguardando a conclusão de uma operação de longa duração gerenciada pelo cliente. |
resumeFromSequenceNumber |
Opcional. Cursor opcional para retomar e repetir eventos de uma rodada em andamento ou concluída. |
attachOnly |
Opcional. Flag opcional para anexar a uma conversa em andamento sem enviar uma nova mensagem. |
Corpo da resposta
Mensagem de resposta para SessionService.StreamChatAiAssistant.
Se bem-sucedido, o corpo da resposta incluirá dados com a estrutura a seguir:
| Representação JSON |
|---|
{ "eventId": string, "eventTime": string, "uiEvent": { object ( |
| Campos | |
|---|---|
eventId |
Identificador exclusivo do evento. |
eventTime |
Carimbo de data/hora de quando o evento ocorreu. Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de Z, outros ajustes também são aceitos. Exemplos: |
uiEvent |
Opcional. Payload do evento UI. |
turnMetadata |
Opcional. Metadados no nível da fala e categorização de intenção. |
sequenceNumber |
Opcional. Número de sequência monotonicamente crescente para este turno da sessão. |
turnInProgress |
Opcional. Indica se a curva ainda está sendo executada em segundo plano. |
| O payload do evento. Confira a seguir uma lista de campos mutuamente exclusivos. No máximo um dos campos será definido em uma resposta: | |
textChunk |
Token de texto (para transmitir as respostas do Gemini palavra por palavra). |
status |
Atualização de status simples. |
thoughtChunk |
Bloco de texto de pensamento (raciocínio do agente antes de gerar a resposta). |
toolCall |
Evento de execução de chamada de ferramenta. |
toolResponse |
Evento de resposta de chamada de ferramenta. |
artifactChunk |
Evento de artefato de documento gerado (deltas de prévia ao vivo + ponteiro final do Cloud Storage). |
optionQuestionsChunk |
Opções de esclarecimento estruturadas analisadas na vez do modelo. O console renderiza esses valores como uma lista de opções selecionáveis, em vez de texto bruto. |
confirmationRequest |
Uma confirmação de bloqueio em que o agente foi pausado. O agente é retomado quando a resposta chega no |
sessionCheckpoint |
Evento de recapitulação de checkpoint/compactação da sessão que contém a intenção do usuário e o resumo contínuo. |
resumeSnapshot |
Uma repetição compactada de uma rodada em andamento, enviada como o primeiro evento de cada anexação ou retomada antes de qualquer evento ao vivo. O cliente substitui qualquer estado renderizado localmente para essa rodada pelo conteúdo do snapshot. |
handoff |
Informa ao cliente para se reconectar silenciosamente com resumeFromSequenceNumber: a tarefa que exibe esse stream está sendo encerrada, e a vez vai continuar em outro lugar. Não é um erro. O stream é concluído normalmente após esse evento. |
turnCompleted |
A vez acabou. Enviado como o último evento de cada turno, no stream original e em cada stream anexado ou retomado, para que os clientes possam encerrar o turno com um sinal explícito, em vez de inferir isso do fechamento do stream. |
| Fim dos campos mutuamente exclusivos. | |
Escopos de autorização
Requer um dos seguintes escopos do OAuth:
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/ces
Para mais informações, consulte Authentication Overview.
Permissões do IAM
Requer a seguinte permissão do IAM no recurso name:
ces.assistantSessions.get
Para mais informações, consulte a documentação do IAM.
AssistantConfirmationResponse
A resposta do usuário a um AssistantConfirmationRequest, enviada na próxima chamada SessionService.StreamChatAiAssistant para retomar o agente pausado.
| Representação 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. } |
| Campos | |
|---|---|
confirmationId |
O |
| A resposta do usuário. Confira a seguir uma lista de campos mutuamente exclusivos. No máximo um dos campos será definido em uma resposta: | |
confirmed |
Resposta binária: "true" aprova a ação pausada, "false" a recusa. |
answerText |
O submitText da opção escolhida ou o texto livre do usuário. A ação pausada é cancelada, e o texto é entregue ao agente para que ele tome as medidas necessárias. |
| Fim dos campos mutuamente exclusivos. | |
StreamChatAiAssistantRequest.ClientCapability
Recursos de resposta que um cliente pode declarar.
| Tipos enumerados | |
|---|---|
CLIENT_CAPABILITY_UNSPECIFIED |
Recurso não especificado; ignorado. |
CONFIRMATION_CARDS |
O cliente renderiza os cards AssistantConfirmationRequest e os responde usando confirmationResponse. |
CLIENT_MANAGED_LRO |
O cliente gerencia operações de longa duração fora de banda, sondando a operação e enviando operationCompletedEvent para retomar a vez. Se não for declarado, o servidor vai gerenciar a sondagem de LRO e concluir a vez inline. |
PROJECT_SCOPE |
O cliente renderiza eventos de escopo do projeto: cards typedPayload, targetApp em chamadas de ferramentas e respostas, targets em solicitações de confirmação e touchedApps na conclusão de turnos. |
OperationCompletedEvent
Evento enviado pelo cliente ou worker em segundo plano para retomar uma sessão do assistente após a conclusão de uma operação de longa duração (LRO, na sigla em inglês) assíncrona.
| Representação JSON |
|---|
{
"operationName": string,
"targetResourceName": string,
"operationType": string,
"status": string,
"deduplicationToken": string,
"error": {
object ( |
| Campos | |
|---|---|
operationName |
O nome do recurso da operação (por exemplo, |
targetResourceName |
O recurso principal visado ou produzido pela operação (por exemplo, ID da execução de avaliação, ID do app, ID do conjunto de dados). |
operationType |
O tipo de operação ou o nome da ferramenta (por exemplo, "run_evaluation", "copy_app", "export_app"). |
status |
Status da execução da operação (por exemplo, "SUCCEEDED", "FAILED", "CANCELLED"). |
deduplicationToken |
Token de eliminação de duplicação opcional (por exemplo, UUID) para evitar a execução de turnos duplicados em guias simultâneas do navegador. |
error |
Status de erro canônico opcional se a operação falhar. |
metadata |
Metadados de resultado estruturados opcionais (por exemplo, pass_rate, total_examples, export_uri). |
ArtifactChunk
Um fragmento de um artefato de documento (por exemplo, um TDD de markdown) que o assistente está gerando. As diferenças de conteúdo são transmitidas enquanto o documento está sendo escrito para que os clientes possam renderizar uma prévia em tempo real. O bloco FINALIZED carrega o URI do Cloud Storage depois que o arquivo é mantido.
| Representação JSON |
|---|
{
"artifactId": string,
"displayName": string,
"mimeType": string,
"contentDelta": string,
"gcsUri": string,
"state": enum ( |
| Campos | |
|---|---|
artifactId |
Identificador do artefato, estável em todos os blocos de um artefato no stream. |
displayName |
O nome do arquivo mostrado ao usuário, por exemplo, "hotel_booking_tdd.md". Definido como STARTED (e repetido em FINALIZED). |
mimeType |
O tipo de mídia IANA do conteúdo do artefato, por exemplo, "text/markdown". |
contentDelta |
Conteúdo de artefato incremental. Definido em blocos DELTA. |
gcsUri |
O objeto do Cloud Storage em que o artefato foi mantido. Definido em blocos FINALIZED. |
state |
Posição do ciclo de vida desse bloco. |
targetApp |
Apenas saída. O app para o qual o artefato foi produzido, quando foi produzido para um. Formato: |
ArtifactChunk.State
Posição do ciclo de vida desse bloco no stream do artefato.
| Tipos enumerados | |
|---|---|
STATE_UNSPECIFIED |
Padrão não utilizado. |
STARTED |
O assistente começou a gerar o artefato. |
DELTA |
Um incremento de conteúdo; contentDelta está definido. |
FINALIZED |
O artefato foi mantido. gcsUri está definido. |
FAILED |
Falha na geração ou persistência. O artefato não foi salvo. |
CLOSED |
O documento terminou de ser transmitido: o conteúdo foi totalmente entregue em blocos contentDelta. A persistência ainda pode ocorrer. Um bloco FINALIZED com um gcsUri é enviado se e quando o artefato é salvo. |
OptionQuestionsChunk
Opções de esclarecimento estruturadas que o assistente pede para o usuário escolher, traduzidas do lado do servidor fora da vez do modelo (o bloco de opções é removido do texto transmitido e persistido). O console renderiza uma lista de opções navegável pelo teclado, fixada acima do editor.
| Representação JSON |
|---|
{
"questions": [
{
object ( |
| Campos | |
|---|---|
questions[] |
As perguntas feitas nesta rodada. Mais de uma entrada aciona o paginador "1 de N" do console. |
OptionQuestionsChunk.Question
Uma pergunta com as opções.
| Representação JSON |
|---|
{
"question": string,
"options": [
{
object ( |
| Campos | |
|---|---|
question |
É o texto do cabeçalho da pergunta. |
options[] |
As opções selecionáveis, em ordem de apresentação. |
OptionQuestionsChunk.Option
Uma única opção selecionável.
| Representação JSON |
|---|
{ "title": string, "details": string, "submitText": string } |
| Campos | |
|---|---|
title |
Título curto da opção em texto simples (sem markdown, sem numeração). |
details |
Detalhes opcionais de compensação mostrados como texto secundário. |
submitText |
Texto opcional da mensagem a ser enviada quando a opção é escolhida. O padrão é |
AssistantConfirmationRequest
Uma pergunta ou confirmação que o assistente precisa que seja respondida antes que uma ação do agente possa continuar. O agente solicitante é pausado e só é retomado quando a resposta chega em um StreamChatAiAssistantRequest.confirmation_response posterior.
| Representação JSON |
|---|
{ "confirmationId": string, "context": string, "positiveLabel": string, "negativeLabel": string, "questions": [ { object ( |
| Campos | |
|---|---|
confirmationId |
Identificador que correlaciona essa solicitação com a resposta dela. Invisível para os clientes. Precisa ser repetido literalmente na solicitação de resposta. |
context |
Contexto que descreve o que está sendo confirmado (por exemplo, a ação que o agente quer realizar ou a pergunta que precisa ser respondida). Renderizado como texto simples, não Markdown. |
positiveLabel |
Rótulo para a ação de aprovação de uma confirmação binária (por exemplo, "Publicar"). Não definido quando |
negativeLabel |
Rótulo para a ação de recusa de uma confirmação binária (por exemplo, "Ainda não"). Não definido quando |
questions[] |
Formulário de confirmação de múltipla escolha. Quando preenchido, o card renderiza uma lista de opções selecionáveis, e o submitText da opção escolhida (ou o texto de formato livre do usuário) é retornado como |
tool |
Nome da chamada de ferramenta em que o agente pausou (por exemplo, "update_app"), para o cabeçalho do card. Não definido para perguntas puras. |
agentName |
Rótulo de exibição do agente que gerou a confirmação (por exemplo, |
expireTime |
Horário após o qual não é mais possível responder a essa confirmação. Um cartão expirado é renderizado como inativo, e o servidor recusa a confirmação na próxima vez para que o agente pausado não espere indefinidamente. Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de Z, outros ajustes também são aceitos. Exemplos: |
targets[] |
Tudo o que a ação confirmada vai mudar para que o console possa renderizar "Atualizar 2 apps" e um selo por app. Vazio para cards legados de destino único. |
AssistantConfirmationRequest.Target
Um recurso que será alterado pela ação confirmada.
| Representação JSON |
|---|
{ "resource": string, "displayName": string, "action": string, "targetApp": string } |
| Campos | |
|---|---|
resource |
O recurso que será alterado, como um nome de recurso completo. |
displayName |
Nome de exibição do recurso ou app para o card. |
action |
A ação, por exemplo, |
targetApp |
O app ao qual o recurso pertence ou vazio para uma ação com escopo de local, como criar um app. Formato: |
TurnResumeSnapshot
Uma repetição compactada de uma rodada em andamento: tudo o que é necessário para renderizar a saída visível da rodada até o momento, além da posição em que os eventos ao vivo continuam.
| Representação JSON |
|---|
{
"turnId": string,
"resolvedSequenceNumber": string,
"events": [
{
object ( |
| Campos | |
|---|---|
turnId |
Identifica a curva que está sendo anexada. |
resolvedSequenceNumber |
A posição que esse snapshot representa. Os eventos ao vivo seguem com sequenceNumber estritamente maior que esse. Quando menor que o resumeFromSequenceNumber solicitado pelo cliente, o progresso liberado fica atrás do que o cliente já renderizou: o cliente precisa descartar o conteúdo renderizado dessa vez além dessa posição antes de aplicar o snapshot. |
events[] |
Eventos compactados que reconstroem a saída visível da rodada, em ordem de renderização, usando as mesmas formas de evento da transmissão ao vivo. |
orphanDeadlineTime |
Quando a rodada será encerrada se nenhum cliente permanecer conectado. Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de Z, outros ajustes também são aceitos. Exemplos: |
TurnHandoffEvent
Emitido antes que essa tarefa pare de exibir o stream no meio da conversa (por exemplo, uma reinicialização do servidor). O estado do turno é mantido. Uma reconexão com resumeFromSequenceNumber continua em outra tarefa.
| Representação JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| Campos | |
|---|---|
turnId |
Identifica a curva para retomar. |
reason |
Por que a transmissão está sendo transferida. |
TurnHandoffEvent.Reason
Por que a transmissão está sendo transferida.
| Tipos enumerados | |
|---|---|
REASON_UNSPECIFIED |
Não especificado. |
SERVER_RESTART |
A tarefa de exibição está sendo encerrada (push de lançamento ou reprogramação). |
TurnCompletedEvent
Evento terminal de uma rodada (consulte StreamChatAiAssistantResponse.turn_completed).
| Representação JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| Campos | |
|---|---|
turnId |
Identificador da conversão que terminou. Corresponde a TurnResumeSnapshot.turn_id e ActiveTurnInfo.turn_id. |
reason |
Por que a vez terminou. |
finalSequenceNumber |
Número de sequência do último evento produzido pela vez. Um cliente com um cursor mais baixo perdeu conteúdo e precisa recarregar a sessão para vê-lo. |
touchedApps[] |
Apps que foram segmentados ou alterados nesta rodada, para que o console possa atualizar exatamente as lojas desses apps. Somente sessões com escopo de projeto. Formato: |
TurnCompletedEvent.Reason
Por que a vez terminou, para que um cliente que se conectou tarde possa expressar o resultado em vez de adivinhar com base em um stream vazio.
| Tipos enumerados | |
|---|---|
REASON_UNSPECIFIED |
Não especificado. |
COMPLETED |
A rodada foi concluída. A sessão mantém a saída confirmada. |
ABANDONED |
Nenhuma tarefa estava mais impulsionando a vez. Ela foi selada para uma parcial confirmada e não pode ser continuada. |
RESUME_UNAVAILABLE |
Este servidor não oferece anexação ou retomada para a sessão, então nada foi rastreado. O cliente precisa recarregar a sessão. |
TurnMetadata
Metadados no nível da fala e categorização de intenção.
| Representação JSON |
|---|
{
"contractRelated": boolean,
"contractFinalized": boolean,
"contractStreamingPhase": enum ( |
| Campos | |
|---|---|
contractRelated |
Indica se essa interação do assistente foi relacionada a um contrato (por exemplo, elaboração, alinhamento, extração ou revisão de contrato). |
contractFinalized |
Definido no evento de artefato final de uma rodada em que o rascunho do contrato foi publicado (uma revisão foi ativada). Terminal para o fluxo de esclarecimento deste rascunho: contractProgress é autoritativo e completo. |
contractStreamingPhase |
Definido apenas em estimativas de progresso em andamento emitidas enquanto uma barreira de artefato de contrato está sendo transmitida e no evento de início de turno de revisão. Não definido em payloads autoritativos. |
contractDraftComplete |
Definido no evento de terminal de um rascunho de contrato em que todos os marcadores de posição são resolvidos (contractProgress é 100%), independentemente de o rascunho ter sido publicado ou não. Os clientes concluem e dispensam a exibição do progresso do contrato. A publicação é informada separadamente por contractFinalized. |
TurnMetadata.ContractStreamingPhase
Fase de streaming do payload de progresso do contrato.
| Tipos enumerados | |
|---|---|
CONTRACT_STREAMING_PHASE_UNSPECIFIED |
O payload é oficial (calculado com base em um documento de contrato completo, um snapshot persistente ou o estado de pré-rascunho). Os clientes precisam substituir qualquer progresso recebido anteriormente por ele. |
DRAFTING |
Um rascunho inicial do contrato está sendo transmitido. contractProgress é uma estimativa em andamento: não decrescente dentro de uma barreira de artefato, limitada abaixo do intervalo oficial, com pillarBreakdowns carregando totalItemCount == 0 para marcar os estados estimados do pilar. |
REVISING |
Uma revisão de um contrato atual está sendo transmitida (por exemplo, após o envio de uma anotação). Mesma semântica de estimativa que DRAFTING. |