Live API הוא ממשק API עם שמירת מצב שמשתמש ב-WebSockets. בקטע הזה מופיעים פרטים נוספים על WebSockets API.
ביקורים
חיבור WebSocket יוצר סשן בין הלקוח לבין שרת Gemini. אחרי שהלקוח יוצר חיבור חדש, הסשן יכול להחליף הודעות עם השרת כדי:
- שליחת טקסט, אודיו או וידאו לשרת Gemini.
- קבלת בקשות לשיחות אודיו, טקסט או פונקציות משרת Gemini.
חיבור WebSocket
כדי להתחיל סשן, צריך להתחבר לנקודת הקצה הזו של WebSocket:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
הגדרת הסשן
ההודעה הראשונית אחרי החיבור מגדירה את הגדרות הסשן, כולל המודל, הפרמטרים ליצירה, הוראות המערכת והכלים.
אפשר לשנות את פרמטרים ההגדרה, מלבד המודל, במהלך הסשן.
בהגדרה לדוגמה הבאה מוסבר איך עושים את זה. חשוב לזכור שיכול להיות שינוי באותיות הרישיות של השם ב-SDK. כאן אפשר למצוא את אפשרויות ההגדרה של Python SDK.
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object,
"mediaResolution": object
},
"systemInstruction": string,
"tools": [object]
}
מידע נוסף על שדה ה-API זמין במאמר generationConfig.
שליחת הודעות
כדי להחליף הודעות בחיבור WebSocket, הלקוח צריך לשלוח אובייקט JSON בחיבור WebSocket פתוח. אובייקט ה-JSON חייב לכלול רק שדה אחד מתוך קבוצת האובייקטים הבאה:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
הודעות לקוח נתמכות
בטבלה הבאה מפורטות ההודעות הנתמכות מהלקוח:
הודעה | תיאור |
---|---|
BidiGenerateContentSetup |
הגדרת הסשן שתשלח בהודעה הראשונה |
BidiGenerateContentClientContent |
עדכון מצטבר של התוכן של השיחה הנוכחית שנשלח מהלקוח |
BidiGenerateContentRealtimeInput |
קלט אודיו, וידאו או טקסט בזמן אמת |
BidiGenerateContentToolResponse |
תגובה להודעה ToolCallMessage שהתקבלה מהשרת |
קבלת הודעות
כדי לקבל הודעות מ-Gemini, צריך להאזין לאירוע 'message' ב-WebSocket, ואז לנתח את התוצאה בהתאם להגדרה של הודעות השרת הנתמכות.
תוכלו לעיין במקורות המידע הבאים:
async with client.aio.live.connect(model='...', config=config) as session:
await session.send(input='Hello world!', end_of_turn=True)
async for message in session.receive():
print(message)
הודעות שרת עשויות לכלול את השדה usageMetadata
, אבל אם לא, הן יכללו רק אחד מהשדות האחרים מההודעה BidiGenerateContentServerMessage
. (האיחוד messageType
לא מופיע ב-JSON, ולכן השדה יופיע ברמה העליונה של ההודעה).
הודעות ואירועים
ActivityEnd
אין שדות לסוג הזה.
סימן לסיום הפעילות של המשתמש.
ActivityHandling
הדרכים השונות לטיפול בפעילות המשתמשים.
טיפוסים בני מנייה (enum) | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
אם לא צוין, ברירת המחדל היא START_OF_ACTIVITY_INTERRUPTS . |
START_OF_ACTIVITY_INTERRUPTS |
אם הערך הוא true, התחלת הפעילות תפריע לתשובה של המודל (נקראת גם 'הפרעה'). התשובה הנוכחית של המודל תופסק ברגע ההפרעה. זאת התנהגות ברירת המחדל. |
NO_INTERRUPTION |
התגובה של המודל לא תופרע. |
ActivityStart
אין שדות לסוג הזה.
סימון של תחילת הפעילות של המשתמש.
AudioTranscriptionConfig
אין שדות לסוג הזה.
ההגדרה של תמלול האודיו.
AutomaticActivityDetection
הגדרת זיהוי אוטומטי של פעילות.
שדות | |
---|---|
disabled |
אופציונלי. אם ההגדרה הזו מופעלת (ברירת המחדל), הקלטת הקול והטקסט מזוהות כפעילות. אם ההגדרה הזו מושבתת, הלקוח צריך לשלוח אותות פעילות. |
startOfSpeechSensitivity |
אופציונלי. קובע את הסבירות לזיהוי דיבור. |
prefixPaddingMs |
אופציונלי. משך הזמן הנדרש של דיבור שזוהה לפני שמחויב האירוע 'תחילת דיבור'. ככל שהערך נמוך יותר, כך זיהוי תחילת הדיבור רגיש יותר וניתן לזהות דיבור קצר יותר. עם זאת, הדבר גם מגביר את הסבירות לקבלת תוצאות חיוביות כוזבות. |
endOfSpeechSensitivity |
אופציונלי. קובעת את הסבירות לכך שהדיבור שזוהה הסתיים. |
silenceDurationMs |
אופציונלי. משך הזמן הנדרש של זיהוי קטעי שתיקה (למשל, קטעי שתיקה) לפני שמתבצע אישור של סיום הדיבור. ככל שהערך הזה גדול יותר, כך יכולים להיות פערים ארוכים יותר בנאום בלי להפריע לפעילות של המשתמש, אבל ערך גבוה יותר יגביר את זמן האחזור של המודל. |
BidiGenerateContentClientContent
עדכון מצטבר של השיחה הנוכחית שנשלח מהלקוח. כל התוכן הזה מצורף ללא תנאים להיסטוריית השיחות, ומשמש כחלק מההנחיה למודל ליצירת תוכן.
הודעה כאן תפריע ליצירת מודל כלשהי.
שדות | |
---|---|
turns[] |
אופציונלי. התוכן שמצורף לשיחה הנוכחית עם המודל. בשאילתות עם תור אחד, זהו מופע יחיד. בשאילתות עם כמה תורנויות, זהו שדה חוזר שמכיל את היסטוריית השיחה ואת הבקשה האחרונה. |
turnComplete |
אופציונלי. אם הערך הוא true, המשמעות היא שיצירת התוכן בשרת צריכה להתחיל עם ההנחיה שנצברה כרגע. אחרת, השרת ימתין להודעות נוספות לפני שהוא יתחיל את היצירה. |
BidiGenerateContentRealtimeInput
קלט של משתמש שנשלח בזמן אמת.
המודלים השונים (אודיו, וידאו וטקסט) מטופלים כשידורים בו-זמניים. אין ערובה לסדר הזרמים האלה.
יש כמה הבדלים בין BidiGenerateContentClientContent
לבין BidiGenerateContentClientContent
:
- ניתן לשלוח אותם באופן רציף ללא הפרעה ליצירת המודל.
- אם יש צורך לשלב נתונים שמקובצים בין
BidiGenerateContentClientContent
ל-BidiGenerateContentRealtimeInput
, השרת מנסה לבצע אופטימיזציה כדי לקבל את התגובה הטובה ביותר, אבל אין ערובה לכך. - סוף התור לא מצוין באופן מפורש, אלא נגזר מפעילות המשתמש (לדוגמה, סוף הדיבור).
- עוד לפני סיום התור, הנתונים עוברים עיבוד מצטבר כדי לבצע אופטימיזציה להתחלה מהירה של התשובה מהמודל.
שדות | |
---|---|
mediaChunks[] |
אופציונלי. נתוני בייט מוטמעים לקלט מדיה. אין תמיכה בכמה הוצא משימוש: במקום זאת, צריך להשתמש באחד מהערכים |
audio |
אופציונלי. הם יוצרים את מקור הקלט של האודיו בזמן אמת. |
video |
אופציונלי. הם יוצרים את מקור הקלט של הווידאו בזמן אמת. |
activityStart |
אופציונלי. סימון של תחילת הפעילות של המשתמש. אפשר לשלוח את הבקשה הזו רק אם זיהוי הפעילות האוטומטי (כלומר בצד השרת) מושבת. |
activityEnd |
אופציונלי. סימן לסיום הפעילות של המשתמש. אפשר לשלוח את הבקשה הזו רק אם זיהוי הפעילות האוטומטי (כלומר בצד השרת) מושבת. |
audioStreamEnd |
אופציונלי. סימן לכך שזרם האודיו הסתיים, למשל כי המיקרופון כבוי. צריך לשלוח את האירוע הזה רק כשהאפשרות לזיהוי אוטומטי של פעילות מופעלת (זוהי ברירת המחדל). הלקוח יכול לפתוח מחדש את הסטרימינג על ידי שליחת הודעת אודיו. |
text |
אופציונלי. הם יוצרים את מקור הקלט של הטקסט בזמן אמת. |
BidiGenerateContentServerContent
עדכון מצטבר של השרת שנוצר על ידי המודל בתגובה להודעות של לקוחות.
התוכן נוצר במהירות האפשרית, ולא בזמן אמת. לקוחות יכולים לבחור לאגור את הנתונים ולנגן אותם בזמן אמת.
שדות | |
---|---|
generationComplete |
פלט בלבד. אם הערך הוא True, המשמעות היא שהמודל הושלם. אם המודל יופסק במהלך היצירה, לא תופיע ההודעה generation_complete בתור מושעה. הוא יעבור את המצב interrupted > turn_complete. כשהמודל מניח שהפעלה מתבצעת בזמן אמת, יהיה עיכוב בין האירועים generation_complete ו-turn_complete שנגרם בגלל שהמודל ממתין לסיום ההפעלה. |
turnComplete |
פלט בלבד. אם הערך הוא True, המשמעות היא שהמודל השלים את התור שלו. היצירה תתחיל רק בתגובה להודעות נוספות מהלקוח. |
interrupted |
פלט בלבד. אם הערך הוא true, המשמעות היא שהודעה של לקוח הפריעה ליצירת המודל הנוכחית. אם הלקוח מפעיל את התוכן בזמן אמת, זה סימן טוב להפסיק ולרוקן את תור ההפעלה הנוכחי. |
groundingMetadata |
פלט בלבד. מטא-נתונים של התוכן שנוצר. |
outputTranscription |
פלט בלבד. פלט של תמליל אודיו. התמליל נשלח בנפרד מהודעות אחרות מהשרת, ואין הבטחה לסדר מסוים, במיוחד לא בין |
modelTurn |
פלט בלבד. התוכן שהמודל יצר כחלק מהשיחה הנוכחית עם המשתמש. |
BidiGenerateContentServerMessage
הודעת התגובה לשיחה BidiGenerateContent.
שדות | |
---|---|
usageMetadata |
פלט בלבד. מטא-נתונים של שימוש לגבי התשובות. |
שדה האיחוד messageType . סוג ההודעה. הערך של messageType יכול להיות רק אחת מהאפשרויות הבאות: |
|
setupComplete |
פלט בלבד. נשלחת בתגובה להודעת |
serverContent |
פלט בלבד. תוכן שנוצר על ידי המודל בתגובה להודעות של לקוחות. |
toolCall |
פלט בלבד. מבקשים מהלקוח להריץ את |
toolCallCancellation |
פלט בלבד. הודעה ללקוח על כך שצריך לבטל |
goAway |
פלט בלבד. הודעה על כך שהשרת ינותק בקרוב. |
sessionResumptionUpdate |
פלט בלבד. עדכון של מצב ההמשך של הסשן. |
BidiGenerateContentSetup
ההודעה שנשלחת ב-BidiGenerateContentClientMessage
הראשון (ורק ב-BidiGenerateContentClientMessage
הראשון). מכיל הגדרות שחלות למשך ה-RPC בסטרימינג.
לקוחות צריכים להמתין להודעה BidiGenerateContentSetupComplete
לפני שליחת הודעות נוספות.
שדות | |
---|---|
model |
חובה. שם המשאב של הדגם. זהו מזהה לשימוש במודל. פורמט: |
generationConfig |
אופציונלי. הגדרות היצירה. אין תמיכה בשדות הבאים:
|
systemInstruction |
אופציונלי. המשתמש סיפק הוראות מערכת עבור המודל. הערה: צריך להשתמש רק בטקסט בחלקים, והתוכן בכל חלק יהיה בפסקה נפרדת. |
tools[] |
אופציונלי. רשימה של
|
realtimeInputConfig |
אופציונלי. הגדרת הטיפול בקלט בזמן אמת. |
sessionResumption |
אופציונלי. הגדרת מנגנון להמשך סשן. אם השדה הזה נכלל, השרת ישלח הודעות |
contextWindowCompression |
אופציונלי. הגדרת מנגנון דחיסת חלון הקשר. אם תכללו את האפשרות הזו, השרת יפחית באופן אוטומטי את גודל ההקשר אם הוא חורג מהאורך שהוגדר. |
outputAudioTranscription |
אופציונלי. אם ההגדרה הזו מוגדרת, היא מאפשרת תמלול של פלט האודיו של המודל. התמליל יתאים לקוד השפה שצוין עבור אודיו הפלט, אם הוא הוגדר. |
BidiGenerateContentSetupComplete
אין שדות לסוג הזה.
נשלחה בתגובה להודעת BidiGenerateContentSetup
מהלקוח.
BidiGenerateContentToolCall
מבקשים מהלקוח להריץ את functionCalls
ולהחזיר את התשובות עם הערכים התואמים של id
.
שדות | |
---|---|
functionCalls[] |
פלט בלבד. קריאת הפונקציה שרוצים לבצע. |
BidiGenerateContentToolCallCancellation
הודעה ללקוח על כך שלא היה צריך לבצע את ה-ToolCallMessage
שהונפק בעבר עם הערכים של id
שצוינו, ויש לבטל אותו. אם היו תופעות לוואי לקריאות האלה לכלי, לקוחות עשויים לנסות לבטל את הקריאות לכלי. ההודעה הזו מופיעה רק במקרים שבהם הלקוחות מפריעים לסבבים של השרת.
שדות | |
---|---|
ids[] |
פלט בלבד. המזהים של הקריאות לכלי שרוצים לבטל. |
BidiGenerateContentToolResponse
תגובה שנוצרה על ידי הלקוח לתגובה ToolCall
שהתקבלה מהשרת. אובייקטים ספציפיים מסוג FunctionResponse
מותאמים לאובייקטים המתאימים מסוג FunctionCall
באמצעות השדה id
.
חשוב לזכור שבקריאות לפונקציות של GenerateContent API חד-כיווניות ושל GenerateContent API בסטרימינג לשרת, הקריאה מתבצעת על ידי החלפה של החלקים Content
, ואילו בקריאות לפונקציות של GenerateContent API דו-כיווניות, הקריאה מתבצעת באמצעות קבוצת ההודעות הייעודית הזו.
שדות | |
---|---|
functionResponses[] |
אופציונלי. התגובה לקריאות הפונקציה. |
BidiGenerateContentTranscription
תמליל של אודיו (קלט או פלט).
שדות | |
---|---|
text |
טקסט התמליל. |
ContextWindowCompressionConfig
הפעלת דחיסת חלון ההקשר – מנגנון לניהול חלון ההקשר של המודל כך שלא יחרוג מאורך נתון.
שדות | |
---|---|
שדה האיחוד compressionMechanism . מנגנון הדחיסה של חלון ההקשר שבו נעשה שימוש. הערך של compressionMechanism יכול להיות רק אחת מהאפשרויות הבאות: |
|
slidingWindow |
מנגנון של חלון הזזה. |
triggerTokens |
מספר האסימונים (לפני הרצת תור) שנדרשים כדי להפעיל דחיסה של חלון ההקשר. אפשר להשתמש באפשרות הזו כדי לאזן בין איכות לבין זמן אחזור, כי חלונות הקשר קצרים יותר עשויים להוביל לתשובות מהירות יותר מהמודל. עם זאת, כל פעולת דחיסה תגרום לעלייה זמנית בזמן האחזור, ולכן לא מומלץ להפעיל אותן בתדירות גבוהה. אם לא מגדירים את הערך, ברירת המחדל היא 80% מהמגבלה של חלון ההקשר של המודל. כך נשארים 20% לבקשה הבאה של המשתמש או לתשובה הבאה של המודל. |
EndSensitivity
קובעת איך מזוהה סיום הדיבור.
טיפוסים בני מנייה (enum) | |
---|---|
END_SENSITIVITY_UNSPECIFIED |
ערך ברירת המחדל הוא END_SENSITIVITY_HIGH. |
END_SENSITIVITY_HIGH |
הזיהוי האוטומטי מסיים את הדיבור בתדירות גבוהה יותר. |
END_SENSITIVITY_LOW |
זיהוי אוטומטי מסיים את הדיבור בתדירות נמוכה יותר. |
GoAway
הודעה על כך שהשרת ינותק בקרוב.
שדות | |
---|---|
timeLeft |
הזמן שנותר עד לסיום החיבור יופיע כ-ABORTED. משך הזמן הזה לעולם לא יהיה קצר יותר מהמשך הזמן המינימלי שספציפי לדגם, שיצוין יחד עם מגבלות הקצב לדגם. |
RealtimeInputConfig
הגדרת התנהגות הקלט בזמן אמת ב-BidiGenerateContent
.
שדות | |
---|---|
automaticActivityDetection |
אופציונלי. אם לא מגדירים את האפשרות הזו, זיהוי הפעילות האוטומטי מופעל כברירת מחדל. אם זיהוי הקול האוטומטי מושבת, הלקוח צריך לשלוח אותות פעילות. |
activityHandling |
אופציונלי. מגדיר את ההשפעה של הפעילות. |
turnCoverage |
אופציונלי. מגדיר איזה קלט ייכלל בתורו של המשתמש. |
SessionResumptionConfig
הגדרה של המשך סשן.
ההודעה הזו כלולה בהגדרות הסשן בתור BidiGenerateContentSetup.sessionResumption
. אם ההגדרה הזו מופעלת, השרת ישלח הודעות SessionResumptionUpdate
.
שדות | |
---|---|
handle |
הכינוי של סשן קודם. אם הוא לא קיים, נוצר סשן חדש. מזהי הסשנים מגיעים מערכים של |
SessionResumptionUpdate
עדכון של מצב ההמשך של הסשן.
השדה נשלח רק אם BidiGenerateContentSetup.sessionResumption
הוגדר.
שדות | |
---|---|
newHandle |
כינוי חדש שמייצג מצב שאפשר להמשיך ממנו. הערך יהיה ריק אם |
resumable |
הערך True אם אפשר להמשיך את הסשן הנוכחי בשלב הזה. אי אפשר להמשיך את הסשן בנקודות מסוימות. לדוגמה, כשהמודל מבצע קריאות פונקציה או יוצר. המשך הסשן (באמצעות אסימון סשן קודם) במצב כזה יוביל לאובדן חלק מהנתונים. במקרים כאלה, השדה |
SlidingWindow
השיטה SlidingWindow פועלת על ידי הטלת תוכן בתחילת חלון ההקשר. ההקשר שייווצר תמיד יתחיל בתחילת תורו של משתמש בתפקיד USER. הוראות המערכת וכל BidiGenerateContentSetup.prefixTurns
תמיד יישארו בתחילת התוצאה.
שדות | |
---|---|
targetTokens |
מספר הטוקנים היעד שרוצים לשמור. ערך ברירת המחדל הוא trigger_tokens/2. ביטול חלקים מחלון ההקשר גורם לעלייה זמנית בזמן האחזור, לכן צריך לכוונן את הערך הזה כדי להימנע מפעולות דחיסה תכופות. |
StartSensitivity
קובעת איך נקבע תחילת הדיבור.
טיפוסים בני מנייה (enum) | |
---|---|
START_SENSITIVITY_UNSPECIFIED |
ערך ברירת המחדל הוא START_SENSITIVITY_HIGH. |
START_SENSITIVITY_HIGH |
זיהוי אוטומטי יזהה את תחילת הדיבור בתדירות גבוהה יותר. |
START_SENSITIVITY_LOW |
זיהוי אוטומטי יזהה את תחילת הדיבור בתדירות נמוכה יותר. |
TurnCoverage
אפשרויות לגבי הקלט שייכלל בתור של המשתמש.
טיפוסים בני מנייה (enum) | |
---|---|
TURN_COVERAGE_UNSPECIFIED |
אם לא צוין, ברירת המחדל היא TURN_INCLUDES_ONLY_ACTIVITY . |
TURN_INCLUDES_ONLY_ACTIVITY |
תורו של המשתמש כולל רק פעילות מאז התור הקודם, לא כולל חוסר פעילות (למשל, שקט בשידור האודיו). זאת התנהגות ברירת המחדל. |
TURN_INCLUDES_ALL_INPUT |
תורו של המשתמש כולל את כל הקלט בזמן אמת מאז התור הקודם, כולל חוסר פעילות (למשל, שקט בשידור האודיו). |
UsageMetadata
מטא-נתונים של שימוש לגבי תשובות.
שדות | |
---|---|
promptTokenCount |
פלט בלבד. מספר האסימונים בהנחיה. כשהערך של |
cachedContentTokenCount |
מספר הטוקנים בחלק של ההנחיה שנשמר במטמון (התוכן שנשמר במטמון) |
responseTokenCount |
פלט בלבד. המספר הכולל של האסימונים בכל המועמדים לתשובה שנוצרו. |
toolUsePromptTokenCount |
פלט בלבד. מספר הטוקנים שמופיעים בהנחיות לשימוש בכלי. |
thoughtsTokenCount |
פלט בלבד. מספר הטוקנים של המחשבות בדגמי החשיבה. |
totalTokenCount |
פלט בלבד. המספר הכולל של הטוקנים בבקשה ליצירה (הנחיה + מועמדים לתגובה). |
promptTokensDetails[] |
פלט בלבד. רשימת המודלים שעברו עיבוד בקלט הבקשה. |
cacheTokensDetails[] |
פלט בלבד. רשימת המודלים של התוכן שנשמר במטמון בקלט הבקשה. |
responseTokensDetails[] |
פלט בלבד. רשימת המודלים שהוחזרו בתגובה. |
toolUsePromptTokensDetails[] |
פלט בלבד. רשימה של המודלים שעברו עיבוד עבור קלט של בקשות לשימוש בכלים. |
מידע נוסף על סוגי קבצים נפוצים
מידע נוסף על סוגי המשאבים הנפוצים ב-API Blob
, Content
, FunctionCall
, FunctionResponse
, GenerationConfig
, GroundingMetadata
, ModalityTokenCount
ו-Tool
זמין במאמר יצירת תוכן.