Live API یک API حالت دار است که از WebSockets استفاده می کند. در این بخش، جزئیات بیشتری در مورد WebSockets API خواهید یافت.
جلسات
یک اتصال WebSocket یک جلسه بین مشتری و سرور Gemini برقرار می کند. پس از اینکه یک کلاینت یک اتصال جدید را آغاز کرد، جلسه می تواند پیام هایی را با سرور مبادله کند:
- متن، صدا یا ویدیو را به سرور جمینی ارسال کنید.
- درخواستهای تماس صوتی، متنی یا عملکردی را از سرور Gemini دریافت کنید.
اتصال 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، به رویداد "پیام" 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 بیان نمی شود، بنابراین فیلد در سطح بالای پیام ظاهر می شود.)
پیام ها و رویدادها
پایان فعالیت
این نوع هیچ فیلدی ندارد.
پایان فعالیت کاربر را علامت گذاری می کند.
مدیریت فعالیت
روش های مختلف مدیریت فعالیت کاربر
Enums | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED | اگر مشخص نشده باشد، رفتار پیشفرض START_OF_ACTIVITY_INTERRUPTS است. |
START_OF_ACTIVITY_INTERRUPTS | اگر درست باشد، شروع فعالیت پاسخ مدل را قطع میکند (که به آن "بارگ در" نیز میگویند. پاسخ فعلی مدل در لحظه وقفه قطع خواهد شد. این رفتار پیش فرض است. |
NO_INTERRUPTION | پاسخ مدل قطع نخواهد شد. |
ActivityStart
این نوع هیچ فیلدی ندارد.
شروع فعالیت کاربر را علامت گذاری می کند.
AudioTranscriptionConfig
این نوع هیچ فیلدی ندارد.
پیکربندی رونویسی صوتی
AutomaticActivity Detection
تشخیص خودکار فعالیت را پیکربندی می کند.
فیلدها | |
---|---|
disabled | اختیاری. اگر فعال باشد (پیشفرض)، ورودی صوتی و نوشتاری شناساییشده بهعنوان فعالیت محسوب میشود. در صورت غیرفعال بودن، مشتری باید سیگنال های فعالیت ارسال کند. |
startOfSpeechSensitivity | اختیاری. میزان احتمال تشخیص گفتار را تعیین می کند. |
prefixPaddingMs | اختیاری. مدت زمان لازم برای گفتار شناسایی شده قبل از شروع گفتار متعهد است. هرچه این مقدار کمتر باشد، تشخیص شروع گفتار حساس تر است و گفتار کوتاه تری قابل تشخیص است. با این حال، این نیز احتمال مثبت کاذب را افزایش می دهد. |
endOfSpeechSensitivity | اختیاری. تعیین می کند که چقدر احتمال دارد گفتار شناسایی شده به پایان برسد. |
silenceDurationMs | اختیاری. مدت زمان مورد نیاز عدم گفتار شناسایی شده (مثلاً سکوت) قبل از پایان گفتار انجام شود. هرچه این مقدار بزرگتر باشد، شکاف گفتاری طولانیتر میتواند بدون وقفه در فعالیت کاربر باشد، اما این امر تأخیر مدل را افزایش میدهد. |
BidiGenerateContentClientContent
به روز رسانی افزایشی مکالمه فعلی که از مشتری تحویل داده می شود. تمام محتوای اینجا بدون قید و شرط به تاریخچه مکالمه اضافه می شود و به عنوان بخشی از درخواست مدل برای تولید محتوا استفاده می شود.
پیامی در اینجا هر نسل مدل فعلی را قطع می کند.
فیلدها | |
---|---|
turns[] | اختیاری. محتوا به مکالمه فعلی با مدل اضافه شده است. برای پرس و جوهای تک نوبتی، این یک نمونه است. برای جستجوهای چند نوبتی، این یک فیلد تکراری است که حاوی تاریخچه مکالمه و آخرین درخواست است. |
turnComplete | اختیاری. اگر درست باشد، نشان می دهد که تولید محتوای سرور باید با درخواست انباشته شده فعلی شروع شود. در غیر این صورت، سرور قبل از شروع تولید منتظر پیام های اضافی است. |
BidiGenerateContentRealtimeInput
ورودی کاربر که در زمان واقعی ارسال می شود.
روشهای مختلف (صوتی، ویدیویی و متنی) به عنوان جریانهای همزمان مدیریت میشوند. سفارش در این جریان ها تضمین نمی شود.
این از چند جهت با BidiGenerateContentClientContent
متفاوت است:
- می تواند به طور مداوم بدون وقفه به تولید مدل ارسال شود.
- اگر نیاز به ترکیب دادههای به هم پیوسته در
BidiGenerateContentClientContent
وBidiGenerateContentRealtimeInput
وجود داشته باشد، سرور تلاش میکند تا بهترین پاسخ را بهینه کند، اما هیچ تضمینی وجود ندارد. - پایان نوبت به صراحت مشخص نشده است، بلکه بیشتر از فعالیت کاربر مشتق شده است (مثلاً پایان گفتار).
- حتی قبل از پایان نوبت، داده ها به صورت تدریجی پردازش می شوند تا برای شروع سریع پاسخ از مدل بهینه شود.
فیلدها | |
---|---|
mediaChunks[] | اختیاری. داده بایت های خطی برای ورودی رسانه. چند منسوخ شده: به جای آن از یکی از |
audio | اختیاری. اینها جریان ورودی صوتی بیدرنگ را تشکیل می دهند. |
video | اختیاری. اینها جریان ورودی ویدیوی بیدرنگ را تشکیل می دهند. |
activityStart | اختیاری. شروع فعالیت کاربر را علامت گذاری می کند. این فقط در صورتی ارسال می شود که تشخیص فعالیت خودکار (یعنی سمت سرور) غیرفعال باشد. |
activityEnd | اختیاری. پایان فعالیت کاربر را علامت گذاری می کند. این فقط در صورتی ارسال می شود که تشخیص فعالیت خودکار (یعنی سمت سرور) غیرفعال باشد. |
audioStreamEnd | اختیاری. نشان می دهد که پخش صدا به پایان رسیده است، به عنوان مثال به دلیل خاموش بودن میکروفون. این فقط باید زمانی ارسال شود که تشخیص خودکار فعالیت فعال باشد (که پیشفرض است). مشتری می تواند با ارسال یک پیام صوتی، جریان را دوباره باز کند. |
text | اختیاری. اینها جریان ورودی متن بیدرنگ را تشکیل می دهند. |
BidiGenerateContentServerContent
به روز رسانی افزایشی سرور که توسط مدل در پاسخ به پیام های مشتری ایجاد می شود.
محتوا در سریع ترین زمان ممکن و نه در زمان واقعی تولید می شود. مشتریان ممکن است انتخاب کنند که بافر کنند و آن را در زمان واقعی پخش کنند.
فیلدها | |
---|---|
generationComplete | فقط خروجی اگر درست باشد، نشان می دهد که تولید مدل انجام شده است. هنگامی که مدل در حین تولید قطع میشود، هیچ پیام 'generation_complete' در نوبت قطع شده وجود نخواهد داشت، از 'interrupted > turn_complete' عبور میکند. وقتی مدل پخش بلادرنگ را فرض میکند، تاخیری بین نسل_کامل و turn_complete وجود خواهد داشت که ناشی از انتظار مدل برای پایان پخش است. |
turnComplete | فقط خروجی اگر درست باشد، نشان می دهد که مدل نوبت خود را کامل کرده است. تولید فقط در پاسخ به پیام های مشتری اضافی شروع می شود. |
interrupted | فقط خروجی اگر درست باشد، نشان می دهد که پیام مشتری تولید مدل فعلی را قطع کرده است. اگر مشتری در حال پخش محتوا در زمان واقعی است، این سیگنال خوبی برای توقف و خالی کردن صف پخش فعلی است. |
groundingMetadata | فقط خروجی متاداده پایه برای محتوای تولید شده. |
inputTranscription | فقط خروجی رونویسی صوتی ورودی رونویسی مستقل از سایر پیام های سرور ارسال می شود و هیچ سفارش تضمینی وجود ندارد. |
outputTranscription | فقط خروجی خروجی رونویسی صوتی رونویسی مستقل از سایر پیامهای سرور ارسال میشود و هیچ ترتیب تضمینی وجود ندارد، به ویژه نه بین |
modelTurn | فقط خروجی محتوایی که مدل به عنوان بخشی از مکالمه فعلی با کاربر تولید کرده است. |
BidiGenerateContentServerMessage
پیام پاسخ برای تماس BidiGenerateContent.
فیلدها | |
---|---|
usageMetadata | فقط خروجی استفاده از فراداده در مورد پاسخ(ها). |
messageType فیلد اتحادیه نوع پیام. messageType می تواند تنها یکی از موارد زیر باشد: | |
setupComplete | فقط خروجی در پاسخ به یک پیام |
serverContent | فقط خروجی محتوای تولید شده توسط مدل در پاسخ به پیام های مشتری. |
toolCall | فقط خروجی از کلاینت درخواست کنید تا |
toolCallCancellation | فقط خروجی اعلان برای مشتری مبنی بر اینکه یک |
goAway | فقط خروجی اطلاعیه ای مبنی بر اینکه سرور به زودی قطع خواهد شد. |
sessionResumptionUpdate | فقط خروجی به روز رسانی وضعیت از سرگیری جلسه. |
BidiGenerateContentSetup
پیامی که باید در اولین (و فقط در اولین) BidiGenerateContentClientMessage
ارسال شود. حاوی پیکربندی است که برای مدت زمان پخش جریانی RPC اعمال می شود.
مشتریان باید قبل از ارسال هرگونه پیام اضافی منتظر یک پیام BidiGenerateContentSetupComplete
باشند.
فیلدها | |
---|---|
model | مورد نیاز. نام منبع مدل این به عنوان شناسه ای برای استفاده از مدل عمل می کند. قالب: |
generationConfig | اختیاری. پیکربندی نسل فیلدهای زیر پشتیبانی نمی شوند:
|
systemInstruction | اختیاری. کاربر دستورالعمل های سیستمی را برای مدل ارائه کرد. توجه: فقط متن باید در قسمت ها استفاده شود و محتوا در هر قسمت در یک پاراگراف جداگانه خواهد بود. |
tools[] | اختیاری. فهرستی از |
realtimeInputConfig | اختیاری. مدیریت ورودی بلادرنگ را پیکربندی می کند. |
sessionResumption | اختیاری. مکانیزم از سرگیری جلسه را پیکربندی می کند. در صورت وجود، سرور پیام های |
contextWindowCompression | اختیاری. مکانیزم فشرده سازی پنجره زمینه را پیکربندی می کند. اگر شامل شود، سرور به طور خودکار اندازه زمینه را زمانی که از طول پیکربندی شده بیشتر شود، کاهش می دهد. |
inputAudioTranscription | اختیاری. در صورت تنظیم، رونویسی ورودی صوتی را فعال میکند. در صورت پیکربندی، رونویسی با زبان صوتی ورودی هماهنگ می شود. |
outputAudioTranscription | اختیاری. در صورت تنظیم، رونویسی خروجی صدای مدل را فعال می کند. در صورت پیکربندی، رونویسی با کد زبانی که برای صدای خروجی مشخص شده است، هماهنگ می شود. |
BidiGenerateContentSetupComplete
این نوع هیچ فیلدی ندارد.
در پاسخ به یک پیام BidiGenerateContentSetup
از مشتری ارسال شد.
BidiGenerateContentToolCall
از کلاینت درخواست کنید تا functionCalls
اجرا کند و پاسخ ها را با id
منطبق برگرداند.
فیلدها | |
---|---|
functionCalls[] | فقط خروجی فراخوانی تابعی که باید اجرا شود. |
BidiGenerateContentToolCallCancellation
اعلان برای مشتری مبنی بر اینکه یک ToolCallMessage
قبلا صادر شده با id
مشخص شده نباید اجرا شده باشد و باید لغو شود. اگر این تماسهای ابزار عوارض جانبی داشت، مشتریان ممکن است تلاش کنند تا تماسهای ابزار را لغو کنند. این پیام تنها در مواردی رخ میدهد که کلاینتها چرخش سرور را قطع کنند.
فیلدها | |
---|---|
ids[] | فقط خروجی شناسههای ابزار تماسهای لغو میشوند. |
BidiGenerateContentToolResponse
مشتری پاسخی به ToolCall
دریافت شده از سرور ایجاد کرد. اشیاء فردی FunctionResponse
با فیلد id
با اشیاء FunctionCall
مربوطه مطابقت داده می شوند.
توجه داشته باشید که در APIهای GenerateContent یکپارچه و جریان سرور، فراخوانی تابع با مبادله قسمتهای Content
انجام میشود، در حالی که در bidi GenerateContent API فراخوانی روی این مجموعه پیامهای اختصاصی انجام میشود.
فیلدها | |
---|---|
functionResponses[] | اختیاری. پاسخ به فراخوانی تابع. |
BidiGenerateContentTranscription
رونویسی صدا (ورودی یا خروجی).
فیلدها | |
---|---|
text | متن رونویسی. |
ContextWindowCompressionConfig
فشرده سازی پنجره زمینه را فعال می کند - مکانیزمی برای مدیریت پنجره زمینه مدل به گونه ای که از طول معینی تجاوز نکند.
فیلدها | |
---|---|
compressionMechanism میدان اتحادیه مکانیسم فشرده سازی پنجره زمینه استفاده شده است. compressionMechanism تنها می تواند یکی از موارد زیر باشد: | |
slidingWindow | مکانیزم پنجره کشویی |
triggerTokens | تعداد نشانهها (قبل از اجرای چرخش) مورد نیاز برای راهاندازی فشردهسازی پنجره زمینه. این می تواند برای متعادل کردن کیفیت در مقابل تأخیر استفاده شود زیرا پنجره های زمینه کوتاه تر ممکن است منجر به پاسخ های مدل سریعتر شود. با این حال، هر عملیات فشرده سازی باعث افزایش موقت تأخیر می شود، بنابراین نباید به طور مکرر فعال شوند. اگر تنظیم نشود، پیشفرض 80 درصد محدودیت پنجره زمینه مدل است. این 20% برای درخواست کاربر/پاسخ مدل بعدی باقی می ماند. |
End Sensitivity
نحوه تشخیص پایان گفتار را تعیین می کند.
Enums | |
---|---|
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 | درست است اگر بتوان جلسه فعلی را در این مرحله از سر گرفت. از سرگیری در برخی از نقاط جلسه امکان پذیر نیست. به عنوان مثال، زمانی که مدل در حال اجرای فراخوانی یا تولید تابع است. از سرگیری جلسه (با استفاده از رمز جلسه قبلی) در چنین حالتی منجر به از دست رفتن اطلاعات می شود. در این موارد، |
پنجره کشویی
روش SlidingWindow با حذف محتوا در ابتدای پنجره زمینه عمل می کند. زمینه به دست آمده همیشه با شروع چرخش نقش USER آغاز می شود. دستورالعمل های سیستم و هر BidiGenerateContentSetup.prefixTurns
همیشه در ابتدای نتیجه باقی می مانند.
فیلدها | |
---|---|
targetTokens | تعداد نشانه های مورد نظر برای نگه داشتن. مقدار پیش فرض trigger_tokens/2 است. دور انداختن بخشهایی از پنجره زمینه باعث افزایش موقت تأخیر میشود، بنابراین این مقدار باید برای جلوگیری از عملیات فشردهسازی مکرر کالیبره شود. |
StartSensitivity
نحوه تشخیص شروع گفتار را تعیین می کند.
Enums | |
---|---|
START_SENSITIVITY_UNSPECIFIED | پیشفرض START_SENSITIVITY_HIGH است. |
START_SENSITIVITY_HIGH | تشخیص خودکار شروع گفتار را بیشتر تشخیص می دهد. |
START_SENSITIVITY_LOW | تشخیص خودکار شروع گفتار را کمتر تشخیص می دهد. |
پوشش چرخشی
گزینه هایی در مورد اینکه کدام ورودی در نوبت کاربر گنجانده شده است.
Enums | |
---|---|
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
، به تولید محتوا مراجعه کنید.