- Permintaan HTTP
- Parameter jalur
- Isi permintaan
- Isi respons
- Cakupan otorisasi
- Izin IAM
- AssistantConfirmationResponse
- StreamChatAiAssistantRequest.ClientCapability
- OperationCompletedEvent
- ArtifactChunk
- ArtifactChunk.State
- OptionQuestionsChunk
- OptionQuestionsChunk.Question
- OptionQuestionsChunk.Option
- AssistantConfirmationRequest
- AssistantConfirmationRequest.Target
- SessionCheckpoint
- TurnResumeSnapshot
- TurnHandoffEvent
- TurnHandoffEvent.Reason
- TurnCompletedEvent
- TurnCompletedEvent.Reason
- UiEvent
- TurnMetadata
- TurnMetadata.ContractStreamingPhase
Menjalankan Arc, asisten AI, untuk sesi asisten yang ditentukan dalam mode streaming.
Permintaan HTTP
POST https://ces.googleapis.com/v1/{name=projects/*/locations/*/apps/*/assistantSessions/*}:streamChatAiAssistant
URL menggunakan sintaks gRPC Transcoding.
Parameter jalur
| Parameter | |
|---|---|
name |
Wajib. Sesi asisten yang akan digunakan untuk menjalankan asisten. Format: |
Isi permintaan
Isi permintaan memuat data dengan struktur berikut:
| Representasi JSON |
|---|
{ "message": string, "attachedGcsUris": [ string ], "contextToken": string, "confirmationResponse": { object ( |
| Kolom | |
|---|---|
message |
Opsional. Pesan yang akan dikirim ke agen asisten. Dapat kosong jika |
attachedGcsUris[] |
Opsional. Cloud Storage URI untuk file yang diupload oleh pengguna selama giliran ini. Contoh: "gs://cxas-transient-uploads/uuid/prd.pdf" |
contextToken |
Opsional. Token konteks orientasi buram yang ditampilkan oleh |
confirmationResponse |
Opsional. Jawaban pengguna untuk |
clientCapabilities[] |
Opsional. Fitur respons yang dapat dirender oleh klien ini. Server hanya memunculkan peristiwa yang memerlukan kemampuan (misalnya, |
operationCompletedEvent |
Opsional. Melanjutkan sesi asisten yang dijeda saat menunggu operasi yang berjalan lama dan dikelola klien selesai. |
resumeFromSequenceNumber |
Opsional. Kursor opsional untuk melanjutkan dan memutar ulang peristiwa dari giliran yang sedang berlangsung atau yang telah selesai. |
attachOnly |
Opsional. Flag opsional untuk dilampirkan ke giliran yang sedang berlangsung tanpa mengirimkan pesan baru. |
Isi respons
Pesan respons untuk SessionService.StreamChatAiAssistant.
Jika berhasil, isi respons memuat data dengan struktur berikut:
| Representasi JSON |
|---|
{ "eventId": string, "eventTime": string, "uiEvent": { object ( |
| Kolom | |
|---|---|
eventId |
ID unik untuk peristiwa. |
eventTime |
Stempel waktu saat peristiwa terjadi. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
uiEvent |
Opsional. Payload peristiwa UI. |
turnMetadata |
Opsional. Metadata tingkat giliran dan kategorisasi intent. |
sequenceNumber |
Opsional. Nomor urut yang meningkat secara monoton untuk giliran sesi ini. |
turnInProgress |
Opsional. Menunjukkan apakah giliran masih aktif berjalan di latar belakang. |
| Payload peristiwa. Berikut adalah daftar kolom yang sama-sama bersifat eksklusif. Maksimal satu kolom akan ditetapkan dalam respons: | |
textChunk |
Token Teks (untuk men-streaming respons Gemini kata demi kata). |
status |
Pembaruan status sederhana. |
thoughtChunk |
Penggalan teks pemikiran (penalaran agen sebelum membuat respons). |
toolCall |
Peristiwa eksekusi panggilan alat. |
toolResponse |
Peristiwa respons panggilan alat. |
artifactChunk |
Peristiwa artefak dokumen yang dihasilkan (delta pratinjau langsung + pointer Cloud Storage akhir). |
optionQuestionsChunk |
Opsi klarifikasi terstruktur yang diuraikan dari giliran model. Konsol merender ini sebagai daftar opsi yang dapat dipilih, bukan teks mentah. |
confirmationRequest |
Konfirmasi pemblokiran yang menyebabkan agen dijeda. Agen akan melanjutkan saat jawaban tiba di |
sessionCheckpoint |
Peristiwa checkpoint/ringkasan pemadatan sesi yang berisi niat pengguna dan ringkasan berkelanjutan. |
resumeSnapshot |
Pemutaran ulang yang dipadatkan dari giliran yang sedang berlangsung, dikirim sebagai peristiwa pertama dari setiap lampiran atau melanjutkan sebelum peristiwa live apa pun. Klien mengganti status yang dirender secara lokal untuk giliran ini dengan konten snapshot. |
handoff |
Memberi tahu klien untuk terhubung kembali secara otomatis dengan resumeFromSequenceNumber: tugas yang menyajikan streaming ini akan hilang dan giliran akan berlanjut di tempat lain. Bukan error; streaming selesai secara normal setelah peristiwa ini. |
turnCompleted |
Giliran telah berakhir. Dikirim sebagai peristiwa terakhir dari setiap giliran, pada streaming asli dan pada setiap streaming yang dilampirkan atau dilanjutkan, sehingga klien dapat mengakhiri giliran pada sinyal eksplisit, bukan menyimpulkannya dari penutupan streaming. |
| Akhir kolom yang saling eksklusif. | |
Cakupan otorisasi
Memerlukan salah satu cakupan OAuth berikut:
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/ces
Untuk mengetahui informasi selengkapnya, lihat Authentication Overview.
Izin IAM
Memerlukan izin IAM berikut pada resource name:
ces.assistantSessions.get
Untuk mengetahui informasi selengkapnya, baca dokumentasi IAM.
AssistantConfirmationResponse
Jawaban pengguna untuk AssistantConfirmationRequest, yang dikirim pada panggilan SessionService.StreamChatAiAssistant berikutnya untuk melanjutkan agen yang dijeda.
| Representasi 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. } |
| Kolom | |
|---|---|
confirmationId |
|
| Jawaban pengguna. Berikut adalah daftar kolom yang sama-sama bersifat eksklusif. Maksimal satu kolom akan ditetapkan dalam respons: | |
confirmed |
Jawaban biner: true menyetujui tindakan yang dijeda, false menolaknya. |
answerText |
submitText dari opsi yang dipilih, atau teks pengguna dalam format bebas. Tindakan yang dijeda akan dibatalkan dan teks akan diserahkan kepada agen untuk ditindaklanjuti. |
| Akhir kolom yang saling eksklusif. | |
StreamChatAiAssistantRequest.ClientCapability
Fitur respons yang dapat dideklarasikan klien.
| Enum | |
|---|---|
CLIENT_CAPABILITY_UNSPECIFIED |
Kemampuan tidak ditentukan; diabaikan. |
CONFIRMATION_CARDS |
Klien merender kartu AssistantConfirmationRequest dan menjawabnya melalui confirmationResponse. |
CLIENT_MANAGED_LRO |
Klien mengelola operasi yang berjalan lama secara out-of-band dengan melakukan polling operasi dan mengirimkan operationCompletedEvent untuk melanjutkan giliran. Jika tidak dideklarasikan, server akan mengelola polling LRO dan menyelesaikan giliran secara inline. |
PROJECT_SCOPE |
Klien merender peristiwa cakupan project: Kartu typedPayload, targetApp pada panggilan alat dan respons, targets pada permintaan konfirmasi, dan touchedApps pada penyelesaian giliran. |
OperationCompletedEvent
Peristiwa yang dikirim oleh klien atau pekerja latar belakang untuk melanjutkan sesi asisten setelah Operasi yang Berjalan Lama (LRO) asinkron selesai.
| Representasi JSON |
|---|
{
"operationName": string,
"targetResourceName": string,
"operationType": string,
"status": string,
"deduplicationToken": string,
"error": {
object ( |
| Kolom | |
|---|---|
operationName |
Nama resource operasi (misalnya, |
targetResourceName |
Resource utama yang ditargetkan atau dihasilkan oleh operasi (misalnya, ID operasi evaluasi, ID aplikasi, ID set data). |
operationType |
Jenis operasi atau nama alat (misalnya, "run_evaluation", "copy_app", "export_app"). |
status |
Status operasi yang dijalankan (misalnya, "SUCCEEDED", "FAILED", "CANCELLED"). |
deduplicationToken |
Token penghapusan duplikat opsional (misalnya, UUID) untuk mencegah eksekusi giliran duplikat dari tab browser serentak. |
error |
Status error kanonis opsional jika operasi gagal. |
metadata |
Metadata hasil terstruktur opsional (misalnya, pass_rate, total_examples, export_uri). |
ArtifactChunk
Fragmen yang di-streaming dari artefak dokumen (misalnya, TDD markdown) yang sedang dibuat oleh asisten. Delta konten di-streaming saat dokumen sedang ditulis sehingga klien dapat merender pratinjau langsung; chunk FINALIZED membawa URI Cloud Storage setelah file dipertahankan.
| Representasi JSON |
|---|
{
"artifactId": string,
"displayName": string,
"mimeType": string,
"contentDelta": string,
"gcsUri": string,
"state": enum ( |
| Kolom | |
|---|---|
artifactId |
ID artefak, stabil di semua potongan satu artefak dalam streaming. |
displayName |
Nama file yang ditampilkan kepada pengguna, misalnya "hotel_booking_tdd.md". Ditetapkan pada STARTED (dan diulang pada FINALIZED). |
mimeType |
Jenis media IANA dari konten artefak, misalnya "text/markdown". |
contentDelta |
Konten artefak inkremental. Ditetapkan pada potongan DELTA. |
gcsUri |
Objek Cloud Storage tempat artefak dipertahankan. Ditetapkan pada potongan FINALIZED. |
state |
Posisi siklus proses potongan ini. |
targetApp |
Hanya output. Aplikasi yang dibuat untuk artefak ini, jika dibuat untuk satu aplikasi. Format: |
ArtifactChunk.State
Posisi siklus proses potongan ini dalam aliran artefak.
| Enum | |
|---|---|
STATE_UNSPECIFIED |
Default yang tidak digunakan. |
STARTED |
Asisten mulai membuat artefak. |
DELTA |
Penambahan konten; contentDelta ditetapkan. |
FINALIZED |
Artefak dipertahankan; gcsUri ditetapkan. |
FAILED |
Pembuatan atau persistensi gagal; artefak tidak disimpan. |
CLOSED |
Dokumen selesai di-streaming: kontennya telah dikirimkan sepenuhnya melalui potongan contentDelta. Persistensi mungkin masih mengikuti; potongan FINALIZED dengan gcsUri dikirim jika dan saat artefak disimpan. |
OptionQuestionsChunk
Opsi klarifikasi terstruktur yang diminta asisten untuk dipilih pengguna, ditransduksi di sisi server dari giliran model (blok opsi dihapus dari teks yang di-streaming dan dipertahankan). Konsol akan merender daftar opsi yang dapat diakses dengan keyboard yang diletakkan di atas composer.
| Representasi JSON |
|---|
{
"questions": [
{
object ( |
| Kolom | |
|---|---|
questions[] |
Pertanyaan yang diajukan pada giliran ini. Lebih dari satu entri menggerakkan pager "1 dari N" konsol. |
OptionQuestionsChunk.Question
Satu pertanyaan dengan opsinya.
| Representasi JSON |
|---|
{
"question": string,
"options": [
{
object ( |
| Kolom | |
|---|---|
question |
Teks header pertanyaan. |
options[] |
Opsi yang dapat dipilih, dalam urutan presentasi. |
OptionQuestionsChunk.Option
Satu opsi yang dapat dipilih.
| Representasi JSON |
|---|
{ "title": string, "details": string, "submitText": string } |
| Kolom | |
|---|---|
title |
Judul opsi teks biasa singkat (tanpa markdown, tanpa penomoran). |
details |
Detail kompromi opsional ditampilkan sebagai teks sekunder. |
submitText |
Teks pesan opsional yang akan dikirim saat opsi dipilih; defaultnya adalah |
AssistantConfirmationRequest
Pertanyaan atau konfirmasi pemblokiran yang perlu dijawab asisten sebelum tindakan agen dapat dilanjutkan. Agen yang meminta akan dijeda dan hanya akan dilanjutkan saat jawaban tiba di StreamChatAiAssistantRequest.confirmation_response berikutnya.
| Representasi JSON |
|---|
{ "confirmationId": string, "context": string, "positiveLabel": string, "negativeLabel": string, "questions": [ { object ( |
| Kolom | |
|---|---|
confirmationId |
ID yang menghubungkan permintaan ini dengan responsnya. Tidak terlihat oleh klien; harus diulang secara verbatim pada permintaan jawaban. |
context |
Konteks yang menjelaskan hal yang sedang dikonfirmasi (misalnya, tindakan yang ingin dilakukan agen, atau pertanyaan yang perlu dijawab). Dirender sebagai teks biasa, bukan Markdown. |
positiveLabel |
Label untuk tindakan persetujuan konfirmasi biner (misalnya, "Publikasikan"). Tidak ditetapkan saat |
negativeLabel |
Label untuk tindakan penolakan konfirmasi biner (misalnya, "Belum"). Tidak ditetapkan saat |
questions[] |
Bentuk konfirmasi pilihan ganda. Jika diisi, kartu akan merender daftar opsi yang dapat dipilih dan submitText opsi yang dipilih (atau teks pengguna bentuk bebas) akan ditampilkan sebagai |
tool |
Nama panggilan alat yang dijeda agen (misalnya, "update_app"), untuk header kartu. Tidak ditetapkan untuk pertanyaan murni. |
agentName |
Label tampilan agen yang memunculkan konfirmasi (misalnya, |
expireTime |
Waktu setelah konfirmasi ini tidak dapat lagi dijawab. Kartu yang sudah tidak berlaku akan ditampilkan sebagai tidak aktif, dan server akan menolak konfirmasi pada giliran berikutnya sehingga agen yang dijeda tidak menunggu tanpa batas waktu. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
targets[] |
Semua hal yang akan diubah oleh tindakan yang dikonfirmasi, sehingga konsol dapat merender "Update 2 aplikasi" dan satu badge per aplikasi. Kosong untuk kartu target tunggal lama. |
AssistantConfirmationRequest.Target
Satu resource yang akan diubah oleh tindakan yang dikonfirmasi.
| Representasi JSON |
|---|
{ "resource": string, "displayName": string, "action": string, "targetApp": string } |
| Kolom | |
|---|---|
resource |
Resource yang akan berubah, sebagai nama resource lengkap. |
displayName |
Nama tampilan resource atau aplikasi, untuk kartu. |
action |
Tindakan, misalnya, |
targetApp |
Aplikasi yang memiliki resource, atau kosong untuk tindakan yang tercakup dalam lokasi seperti membuat aplikasi. Format: |
SessionCheckpoint
Checkpoint sesi yang berisi niat pengguna yang disimpulkan untuk judul sesi dan UI.
| Representasi JSON |
|---|
{ "userIntent": string } |
| Kolom | |
|---|---|
userIntent |
Sasaran atau topik pengguna yang disimpulkan untuk sesi tersebut (misalnya, "Membangun Agen Dukungan E-Commerce"). |
TurnResumeSnapshot
Pemutaran ulang yang dipadatkan dari giliran yang sedang berlangsung: semua yang diperlukan untuk merender output giliran yang terlihat sejauh ini, ditambah posisi acara live yang dilanjutkan.
| Representasi JSON |
|---|
{
"turnId": string,
"resolvedSequenceNumber": string,
"events": [
{
object ( |
| Kolom | |
|---|---|
turnId |
Mengidentifikasi belokan yang dilampirkan. |
resolvedSequenceNumber |
Posisi yang diwakili oleh snapshot ini. Acara live mengikuti dengan sequenceNumber yang benar-benar lebih besar dari ini. Jika lebih rendah dari resumeFromSequenceNumber yang diminta klien, progres yang di-flush akan tertinggal dari yang telah dirender klien: klien harus menghapus konten yang dirender dari giliran ini di luar posisi ini sebelum menerapkan snapshot. |
events[] |
Peristiwa yang dipadatkan yang merekonstruksi output giliran yang terlihat, dalam urutan render, menggunakan bentuk peristiwa yang sama seperti live streaming. |
orphanDeadlineTime |
Waktu giliran akan dihentikan jika tidak ada klien yang tetap terhubung. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
TurnHandoffEvent
Dimunculkan sebelum tugas ini berhenti menyajikan streaming di tengah giliran (misalnya, mulai ulang server). Status giliran dipertahankan; koneksi ulang yang membawa resumeFromSequenceNumber akan melanjutkannya di tugas lain.
| Representasi JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| Kolom | |
|---|---|
turnId |
Mengidentifikasi belokan untuk melanjutkan. |
reason |
Alasan streaming dialihkan. |
TurnHandoffEvent.Reason
Alasan streaming dialihkan.
| Enum | |
|---|---|
REASON_UNSPECIFIED |
Tidak ditentukan. |
SERVER_RESTART |
Tugas penayangan sedang dinonaktifkan (push rilis atau penjadwalan ulang). |
TurnCompletedEvent
Peristiwa terminal dari giliran (lihat StreamChatAiAssistantResponse.turn_completed).
| Representasi JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| Kolom | |
|---|---|
turnId |
ID belokan yang berakhir; cocok dengan TurnResumeSnapshot.turn_id dan ActiveTurnInfo.turn_id. |
reason |
Alasan giliran berakhir. |
finalSequenceNumber |
Nomor urut peristiwa terakhir yang dihasilkan giliran. Klien yang kursornya lebih rendah akan melewatkan konten dan harus memuat ulang sesi untuk melihatnya. |
touchedApps[] |
Aplikasi yang ditargetkan atau diubah pada giliran ini, sehingga konsol dapat memperbarui penyimpanan aplikasi tersebut secara tepat. Hanya sesi lingkup project. Format: |
TurnCompletedEvent.Reason
Alasan giliran berakhir, sehingga klien yang bergabung terlambat dapat merumuskan hasilnya, bukan menebak dari streaming kosong.
| Enum | |
|---|---|
REASON_UNSPECIFIED |
Tidak ditentukan. |
COMPLETED |
Giliran berjalan hingga selesai; sesi menyimpan output yang di-commit. |
ABANDONED |
Tidak ada tugas yang mendorong giliran lagi; tugas tersebut disegel ke parsial yang di-commit dan tidak dapat dilanjutkan. |
RESUME_UNAVAILABLE |
Server ini tidak melayani lampiran atau melanjutkan sesi, sehingga tidak ada yang di-tail; klien harus memuat ulang sesi. |
UiEvent
Mewakili payload peristiwa UI.
| Representasi JSON |
|---|
{ "mimeType": string, "jsonPayload": string } |
| Kolom | |
|---|---|
mimeType |
Jenis media (jenis MIME) yang menunjukkan format payload peristiwa UI (misalnya, "application/json+a2ui"). |
jsonPayload |
Payload JSON yang merepresentasikan platform A2UI. |
TurnMetadata
Metadata tingkat giliran dan kategorisasi intent.
| Representasi JSON |
|---|
{
"contractRelated": boolean,
"contractFinalized": boolean,
"contractStreamingPhase": enum ( |
| Kolom | |
|---|---|
contractRelated |
Menunjukkan apakah giliran asisten ini terkait dengan kontrak (misalnya, penyusunan, penyelarasan, ekstraksi, atau revisi kontrak). |
contractFinalized |
Ditetapkan pada peristiwa artefak akhir dari giliran yang draf kontraknya dipublikasikan (revisi diaktifkan). Terminal untuk alur klarifikasi draf ini: contractProgress bersifat otoritatif dan lengkap. |
contractStreamingPhase |
Hanya ditetapkan pada estimasi progres dalam proses yang dikeluarkan saat pagar artefak kontrak sedang di-streaming, dan pada peristiwa revision-turn-start. Tidak ditetapkan pada payload otoritatif. |
contractDraftComplete |
Ditetapkan pada peristiwa terminal draf kontrak yang setiap placeholder-nya telah diselesaikan (contractProgress adalah 100%), baik draf tersebut dipublikasikan atau tidak. Klien menyelesaikan dan menutup tampilan progres kontrak di dalamnya; publikasi dilaporkan secara terpisah oleh contractFinalized. |
TurnMetadata.ContractStreamingPhase
Fase streaming payload progres kontrak.
| Enum | |
|---|---|
CONTRACT_STREAMING_PHASE_UNSPECIFIED |
Payload bersifat otoritatif (dihitung dari dokumen kontrak lengkap, snapshot yang dipertahankan, atau status pra-draf). Klien harus mengganti progres yang diterima sebelumnya dengan progres ini. |
DRAFTING |
Draf kontrak awal sedang di-streaming. contractProgress adalah estimasi dalam proses: tidak menurun dalam satu batas artefak, dibatasi di bawah rentang otoritatif, dengan pillarBreakdowns yang membawa totalItemCount == 0 untuk menandai estimasi status pilar. |
REVISING |
Revisi kontrak yang ada sedang di-streaming (misalnya setelah pengiriman anotasi). Semantik estimasi yang sama dengan DRAFTING. |