- בקשת HTTP
- פרמטרים של הנתיב
- גוף הבקשה
- גוף התגובה
- היקפי הרשאות
- הרשאות 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
מפעיל את Arc, העוזר האישי מבוסס-AI, בסשן העוזר האישי שצוין, במצב סטרימינג.
בקשת HTTP
POST https://ces.googleapis.com/v1/{name=projects/*/locations/*/apps/*/assistantSessions/*}:streamChatAiAssistant
כתובת ה-URL כתובה בתחביר של gRPC Transcoding.
פרמטרים של הנתיב
| פרמטרים | |
|---|---|
name |
חובה. הסשן של Assistant שבו משתמשים כדי להפעיל את Assistant. פורמט: |
גוף הבקשה
גוף הבקשה מכיל נתונים במבנה הבא:
| ייצוג ב-JSON |
|---|
{ "message": string, "attachedGcsUris": [ string ], "contextToken": string, "confirmationResponse": { object ( |
| שדות | |
|---|---|
message |
זה שינוי אופציונלי. ההודעה שתישלח לנציג של Assistant. יכול להיות ריק כשמוגדר |
attachedGcsUris[] |
זה שינוי אופציונלי. מזהי URI של Cloud Storage לקבצים שהמשתמש העלה במהלך התור הזה. דוגמה: "gs://cxas-transient-uploads/uuid/prd.pdf" |
contextToken |
זה שינוי אופציונלי. טוקן הקשר אטום של תהליך ההצטרפות שהוחזר על ידי |
confirmationResponse |
זה שינוי אופציונלי. התשובה של המשתמש ל |
clientCapabilities[] |
זה שינוי אופציונלי. תכונות של תגובות שהלקוח הזה יכול לעבד. השרת פולט רק אירועים שדורשים יכולת (למשל |
operationCompletedEvent |
זה שינוי אופציונלי. המשך סשן של Assistant שהושהה בזמן המתנה להשלמת פעולה ממושכת שמנוהלת על ידי הלקוח. |
resumeFromSequenceNumber |
זה שינוי אופציונלי. סמן אופציונלי להמשך ולהפעלה מחדש של אירועים ממהלך פעיל או שהושלם. |
attachOnly |
זה שינוי אופציונלי. דגל אופציונלי לצירוף לתור קיים בלי לשלוח הודעה חדשה. |
גוף התשובה
הודעת התשובה של SessionService.StreamChatAiAssistant.
אם הפעולה מצליחה, גוף התשובה מכיל נתונים במבנה הבא:
| ייצוג ב-JSON |
|---|
{ "eventId": string, "eventTime": string, "uiEvent": { object ( |
| שדות | |
|---|---|
eventId |
המזהה הייחודי של האירוע. |
eventTime |
חותמת הזמן של האירוע. הפורמט הוא RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות אחרי הנקודה העשרונית. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. לדוגמה: |
uiEvent |
זה שינוי אופציונלי. המטען הייעודי (payload) של אירוע בממשק המשתמש. |
turnMetadata |
זה שינוי אופציונלי. מטא-נתונים ברמת התור וסיווג כוונות. |
sequenceNumber |
זה שינוי אופציונלי. מספר סידורי שגדל באופן מונוטוני עבור הסשן הזה. |
turnInProgress |
זה שינוי אופציונלי. מציין אם התור עדיין פועל ברקע. |
| המטען הייעודי (payload) של האירוע. ברשימה הבאה מופיעים שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים: | |
textChunk |
טוקן טקסט (לסטרימינג של תשובות מ-Gemini מילה אחר מילה). |
status |
עדכון סטטוס פשוט. |
thoughtChunk |
קטע טקסט של תהליך החשיבה (הסקת המסקנות של הנציג לפני יצירת התשובה). |
toolCall |
אירוע של הפעלת קריאת API לכלי. |
toolResponse |
אירוע תגובה לקריאת API לכלי. |
artifactChunk |
אירוע של פריט מידע שנוצר במסמך (ההבדלים בתצוגה המקדימה בזמן אמת + המצביע הסופי ל-Cloud Storage). |
optionQuestionsChunk |
אפשרויות הבהרה מובנות שנותחו מהתור של המודל. המסוף מציג אותם כרשימת אפשרויות לבחירה במקום כטקסט גולמי. |
confirmationRequest |
אישור חוסם שהסוכן השהה את הפעולה שלו בגללו. הסוכן ממשיך כשהתשובה מגיעה ב- |
sessionCheckpoint |
אירוע סיכום של נקודת בקרה או דחיסה של סשן, שמכיל את כוונת המשתמש (Intent) וסיכום מתגלגל. |
resumeSnapshot |
שידור חוזר דחוס של פנייה במהלך הטיסה, שנשלח כאירוע הראשון של כל צירוף או המשך לפני כל אירוע בשידור חי. הלקוח מחליף את כל המצבים שעובדו באופן מקומי בתור הזה בתוכן של תמונת המצב. |
handoff |
הוראה ללקוח להתחבר מחדש באופן שקט באמצעות resumeFromSequenceNumber: המשימה שמשרתת את הסטרימינג הזה מסתיימת והתור ימשיך במקום אחר. לא שגיאה. הסטרימינג מסתיים כרגיל אחרי האירוע הזה. |
turnCompleted |
התור הסתיים. נשלח כאירוע האחרון בכל תור, בסטרימינג המקורי ובכל סטרימינג מצורף או מחודש, כדי שהלקוחות יוכלו לסיים את התור באות מפורש במקום להסיק זאת מסגירת הסטרימינג. |
| סוף השדות שמוציאים זה את זה. | |
היקפי הרשאות
נדרש אחד מהיקפי ההרשאות הבאים של OAuth:
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/ces
ניתן למצוא מידע נוסף כאן: Authentication Overview.
הרשאות IAM
נדרשת הרשאת IAM הבאה במשאב name:
ces.assistantSessions.get
מידע נוסף זמין במאמרי העזרה בנושא IAM.
AssistantConfirmationResponse
התשובה של המשתמש ל-AssistantConfirmationRequest, שנשלחת בקריאה הבאה ל-SessionService.StreamChatAiAssistant כדי להמשיך את פעילות הסוכן שהושהתה.
| ייצוג ב-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. } |
| שדות | |
|---|---|
confirmationId |
ה |
| התשובה של המשתמש. ברשימה הבאה מופיעים שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים: | |
confirmed |
תשובה בינארית: הערך true מאשר את הפעולה המושהית, והערך false דוחה אותה. |
answerText |
ה-submitText של האפשרות שנבחרה, או טקסט חופשי של המשתמש. הפעולה שהושהתה מבוטלת והטקסט מועבר לנציג כדי שיטפל בו. |
| סוף השדות שמוציאים זה את זה. | |
StreamChatAiAssistantRequest.ClientCapability
תכונות של תגובה שהלקוח יכול להצהיר עליהן.
| טיפוסים בני מנייה (enum) | |
|---|---|
CLIENT_CAPABILITY_UNSPECIFIED |
יכולת לא מוגדרת; המערכת מתעלמת ממנה. |
CONFIRMATION_CARDS |
הלקוח מעבד כרטיסי AssistantConfirmationRequest ועונה עליהם באמצעות confirmationResponse. |
CLIENT_MANAGED_LRO |
הלקוח מנהל פעולות ממושכות מחוץ לפס על ידי דגימת הפעולה ושליחת operationCompletedEvent כדי להמשיך את התור. אם לא מצהירים על כך, השרת מנהל את הסקר של ה-LRO ומשלים את התור בתוך השורה. |
PROJECT_SCOPE |
הלקוח מעבד אירועים ברמת הפרויקט: typedPayload כרטיסים, targetApp בקריאות API לכלי ובתשובות, targets בבקשות לאישור ו-touchedApps בסיום הפנייה. |
OperationCompletedEvent
אירוע שנשלח על ידי הלקוח או ה-background worker כדי להמשיך סשן של Assistant אחרי שפעולה ממושכת אסינכרונית (LRO) מסתיימת.
| ייצוג ב-JSON |
|---|
{
"operationName": string,
"targetResourceName": string,
"operationType": string,
"status": string,
"deduplicationToken": string,
"error": {
object ( |
| שדות | |
|---|---|
operationName |
שם המשאב של הפעולה (למשל, |
targetResourceName |
המשאב הראשי שהפעולה מטרגטת או יוצרת (למשל, מזהה הרצת הערכה, מזהה אפליקציה, מזהה מערך נתונים). |
operationType |
סוג הפעולה או שם הכלי (למשל, run_evaluation, copy_app, export_app). |
status |
סטטוס הפעולה (למשל, "SUCCEEDED", "FAILED", "CANCELLED"). |
deduplicationToken |
אסימון אופציונלי לביטול כפילויות (למשל UUID) כדי למנוע ביצוע כפול של תור מכרטיסיות דפדפן בו-זמניות. |
error |
סטטוס שגיאה קנוני אופציונלי אם הפעולה נכשלה. |
metadata |
מטא-נתונים אופציונליים של תוצאות מובְנות (למשל pass_rate, total_examples, export_uri). |
ArtifactChunk
קטע בסטרימינג של פריט מידע במסמך (למשל, מסמך TDD ב-Markdown) שה-Assistant יוצרת. השינויים בתוכן מועברים בסטרימינג בזמן שהמסמך נכתב, כדי שהלקוחות יוכלו להציג תצוגה מקדימה בזמן אמת. החלק FINALIZED מכיל את ה-URI של Cloud Storage אחרי שהקובץ נשמר.
| ייצוג ב-JSON |
|---|
{
"artifactId": string,
"displayName": string,
"mimeType": string,
"contentDelta": string,
"gcsUri": string,
"state": enum ( |
| שדות | |
|---|---|
artifactId |
מזהה פריט המידע, קבוע בכל החלקים של פריט מידע אחד בתוך הסטרימינג. |
displayName |
שם הקובץ שמוצג למשתמש, למשל "hotel_booking_tdd.md". מוגדר ב-STARTED (וחוזר ב-FINALIZED). |
mimeType |
סוג המדיה של IANA של תוכן פריט המידע שנוצר, למשל "text/markdown". |
contentDelta |
תוכן מצטבר של פריט מידע שנוצר. מוגדרת על קטעי DELTA. |
gcsUri |
האובייקט ב-Cloud Storage שבו נשמר פריט המידע שנוצר. מוגדרת בחלקים שהסטטוס שלהם הוא FINALIZED. |
state |
המיקום של החלק הזה במחזור החיים. |
targetApp |
פלט בלבד. האפליקציה שהארטיפקט הזה נוצר בשבילה, אם הוא נוצר בשביל אפליקציה. פורמט: |
ArtifactChunk.State
המיקום של הקטע הזה במחזור החיים של הסטרימינג של פריט המידע.
| טיפוסים בני מנייה (enum) | |
|---|---|
STATE_UNSPECIFIED |
ברירת מחדל שלא בשימוש. |
STARTED |
ה-Assistant התחיל ליצור את פריט המידע שנוצר על ידי AI. |
DELTA |
תוספת תוכן; contentDelta מוגדר. |
FINALIZED |
הארטיפקט נשמר, והוגדר gcsUri. |
FAILED |
היצירה או השמירה נכשלו, והפריט לא נשמר. |
CLOSED |
המסמך סיים את הסטרימינג: התוכן שלו הועבר במלואו באמצעות מקטעי contentDelta. יכול להיות שהשמירה תתבצע בהמשך. אם וכאשר פריט המידע יישמר, יישלח קטע FINALIZED עם gcsUri. |
OptionQuestionsChunk
אפשרויות הבהרה מובנות שה-Assistant מבקשת מהמשתמש לבחור מביניהן, שמועברות בצד השרת מחוץ לתור של המודל (בלוק האפשרויות מוסר מהטקסט שמועבר בסטרימינג ונשמר). במסוף מוצגת רשימת אפשרויות שאפשר לנווט בהן באמצעות המקלדת, והיא ממוקמת מעל תיבת הניסוח.
| ייצוג ב-JSON |
|---|
{
"questions": [
{
object ( |
| שדות | |
|---|---|
questions[] |
השאלות שנשאלו בתור הזה. אם יש יותר מרשומה אחת, במסוף מופיע כלי לדפדוף בין הרשומות. |
OptionQuestionsChunk.Question
שאלה אחת עם האפשרויות שלה.
| ייצוג ב-JSON |
|---|
{
"question": string,
"options": [
{
object ( |
| שדות | |
|---|---|
question |
טקסט הכותרת של השאלה. |
options[] |
האפשרויות שאפשר לבחור, לפי סדר ההצגה. |
OptionQuestionsChunk.Option
אפשרות אחת לבחירה.
| ייצוג ב-JSON |
|---|
{ "title": string, "details": string, "submitText": string } |
| שדות | |
|---|---|
title |
כותרת קצרה של האפשרות בטקסט פשוט (בלי תווים מיוחדים לעיצוב, בלי מספור). |
details |
פרטים אופציונליים על היתרונות והחסרונות מוצגים כטקסט משני. |
submitText |
טקסט אופציונלי של הודעה שתישלח כשבוחרים באפשרות הזו. אם לא מזינים טקסט, ברירת המחדל היא |
AssistantConfirmationRequest
שאלה חוסמת או אישור שה-Assistant צריכה לקבל לפני שהסוכן יכול להמשיך בפעולה. הסוכן ששלח את הבקשה מושהה, וחוזר לפעול רק כשהתשובה מגיעה ב-StreamChatAiAssistantRequest.confirmation_response מאוחר יותר.
| ייצוג ב-JSON |
|---|
{ "confirmationId": string, "context": string, "positiveLabel": string, "negativeLabel": string, "questions": [ { object ( |
| שדות | |
|---|---|
confirmationId |
מזהה שמתאים בין הבקשה הזו לתגובה שלה. אטום ללקוחות; צריך להדהד מילה במילה בבקשה למענה. |
context |
הקשר שמתאר מה צריך לאשר (למשל, הפעולה שהסוכן רוצה לבצע או השאלה שהוא צריך לענות עליה). מוצג כטקסט פשוט, לא כ-Markdown. |
positiveLabel |
תווית לפעולת האישור של אישור בינארי (למשל, "פרסום"). לא מוגדר כש- |
negativeLabel |
תווית לפעולת הדחייה של אישור בינארי (למשל, "עדיין לא"). לא מוגדר כש- |
questions[] |
טופס אישור עם כמה אפשרויות בחירה. כשהכרטיס מאוכלס, הוא מציג רשימת אפשרויות לבחירה, והערך submitText של האפשרות שנבחרה (או טקסט חופשי של המשתמש) מוחזר בתור |
tool |
שם קריאת ה-API לכלי שהסוכן השהה (למשל, update_app), לכותרת הכרטיס. לא מוגדר לשאלות בלבד. |
agentName |
תווית התצוגה של הנציג ששלח את האישור (למשל, |
expireTime |
הזמן שאחריו לא ניתן יותר לענות על האישור הזה. כרטיס שפג תוקפו מוצג כלא פעיל, והשרת דוחה את האישור בתור הבא כדי שהנציג המושהה לא ימתין ללא הגבלת זמן. הפורמט הוא RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות אחרי הנקודה העשרונית. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. לדוגמה: |
targets[] |
כל מה שהפעולה שאושרה תשנה, כדי שהמסוף יוכל להציג את הכיתוב "עדכון של 2 אפליקציות" ותג אחד לכל אפליקציה. ריק בכרטיסים מדור קודם עם יעד יחיד. |
AssistantConfirmationRequest.Target
משאב אחד שהפעולה שאושרה תשנה.
| ייצוג ב-JSON |
|---|
{ "resource": string, "displayName": string, "action": string, "targetApp": string } |
| שדות | |
|---|---|
resource |
המשאב שישתנה, כשם המשאב המלא. |
displayName |
השם המוצג של המשאב או האפליקציה, עבור הכרטיס. |
action |
הפעולה, למשל |
targetApp |
האפליקציה שהמשאב שייך לה, או ריק לפעולה ברמת המיקום, כמו יצירת אפליקציה. פורמט: |
SessionCheckpoint
נקודת ביקורת של הסשן שמכילה את כוונת המשתמש (Intent) המשוערת לשם הסשן ולממשק המשתמש.
| ייצוג ב-JSON |
|---|
{ "userIntent": string } |
| שדות | |
|---|---|
userIntent |
הנושא או המטרה המשוערים של המשתמש בסשן (למשל, "פיתוח נציג תמיכה למסחר אלקטרוני"). |
TurnResumeSnapshot
שידור חוזר דחוס של תור במהלך טיסה: כל מה שצריך כדי להציג את הפלט הגלוי של התור עד כה, וגם את המיקום שממנו ממשיכים האירועים בשידור חי.
| ייצוג ב-JSON |
|---|
{
"turnId": string,
"resolvedSequenceNumber": string,
"events": [
{
object ( |
| שדות | |
|---|---|
turnId |
מזהה את הפנייה שאליה מצורף השלט. |
resolvedSequenceNumber |
המיקום שתמונת המצב הזו מייצגת. אירועים בשידור חי עם sequenceNumber שגדול יותר מזה. כשהערך נמוך מהערך של resumeFromSequenceNumber שהלקוח ביקש, ההתקדמות שנמחקה מפגרת אחרי מה שהלקוח כבר עיבד: הלקוח צריך למחוק את התוכן המעובד של התור הזה מעבר למיקום הזה לפני החלת תמונת המצב. |
events[] |
אירועים דחוסים שמשחזרים את הפלט הגלוי של התור, בסדר העיבוד, באמצעות אותן צורות אירועים כמו בסטרימינג בשידור חי. |
orphanDeadlineTime |
מתי התור יסתיים אם לא יישאר אף לקוח מחובר. הפורמט הוא RFC 3339, והפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות אחרי הנקודה העשרונית. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. לדוגמה: |
TurnHandoffEvent
נשלח לפני שהמשימה הזו מפסיקה להציג את השידור באמצע התור (למשל, הפעלה מחדש של השרת). מצב התור נשמר. חיבור מחדש עם resumeFromSequenceNumber ממשיך אותו במשימה אחרת.
| ייצוג ב-JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| שדות | |
|---|---|
turnId |
מזהה את התור שצריך להמשיך. |
reason |
הסיבה להעברת השידור. |
TurnHandoffEvent.Reason
הסיבה להעברת השידור.
| טיפוסים בני מנייה (enum) | |
|---|---|
REASON_UNSPECIFIED |
לא צוין. |
SERVER_RESTART |
משימת ההצגה נסגרת (השקת גרסה או תזמון מחדש). |
TurnCompletedEvent
אירוע סיום של תור (ראו StreamChatAiAssistantResponse.turn_completed).
| ייצוג ב-JSON |
|---|
{
"turnId": string,
"reason": enum ( |
| שדות | |
|---|---|
turnId |
המזהה של הפנייה שהסתיימה. תואם ל-TurnResumeSnapshot.turn_id ול-ActiveTurnInfo.turn_id. |
reason |
למה התור הסתיים. |
finalSequenceNumber |
המספר הסידורי של האירוע האחרון שהתור הפיק. אם הסמן של לקוח נמצא במיקום נמוך יותר, הוא פספס תוכן וצריך לטעון מחדש את הסשן כדי לראות אותו. |
touchedApps[] |
האפליקציות שהשתנו או שהיו היעד של השינוי, כדי שהמסוף יוכל לרענן בדיוק את החנויות של האפליקציות האלה. סשנים ברמת הפרויקט בלבד. פורמט: |
TurnCompletedEvent.Reason
למה התור הסתיים, כדי שלקוח שהצטרף באיחור יוכל לנסח את התוצאה במקום לנחש אותה מסטרימינג ריק.
| טיפוסים בני מנייה (enum) | |
|---|---|
REASON_UNSPECIFIED |
לא צוין. |
COMPLETED |
הסבב הסתיים, והפלט של הסשן נשמר. |
ABANDONED |
לא הייתה עוד משימה שהניעה את התור. הוא נחתם כחלקי ואי אפשר להמשיך אותו. |
RESUME_UNAVAILABLE |
השרת הזה לא מציג צירוף או המשך של הסשן, ולכן לא בוצע מעקב. במקום זאת, הלקוח צריך לטעון מחדש את הסשן. |
UiEvent
מייצג מטען ייעודי של אירוע בממשק המשתמש.
| ייצוג ב-JSON |
|---|
{ "mimeType": string, "jsonPayload": string } |
| שדות | |
|---|---|
mimeType |
סוג המדיה (סוג MIME) שמציין את הפורמט של המטען הייעודי (payload) של אירוע ממשק המשתמש (למשל, "application/json+a2ui"). |
jsonPayload |
המטען הייעודי (payload) של JSON שמייצג את ממשק המשתמש של A2UI. |
TurnMetadata
מטא-נתונים ברמת התור וסיווג כוונות.
| ייצוג ב-JSON |
|---|
{
"contractRelated": boolean,
"contractFinalized": boolean,
"contractStreamingPhase": enum ( |
| שדות | |
|---|---|
contractRelated |
מציין אם הפנייה הזו ל-Assistant הייתה קשורה לחוזה (למשל, ניסוח, התאמה, חילוץ או תיקון של חוזה). |
contractFinalized |
מוגדר באירוע של פריט המידע המלאכותי הסופי של תור שבו פורסמה טיוטת החוזה (גרסה הופעלה). המסוף לתהליך ההבהרה של הטיוטה הזו: contractProgress הוא סמכותי ושלם. |
contractStreamingPhase |
מוגדר רק בהערכות של התקדמות בזמן אמת שמופקות בזמן שמתבצע סטרימינג של גדר פריט מידע של חוזה, ובאירוע revision-turn-start. לא מוגדר ב-payloads סמכותיים. |
contractDraftComplete |
מוגדר באירוע הסיום של טיוטת חוזה שכל ה-placeholders שלו נפתרו (contractProgress הוא 100%), בין אם הטיוטה פורסמה ובין אם לא. הלקוחות משלימים את החוזה וסוגרים את התצוגה של התקדמות החוזה. הפרסום מדווח בנפרד על ידי contractFinalized. |
TurnMetadata.ContractStreamingPhase
שלב הסטרימינג של המטען הייעודי (payload) של התקדמות החוזה.
| טיפוסים בני מנייה (enum) | |
|---|---|
CONTRACT_STREAMING_PHASE_UNSPECIFIED |
המטען הייעודי (payload) הוא סמכותי (מחושב ממסמך חוזה מלא, מתמונת מצב שנשמרה או ממצב טרום-טיוטה). הלקוחות צריכים להחליף את ההתקדמות שהתקבלה בעבר בהתקדמות הזו. |
DRAFTING |
טיוטת חוזה ראשונית מועברת בסטרימינג. contractProgress הוא אומדן בתהליך: לא יורד בתוך גדר פריט מידע אחד, מוגבל מתחת לטווח הסמכותי, עם פירוט עמודות שנושאות את totalItemCount == 0 כדי לסמן מצבי עמודות משוערים. |
REVISING |
מתבצעת העברה של גרסה מעודכנת של חוזה קיים (לדוגמה, אחרי שליחת הערה). אותה סמנטיקה של אומדן כמו ב-DRAFTING. |