Gemini Live API מאפשר אינטראקציות קוליות ווידאו דו-כיווניות עם Gemini עם זמן טעינה נמוך. באמצעות Gemini Live API, אתם יכולים לספק למשתמשי הקצה חוויה של שיחות קוליות טבעיות, דמויות-אנוש, עם אפשרות להפריע לתשובות של המודל באמצעות פקודות קוליות. ממשק Gemini Live API יכול לעבד קלט של טקסט, אודיו ווידאו, ולספק פלט של טקסט ואודיו.
מידע נוסף על Gemini Live API זמין במאמר בנושא Gemini Live API.
יכולות
Gemini Live API כולל את היכולות העיקריות הבאות:
- Multimodality: המודל יכול לראות, לשמוע ולדבר.
- אינטראקציה בזמן אמת עם השהיה נמוכה: המודל יכול לספק תשובות מהירות.
- זיכרון סשן: המודל שומר בזיכרון את כל האינטראקציות בסשן יחיד, ומזכיר לעצמו מידע ששמע או ראה בעבר.
- תמיכה בהפעלת פונקציות, בהרצת קוד ובחיפוש ככלי: אתם יכולים לשלב את המודל עם שירותים חיצוניים ומקורות נתונים.
ממשק Gemini Live API מיועד לתקשורת בין שרתים.
באפליקציות לאינטרנט ולנייד, מומלץ להשתמש בשילוב של השותפים שלנו ב-Daily.
מודלים נתמכים
קדימה, מתחילים
כדי לנסות את Gemini Live API, עוברים אל Vertex AI Studio ולוחצים על Start Session (התחלת סשן).
Gemini Live API הוא API עם שמירת מצב שמשתמש ב-WebSockets.
בקטע הזה מוצגת דוגמה לשימוש ב-Gemini Live API ליצירת טקסט על סמך טקסט, באמצעות Python 3.9 ואילך.
Python
התקנה
pip install --upgrade google-genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Node.js
התקנה
npm install @google/genai
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Java
כך מתקינים או מעדכנים את Java.
מידע נוסף מופיע ב מאמרי העזרה בנושא SDK.
מגדירים משתני סביבה כדי להשתמש ב-Gen AI SDK עם Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
מדריך שילוב
בקטע הזה מוסבר איך השילוב עובד עם Gemini Live API.
סשנים
חיבור WebSocket יוצר סשן בין הלקוח לבין שרת Gemini.
אחרי שהלקוח יוזם חיבור חדש, הסשן יכול להעביר הודעות עם השרת כדי:
- שליחת טקסט, אודיו או וידאו לשרת Gemini.
- קבלת בקשות לשיחות אודיו, טקסט או בקשה להפעלת פונקציה משרת Gemini.
הגדרת הסשן נשלחת בהודעה הראשונה אחרי החיבור. הגדרת סשן כוללת את המודל, פרמטרים של יצירה, הוראות למערכת וכלים.
לדוגמה, ההגדרה הבאה:
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object
},
"systemInstruction": string,
"tools": [object]
}
מידע נוסף זמין במאמר BidiGenerateContentSetup.
שליחת הודעות
ההודעות הן אובייקטים בפורמט JSON שמועברים דרך חיבור WebSocket.
כדי לשלוח הודעה, הלקוח צריך לשלוח אובייקט JSON דרך חיבור WebSocket פתוח. אובייקט ה-JSON חייב להכיל בדיוק אחד מהשדות מתוך קבוצת האובייקטים הבאה:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
הודעות לעסק שנתמכות
בטבלה הבאה מפורטות הודעות הלקוח הנתמכות:
| הודעה | תיאור |
|---|---|
BidiGenerateContentSetup |
הגדרת הסשן שתישלח בהודעה הראשונה |
BidiGenerateContentClientContent |
עדכון מצטבר של תוכן השיחה הנוכחית שמועבר מהלקוח |
BidiGenerateContentRealtimeInput |
קלט אודיו או וידאו בזמן אמת |
BidiGenerateContentToolResponse |
תגובה ל-ToolCallMessage שהתקבלה מהשרת |
קבלת הודעות
כדי לקבל הודעות מ-Gemini, צריך להאזין לאירוע 'message' של WebSocket, ואז לנתח את התוצאה בהתאם להגדרה של הודעות השרת הנתמכות.
תוכלו לעיין במקורות המידע הבאים:
ws.addEventListener("message", async (evt) => { if (evt.data instanceof Blob) { // Process the received data (audio, video, etc.) } else { // Process JSON response } });
הודעות מהשרת יכללו בדיוק אחד מהשדות מתוך קבוצת האובייקטים הבאה:
{
"setupComplete": BidiGenerateContentSetupComplete,
"serverContent": BidiGenerateContentServerContent,
"toolCall": BidiGenerateContentToolCall,
"toolCallCancellation": BidiGenerateContentToolCallCancellation
"usageMetadata": UsageMetadata
"goAway": GoAway
"sessionResumptionUpdate": SessionResumptionUpdate
"inputTranscription": BidiGenerateContentTranscription
"outputTranscription": BidiGenerateContentTranscription
}
הודעות נתמכות מהשרת
בטבלה הבאה מפורטות הודעות השרת הנתמכות:
| הודעה | תיאור |
|---|---|
BidiGenerateContentSetupComplete |
הודעה מBidiGenerateContentSetup מהלקוח, שנשלחת בסיום ההגדרה |
BidiGenerateContentServerContent |
תוכן שנוצר על ידי המודל בתגובה להודעה של לקוח |
BidiGenerateContentToolCall |
בקשה מהלקוח להפעיל את הקריאות לפונקציות ולהחזיר את התשובות עם המזהים התואמים |
BidiGenerateContentToolCallCancellation |
האירוע נשלח כשבקשה להפעלת פונקציה מבוטלת כי המשתמש קוטע את הפלט של המודל |
UsageMetadata |
דוח על מספר האסימונים שנעשה בהם שימוש בסשן עד עכשיו |
GoAway |
אות לכך שהחיבור הנוכחי יסתיים בקרוב |
SessionResumptionUpdate |
נקודת ביקורת של סשן, שאפשר לחזור אליה |
BidiGenerateContentTranscription |
תמליל של הדיבור של המשתמש או של המודל |
עדכונים מצטברים של תוכן
אפשר להשתמש בעדכונים מצטברים כדי לשלוח קלט טקסט, ליצור הקשר של סשן או לשחזר את ההקשר של סשן. בהקשרים קצרים, אפשר לשלוח אינטראקציות של שיחה כדי לייצג את רצף האירועים המדויק. בהקשרים ארוכים יותר, מומלץ לספק סיכום של ההודעה כדי לפנות מקום בחלון ההקשר לשאילתות המשך.
הנה הודעת הקשר לדוגמה:
{ "clientContent": { "turns": [ { "parts":[ { "text": "" } ], "role":"user" }, { "parts":[ { "text": "" } ], "role":"model" } ], "turnComplete": true } }
הערה: אמנם חלקי תוכן יכולים להיות מסוג functionResponse, אבל לא מומלץ להשתמש ב-BidiGenerateContentClientContent כדי לספק תשובה לקריאות לפונקציות שהמודל מנפיק. במקומה, צריך להשתמש ב-BidiGenerateContentToolResponse. BidiGenerateContentClientContent צריך לשמש רק כדי ליצור הקשר קודם או כדי לספק קלט טקסט לשיחה.
סטרימינג של אודיו ווידאו
הרצת קוד
מידע נוסף על הרצת קוד זמין במאמר בנושא הרצת קוד.
בקשה להפעלת פונקציה
צריך להצהיר על כל הפונקציות בתחילת הסשן על ידי שליחת tool
definitions כחלק מההודעה BidiGenerateContentSetup.
מגדירים פונקציות באמצעות JSON, באופן ספציפי באמצעות קבוצת משנה של select של פורמט סכימת OpenAPI. הצהרה על פונקציה אחת יכולה לכלול את הפרמטרים הבאים:
name (מחרוזת): המזהה הייחודי של הפונקציה בקריאה ל-API.
description (מחרוזת): הסבר מקיף על המטרה והיכולות של הפונקציה.
parameters (אובייקט): מגדיר את נתוני הקלט שנדרשים לפונקציה.
type (מחרוזת): מציין את סוג הנתונים הכולל, למשל object.
properties (אובייקט): רשימה של פרמטרים בודדים, כל אחד עם:
- type (מחרוזת): סוג הנתונים של הפרמטר, כמו מחרוזת, מספר שלם, ערך בוליאני.
- description (מחרוזת): הסבר ברור על המטרה של הפרמטר והפורמט הצפוי שלו.
required (מערך): מערך של מחרוזות שכולל את שמות הפרמטרים שחובה להזין כדי שהפונקציה תפעל.
דוגמאות לקוד של הצהרת פונקציה באמצעות פקודות curl מופיעות במאמר הפעלת פונקציות באמצעות Gemini API. דוגמאות ליצירת הצהרות על פונקציות באמצעות ערכות ה-SDK של Gemini API מופיעות במדריך בנושא הפעלת פונקציות.
מתוך הנחיה אחת, המודל יכול ליצור כמה קריאות לפונקציות ואת הקוד שנדרש כדי לשרשר את הפלט שלהן. הקוד הזה מופעל בסביבת ארגז חול, ומייצר הודעות BidiGenerateContentToolCall. הביצוע מושהה עד שהתוצאות של כל בקשה להפעלת פונקציה יהיו זמינות, וכך מובטח עיבוד רציף.
הלקוח צריך להגיב עם BidiGenerateContentToolResponse.
מידע נוסף זמין במאמר מבוא לקריאה לפונקציות.
פורמטים של אודיו
רשימת הפורמטים הנתמכים של קובצי אודיו
הוראות מערכת
אתם יכולים לספק למודל הוראות מערכת כדי לשלוט טוב יותר בפלט שלו, ולציין את הטון והסנטימנט של תשובות האודיו.
ההוראות למערכת מתווספות להנחיה לפני תחילת האינטראקציה ונשארות בתוקף לאורך כל הסשן.
אפשר להגדיר הוראות למערכת רק בתחילת סשן, מיד אחרי החיבור הראשוני. כדי לספק למודל קלט נוסף במהלך הסשן, משתמשים בעדכוני תוכן מצטברים.
הפרעות
המשתמשים יכולים להפסיק את הפלט של המודל בכל שלב. כשמזוהה הפרעה על ידי זיהוי פעילות קולית (VAD), יצירת התמונה הנוכחית מבוטלת והתמונה נמחקת. רק המידע שכבר נשלח ללקוח נשמר בהיסטוריית הפעילות. השרת שולח הודעת BidiGenerateContentServerContent כדי לדווח על ההפרעה.
בנוסף, שרת Gemini מבטל את כל הקריאות הממתינות לפונקציות ושולח הודעה BidiGenerateContentServerContent עם מזהי השיחות שבוטלו.
קולות
כדי לציין קול, מגדירים את voiceName באובייקט speechConfig, כחלק מהגדרת הסשן.
הנה ייצוג JSON של אובייקט speechConfig:
{ "voiceConfig": { "prebuiltVoiceConfig": { "voiceName": "VOICE_NAME" } } }
כאן אפשר לראות את רשימת הקולות הנתמכים.
מגבלות
כשמתכננים את הפרויקט, חשוב לקחת בחשבון את המגבלות הבאות של Gemini Live API ושל Gemini 2.0.
אימות לקוח
Gemini Live API מספק רק אימות משרת לשרת, ולא מומלץ לשימוש ישיר של לקוח. הקלט של הלקוח צריך להיות מנותב דרך שרת אפליקציות ביניים כדי לאמת את הגישה בצורה מאובטחת באמצעות Gemini Live API.
משך סשן מקסימלי
ברירת המחדל למשך המקסימלי של סשן שיחה היא 10 דקות. מידע נוסף זמין במאמר בנושא משך ההפעלה.
קצב פריימים של סרטון
כשמזרימים סרטון למודל, הוא מעובד בקצב של פרים אחד לשנייה (FPS). לכן, ה-API לא מתאים לתרחישי שימוש שבהם נדרש ניתוח של סרטונים שמשתנים במהירות, כמו תיאור מהלך המשחק בספורט שמתנהל במהירות גבוהה.
זיהוי פעילות קולית (VAD)
כברירת מחדל, המודל מבצע באופן אוטומטי זיהוי פעילות קולית (VAD) בזרם רציף של קלט אודיו. אפשר להגדיר את ה-VAD באמצעות השדה RealtimeInputConfig.AutomaticActivityDetection של הודעת ההגדרה.
כשזרם האודיו מושהה למשך יותר משנייה (לדוגמה, כשהמשתמש משבית את המיקרופון), נשלח אירוע AudioStreamEndכדי לנקות את האודיו שנשמר במטמון. הלקוח יכול להמשיך לשלוח נתוני אודיו בכל שלב.
אפשר גם להשבית את ה-VAD האוטומטי על ידי הגדרת RealtimeInputConfig.AutomaticActivityDetection.disabled ל-true בהודעת ההגדרה. בהגדרה הזו, הלקוח אחראי לזיהוי הדיבור של המשתמש ולשליחת ההודעות ActivityStart ו-ActivityEnd בזמנים המתאימים. AudioStreamEnd לא נשלח בהגדרה הזו. במקום זאת, כל הפרעה לשידור מסומנת בהודעה ActivityEnd.
מגבלות נוספות
אין תמיכה בהגדרת נקודות קצה ידנית.
קלט אודיו ופלט אודיו משפיעים לרעה על היכולת של המודל להשתמש בקריאות לפונקציות.
ספירת הטוקנים
אין תמיכה בספירת טוקנים.
מגבלות קצב
אלה מגבלות השימוש שחלות:
- 5,000 ביקורים בו-זמניים לכל פרויקט
- 4 מיליון טוקנים בדקה
הודעות ואירועים
BidiGenerateContentClientContent
עדכון מצטבר של השיחה הנוכחית שמועבר מהלקוח. כל התוכן כאן מצורף ללא תנאי להיסטוריית השיחות ומשמש כחלק מההנחיה למודל ליצירת תוכן.
הודעה שתופיע כאן תקטע את יצירת המודל הנוכחית.
| שדות | |
|---|---|
turns[] |
זה שינוי אופציונלי. התוכן שמצורף לשיחה הנוכחית עם המודל. בשביל שאילתות של תור יחיד, זהו מופע יחיד. בשאלות מרובות שלבים, זהו שדה חוזר שמכיל את היסטוריית השיחות והבקשה האחרונה. |
turn_complete |
זה שינוי אופציונלי. אם הערך הוא true, המשמעות היא שיצירת התוכן בשרת צריכה להתחיל עם ההנחיה שנצברה עד עכשיו. אחרת, השרת ימתין להודעות נוספות לפני שיתחיל ליצור את התמונה. |
BidiGenerateContentRealtimeInput
קלט של משתמשים שנשלח בזמן אמת.
יש כמה הבדלים בין ClientContentUpdate לבין:
- אפשר לשלוח אותם ברציפות בלי להפריע ליצירת המודל.
- אם יש צורך לשלב נתונים שמופיעים לסירוגין ב-
ClientContentUpdateוב-RealtimeUpdate, השרת ינסה לבצע אופטימיזציה כדי לספק את התגובה הטובה ביותר, אבל אין ערובה לכך. - סוף התור לא מצוין באופן מפורש, אלא נגזר מפעילות המשתמש (לדוגמה, סוף הדיבור).
- גם לפני סוף התור, הנתונים מעובדים באופן מצטבר כדי לייעל את תחילת התשובה מהמודל.
- תמיד נחשב כקלט של המשתמש (אי אפשר להשתמש בו כדי לאכלס את היסטוריית השיחות).
| שדות | |
|---|---|
media_chunks[] |
זה שינוי אופציונלי. נתוני בייטים מוטבעים לקלט מדיה. |
activity_start |
זה שינוי אופציונלי. סימון תחילת פעילות משתמש. אפשר לשלוח את הנתונים האלה רק אם השבתתם את זיהוי הפעילות האוטומטי (כלומר, בצד השרת). |
activity_end |
זה שינוי אופציונלי. מציין את סוף פעילות המשתמש. אפשר לשלוח את הנתונים האלה רק אם השבתתם את זיהוי הפעילות האוטומטי (כלומר, בצד השרת). |
ActivityEnd
בסוג הזה אין שדות.
מציין את סוף פעילות המשתמש.
ActivityStart
בסוג הזה אין שדות.
צריך להגדיר רק אחד מהשדות בהודעה בכל פעם. סימון תחילת פעילות משתמש.
BidiGenerateContentServerContent
עדכון מצטבר של השרת שנוצר על ידי המודל בתגובה להודעות מהלקוח.
התוכן נוצר כמה שיותר מהר, ולא בזמן אמת. הלקוחות יכולים לבחור להשהות את ההפעלה ולצפות בה בזמן אמת.
| שדות | |
|---|---|
turn_complete |
פלט בלבד. אם הערך הוא True, המשמעות היא שהמודל סיים את היצירה. היצירה תתחיל רק בתגובה להודעות נוספות מהלקוח. אפשר להגדיר אותו לצד |
interrupted |
פלט בלבד. אם הערך הוא True, המשמעות היא שהודעה מלקוח קטעה את יצירת המודל הנוכחית. אם הלקוח מפעיל את התוכן בזמן אמת, זהו אות טוב להפסיק ולרוקן את התור הנוכחי. אם הלקוח מפעיל את התוכן בזמן אמת, זהו אות טוב להפסיק ולרוקן את תור ההפעלה הנוכחי. |
generation_complete |
פלט בלבד. אם הערך הוא True, המשמעות היא שהמודל סיים את היצירה. אם יש הפרעה ליצירת התוכן על ידי המודל, לא תופיע ההודעה generation_complete בתור שהופרע, והתהליך יהיה interrupted > turn_complete. כשהמודל מניח שההפעלה מתבצעת בזמן אמת, יהיה עיכוב בין generation_complete לבין turn_complete, כי המודל ימתין עד שההפעלה תסתיים. |
grounding_metadata |
פלט בלבד. המטא-נתונים מציינים את המקורות ששימשו ליצירת התוכן. |
input_transcription |
זה שינוי אופציונלי. תמלול קלט. התמלול לא תלוי בתור של המודל, כלומר אין סדר מסוים בין התמלול לבין התור של המודל. |
output_transcription |
זה שינוי אופציונלי. תמליל הפלט. התמלול לא תלוי בתור של המודל, כלומר אין סדר מסוים בין התמלול לבין התור של המודל. |
model_turn |
פלט בלבד. התוכן שהמודל יצר כחלק מהשיחה הנוכחית עם המשתמש. |
תמלול
הודעה על תמלול אודיו.
| שדות | |
|---|---|
text |
זה שינוי אופציונלי. טקסט התמלול. |
finished |
זה שינוי אופציונלי. הערך הבוליאני מציין את סוף התמליל. |
BidiGenerateContentSetup
ההודעה שתישלח בהודעה הראשונה והיחידה מהלקוח. כולל הגדרה שתחול למשך סשן הסטרימינג.
הלקוחות צריכים להמתין להודעה BidiGenerateContentSetupComplete לפני שליחת הודעות נוספות.
| שדות | |
|---|---|
model |
חובה. השם המוגדר במלואו של מודל בעל התוכן הדיגיטלי. פורמט המודל של בעל התוכן הדיגיטלי: |
generation_config |
זה שינוי אופציונלי. הגדרות ליצירה. אין תמיכה בשדות הבאים:
|
system_instruction |
זה שינוי אופציונלי. ההוראות למודל שסופקו על ידי המשתמש. הערה: צריך להשתמש רק בטקסט בחלקים, והתוכן בכל חלק יהיה בפסקה נפרדת. |
tools[] |
זה שינוי אופציונלי. רשימה של
|
session_resumption |
זה שינוי אופציונלי. הגדרת מנגנון לחידוש סשן. אם הוא נכלל, השרת ישלח ללקוח הודעות |
context_window_compression |
זה שינוי אופציונלי. הגדרת מנגנון דחיסה של חלון ההקשר. אם האפשרות הזו נכללת, השרת יכווץ את חלון ההקשר כדי להתאים לאורך שצוין. |
realtime_input_config |
זה שינוי אופציונלי. הגדרת הטיפול בקלט בזמן אמת. |
input_audio_transcription |
זה שינוי אופציונלי. התמלול של הקלט תואם לשפה של קלט האודיו. |
output_audio_transcription |
זה שינוי אופציונלי. התמליל של הפלט תואם לקוד השפה שצוין לאודיו של הפלט. |
AudioTranscriptionConfig
בסוג הזה אין שדות.
הגדרת תמלול האודיו.
BidiGenerateContentSetupComplete
נשלח בתגובה להודעה מלקוח BidiGenerateContentSetup.
| שדות | |
|---|---|
session_id |
מזהה הסשן של הסשן. |
BidiGenerateContentToolCall
בקשה מהלקוח להפעיל את function_calls ולהחזיר את התשובות עם הערכים התואמים של id.
| שדות | |
|---|---|
function_calls[] |
פלט בלבד. הבקשה להפעלת פונקציה שרוצים לבצע. |
BidiGenerateContentToolCallCancellation
התראה ללקוח על כך שToolCallMessage שהונפק בעבר עם ids שצוינו לא בוצע וצריך לבטל אותו. אם היו תופעות לוואי לקריאות האלה לכלים, יכול להיות שהלקוחות ינסו לבטל את הקריאות לכלים. ההודעה הזו מופיעה רק במקרים שבהם הלקוחות קוטעים את התורות של השרת.
| שדות | |
|---|---|
ids[] |
פלט בלבד. המזהים של קריאות הכלים שרוצים לבטל. |
BidiGenerateContentToolResponse
תגובה שנוצרה על ידי הלקוח ל-ToolCall שהתקבל מהשרת. אובייקטים ספציפיים מסוג FunctionResponse משויכים לאובייקטים המתאימים מסוג FunctionCall באמצעות השדה id.
שימו לב: בממשקי GenerateContent API של unary ושל server-streaming, קריאה לפונקציה מתבצעת על ידי החלפת החלקים Content, ואילו בממשקי GenerateContent API של bidi, קריאה לפונקציה מתבצעת באמצעות קבוצת ההודעות הייעודית הזו.
| שדות | |
|---|---|
function_responses[] |
זה שינוי אופציונלי. התשובה לבקשות להפעלת פונקציות. |
RealtimeInputConfig
הגדרת התנהגות הקלט בזמן אמת ב-BidiGenerateContent.
| שדות | |
|---|---|
automatic_activity_detection |
זה שינוי אופציונלי. אם לא מגדירים את ההגדרה הזו, זיהוי הפעילות האוטומטי מופעל כברירת מחדל. אם השבתתם את זיהוי הקול האוטומטי, הלקוח צריך לשלוח אותות פעילות. |
activity_handling |
זה שינוי אופציונלי. הגדרה של ההשפעה של הפעילות. |
turn_coverage |
זה שינוי אופציונלי. הגדרה של הקלט שייכלל בתור של המשתמש. |
ActivityHandling
הדרכים השונות לטיפול בפעילות המשתמשים.
| טיפוסים בני מנייה (enum) | |
|---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
אם לא מציינים ערך, ברירת המחדל היא START_OF_ACTIVITY_INTERRUPTS. |
START_OF_ACTIVITY_INTERRUPTS |
אם הערך הוא True, התחלת הפעילות תקטע את התגובה של המודל (נקראת גם 'התפרצות'). התשובה הנוכחית של המודל תיקטע ברגע ההפרעה. זו התנהגות ברירת המחדל. |
NO_INTERRUPTION |
התשובה של המודל לא תיקטע. |
AutomaticActivityDetection
ההגדרה קובעת את האפשרויות לזיהוי אוטומטי של פעילות.
| שדות | |
|---|---|
start_of_speech_sensitivity |
זה שינוי אופציונלי. קובע את הסבירות לזיהוי דיבור. |
end_of_speech_sensitivity |
זה שינוי אופציונלי. קובעת את הסבירות לכך שהדיבור שזוהה הסתיים. |
prefix_padding_ms |
זה שינוי אופציונלי. משך הזמן הנדרש של דיבור שזוהה לפני שמתבצעת התחייבות לתחילת הדיבור. ככל שהערך הזה נמוך יותר, כך הזיהוי של תחילת הדיבור רגיש יותר, ואפשר לזהות דיבור קצר יותר. עם זאת, זה גם מגדיל את הסבירות לתוצאות חיוביות כוזבות. |
silence_duration_ms |
זה שינוי אופציונלי. משך הזמן הנדרש של שקט (או של קול שאינו דיבור) שזוהה לפני שמתבצעת פעולה של סיום הדיבור. ככל שהערך הזה גדול יותר, כך יכולים להיות פערים ארוכים יותר בדיבור בלי להפריע לפעילות המשתמש, אבל זה יגדיל את זמן האחזור של המודל. |
disabled |
זה שינוי אופציונלי. אם ההגדרה הזו מופעלת, זיהוי קול והזנת טקסט נחשבים כפעילות. אם ההגדרה מושבתת, הלקוח צריך לשלוח אותות פעילות. |
EndSensitivity
סוף הרגישות לדיבור.
| טיפוסים בני מנייה (enum) | |
|---|---|
END_SENSITIVITY_UNSPECIFIED |
ברירת המחדל היא END_SENSITIVITY_LOW. |
END_SENSITIVITY_HIGH |
זיהוי אוטומטי מסיים את הדיבור לעיתים קרובות יותר. |
END_SENSITIVITY_LOW |
זיהוי אוטומטי מסיים את הדיבור בתדירות נמוכה יותר. |
StartSensitivity
תחילת הרגישות לדיבור.
| טיפוסים בני מנייה (enum) | |
|---|---|
START_SENSITIVITY_UNSPECIFIED |
ברירת המחדל היא START_SENSITIVITY_LOW. |
START_SENSITIVITY_HIGH |
הזיהוי האוטומטי יזהה את תחילת הדיבור בתדירות גבוהה יותר. |
START_SENSITIVITY_LOW |
הזיהוי האוטומטי יזהה את תחילת הדיבור בתדירות נמוכה יותר. |
TurnCoverage
אפשרויות לגבי הקלט שייכלל בתור של המשתמש.
| טיפוסים בני מנייה (enum) | |
|---|---|
TURN_COVERAGE_UNSPECIFIED |
אם לא מציינים ערך, ברירת המחדל היא TURN_INCLUDES_ALL_INPUT. |
TURN_INCLUDES_ONLY_ACTIVITY |
הפעילות שמתבצעת במהלך תור המשתמש כוללת רק את הפעילות שבוצעה מאז התור הקודם, לא כולל חוסר פעילות (למשל, שקט בזרם האודיו). |
TURN_INCLUDES_ALL_INPUT |
התור של המשתמש כולל את כל הקלט בזמן אמת מאז התור האחרון, כולל חוסר פעילות (למשל, שקט בזרם האודיו). זו התנהגות ברירת המחדל. |
UsageMetadata
מטא-נתונים על השימוש בתוכן שבמטמון.
| שדות | |
|---|---|
total_token_count |
המספר הכולל של האסימונים שהתוכן שנשמר במטמון צורך. |
text_count |
מספר התווים בטקסט. |
image_count |
מספר התמונות. |
video_duration_seconds |
משך הסרטון בשניות. |
audio_duration_seconds |
משך האודיו בשניות. |
GoAway
השרת לא יוכל לשרת את הלקוח בקרוב.
| שדות | |
|---|---|
time_left |
הזמן שנותר לפני שהחיבור יסתיים כשהסטטוס שלו יהיה ABORTED. הזמן המינימלי שמוחזר כאן מצוין באופן שונה יחד עם מגבלות הקצב של מודל נתון. |
SessionResumptionUpdate
עדכון של מצב חידוש הסשן.
הערך נשלח רק אם הוגדר BidiGenerateContentSetup.session_resumption.
| שדות | |
|---|---|
new_handle |
כינוי חדש שמייצג מצב שאפשר להמשיך ממנו. השדה ריק אם |
resumable |
הערך הוא True אם אפשר לחדש את הסשן בשלב הזה. יכול להיות שלא תהיה אפשרות לחזור לסשן בשלב מסוים. במקרה כזה, נשלח עדכון ריק של new_handle ו-resumable=false. דוגמה למקרה כזה יכולה להיות מודל שמבצע קריאות לפונקציות או פשוט יוצר תוכן. המשך של סשן (באמצעות טוקן לסשן קודם) במצב כזה יגרום לאובדן נתונים. |
last_consumed_client_message_index |
אינדקס של ההודעה האחרונה שנשלחה על ידי הלקוח, שכלולה במצב שמיוצג על ידי SessionResumptionToken הזה. ההודעה נשלחת רק אם מוגדר האינדקס הזה מאפשר למשתמשים להתחבר מחדש בצורה שקופה ולמנוע את הבעיה של אובדן חלק מהקלט האודיו או הווידאו בזמן אמת. אם הלקוח רוצה להתנתק באופן זמני (לדוגמה, כתוצאה מקבלת GoAway), הוא יכול לעשות זאת בלי לאבד את הסטטוס על ידי שמירת ההודעות שנשלחו מאז הוא לא ישמש ל 'המשך הפעלה כדי לשחזר את המצב' בשלב מאוחר יותר – במקרים כאלה, סביר להניח שלא יהיה צורך בפריים חלקי של אודיו ווידאו. |
המאמרים הבאים
- מידע נוסף על קריאה לפונקציות
- דוגמאות מופיעות בהפניה בנושא קריאה לפונקציות.