Live API, WebSockets kullanan durum bilgisine sahip bir API'dir. Bu bölümde, WebSockets API ile ilgili ek ayrıntılar bulabilirsiniz.
Oturum sayısı
WebSocket bağlantısı, istemci ile Gemini sunucusu arasında bir oturum oluşturur. Bir istemci yeni bir bağlantı başlattıktan sonra oturum, sunucuyla mesaj alışverişinde bulunarak şunları yapabilir:
- Gemini sunucusuna metin, ses veya video gönderme.
- Gemini sunucusundan ses, metin veya işlev çağrısı istekleri alma
WebSocket bağlantısı
Oturum başlatmak için şu websocket uç noktasına bağlanın:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
Oturum yapılandırması
Bağlantı kurulduktan sonraki ilk mesaj, model, oluşturma parametreleri, sistem talimatları ve araçları içeren oturum yapılandırmasını ayarlar.
Oturum sırasında model dışındaki yapılandırma parametrelerini değiştirebilirsiniz.
Aşağıdaki örnek yapılandırmaya bakın. SDK'lardaki ad büyük/küçük harf kullanımında farklılıklar olabileceğini unutmayın. Python SDK yapılandırma seçeneklerini buradan inceleyebilirsiniz.
{
"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 alanı hakkında daha fazla bilgi için generationConfig bölümüne bakın.
Mesaj gönderin
WebSocket bağlantısı üzerinden mesaj alışverişi yapmak için istemcinin açık bir WebSocket bağlantısı üzerinden JSON nesnesi göndermesi gerekir. JSON nesnesi, aşağıdaki nesne grubundaki alanlardan tam olarak birine sahip olmalıdır:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
Desteklenen istemci mesajları
Desteklenen istemci mesajlarını aşağıdaki tabloda görebilirsiniz:
Mesaj | Açıklama |
---|---|
BidiGenerateContentSetup |
İlk mesajda gönderilecek oturum yapılandırması |
BidiGenerateContentClientContent |
İstemciden gönderilen mevcut sohbetin artımlı içerik güncellemesi |
BidiGenerateContentRealtimeInput |
Gerçek zamanlı ses, video veya metin girişi |
BidiGenerateContentToolResponse |
Sunucudan alınan ToolCallMessage yanıtı |
İleti alma
Gemini'den mesaj almak için WebSocket "mesaj" etkinliğini dinleyin ve ardından sonucu, desteklenen sunucu mesajlarının tanımına göre ayrıştırın.
Aşağıdakilere bakın:
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)
Sunucu mesajlarında usageMetadata
alanı bulunabilir ancak bu alan dışında BidiGenerateContentServerMessage
mesajındaki diğer alanlardan tam olarak bir alan yer alır. (messageType
birleştirme işlemi JSON'da ifade edilmediğinden alan, mesajın üst düzeyinde görünür.)
Mesajlar ve etkinlikler
ActivityEnd
Bu türde alan yoktur.
Kullanıcı etkinliğinin sonunu işaret eder.
ActivityHandling
Kullanıcı etkinliğini işleme yöntemleri.
Sıralamalar | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
Belirtilmemişse varsayılan davranış START_OF_ACTIVITY_INTERRUPTS olur. |
START_OF_ACTIVITY_INTERRUPTS |
Doğru ise etkinliğin başlatılması, modelin yanıtını kesintiye uğratır ("ara verme" olarak da bilinir). Modelin mevcut yanıtı, kesinti anında kesilir. Bu varsayılan davranıştır. |
NO_INTERRUPTION |
Modelin yanıtı kesintiye uğramaz. |
ActivityStart
Bu türde alan yoktur.
Kullanıcı etkinliğinin başlangıcını işaret eder.
AudioTranscriptionConfig
Bu türde alan yoktur.
Ses transkripti yapılandırması.
AutomaticActivityDetection
Etkinliğin otomatik olarak algılanmasını yapılandırır.
Alanlar | |
---|---|
disabled |
İsteğe bağlı. Etkinleştirilirse (varsayılan) algılanan ses ve metin girişi etkinlik olarak sayılır. Devre dışı bırakılırsa istemcinin etkinlik sinyalleri göndermesi gerekir. |
startOfSpeechSensitivity |
İsteğe bağlı. Konuşmanın algılanma olasılığını belirler. |
prefixPaddingMs |
İsteğe bağlı. Konuşma başlangıcı kaydedilmeden önce algılanan konuşmanın gerekli süresi. Bu değer ne kadar düşük olursa konuşma başlangıcı algılama o kadar hassas olur ve daha kısa konuşmalar tanınabilir. Ancak bu, yanlış pozitif olasılığını da artırır. |
endOfSpeechSensitivity |
İsteğe bağlı. Algılanan konuşmanın sona erme olasılığını belirler. |
silenceDurationMs |
İsteğe bağlı. Konuşma sonu kaydedilmeden önce algılanan konuşma dışı seslerin (ör. sessizlik) gerekli süresi. Bu değer ne kadar büyük olursa kullanıcının etkinliğini kesintiye uğratmadan konuşma aralıkları o kadar uzun olabilir ancak bu, modelin gecikmesini artırır. |
BidiGenerateContentClientContent
İstemciden gönderilen mevcut sohbetin artımlı güncellemesi. Buradaki tüm içerikler koşulsuz olarak ileti dizisi geçmişine eklenir ve içerik oluşturmak için modele verilen istemin bir parçası olarak kullanılır.
Buradaki bir mesaj, mevcut model oluşturma işlemini kesintiye uğratır.
Alanlar | |
---|---|
turns[] |
İsteğe bağlı. Modelle olan mevcut görüşmeye eklenen içerik. Tek turlu sorgular için bu tek bir örnektir. Birden fazla dönüş içeren sorgular için bu, sohbet geçmişini ve son isteği içeren yinelenen bir alandır. |
turnComplete |
İsteğe bağlı. Doğru ise sunucu içeriği oluşturma işleminin, şu anda birikmiş istemle başlaması gerektiğini belirtir. Aksi takdirde sunucu, oluşturma işlemini başlatmadan önce ek mesaj bekler. |
BidiGenerateContentRealtimeInput
Gerçek zamanlı olarak gönderilen kullanıcı girişi.
Farklı modlar (ses, video ve metin) eşzamanlı akışlar olarak işlenir. Bu akışlardaki sıralama garanti edilmez.
Bu, BidiGenerateContentClientContent
'ten birkaç açıdan farklıdır:
- Model oluşturma işlemine kesinti vermeden sürekli olarak gönderilebilir.
BidiGenerateContentClientContent
veBidiGenerateContentRealtimeInput
arasında ardışık olarak yerleştirilmiş verileri karıştırmak gerekirse sunucu en iyi yanıt için optimizasyon yapmaya çalışır ancak bu konuda garanti verilmez.- Sıranın sonu açıkça belirtilmez, bunun yerine kullanıcı etkinliğinden (ör. konuşmanın sonu) türetilir.
- Dönüş bitmeden önce bile veriler, modelden gelen yanıtın hızlı bir şekilde başlatılması için optimize edilmek üzere artımlı olarak işlenir.
Alanlar | |
---|---|
mediaChunks[] |
İsteğe bağlı. Medya girişi için satır içi bayt verileri. Birden fazla KULLANIMDAN KALDIRILDI: Bunun yerine |
audio |
İsteğe bağlı. Bunlar, gerçek zamanlı ses giriş akışını oluşturur. |
video |
İsteğe bağlı. Bunlar, gerçek zamanlı video giriş akışını oluşturur. |
activityStart |
İsteğe bağlı. Kullanıcı etkinliğinin başlangıcını işaret eder. Bu yalnızca otomatik (ör. sunucu tarafı) etkinlik algılama devre dışıysa gönderilebilir. |
activityEnd |
İsteğe bağlı. Kullanıcı etkinliğinin sonunu işaret eder. Bu yalnızca otomatik (ör. sunucu tarafı) etkinlik algılama devre dışıysa gönderilebilir. |
audioStreamEnd |
İsteğe bağlı. Mikrofonun kapatılması gibi nedenlerle ses akışının sona erdiğini gösterir. Bu yalnızca otomatik etkinlik algılama etkinleştirildiğinde (varsayılan olarak etkindir) gönderilmelidir. İstemci, sesli mesaj göndererek yayını yeniden açabilir. |
text |
İsteğe bağlı. Bunlar, anlık metin giriş akışını oluşturur. |
BidiGenerateContentServerContent
İstemci mesajlarına yanıt olarak model tarafından oluşturulan artımlı sunucu güncellemesi.
İçerik, gerçek zamanlı olarak değil, mümkün olduğunca hızlı bir şekilde oluşturulur. İstemciler, içeriği arabelleğe alıp gerçek zamanlı olarak oynatmayı seçebilir.
Alanlar | |
---|---|
generationComplete |
Yalnızca çıkış. True (Doğru) ise modelin oluşturulmasının tamamlandığını gösterir. Model oluşturulurken kesintiye uğradığında kesintiye uğrayan turda "generation_complete" mesajı gönderilmez. "interrupted > turn_complete" mesajı gönderilir. Model gerçek zamanlı oynatmayı varsaydığında, generation_complete ile turn_complete arasında, modelin oynatmanın bitmesini beklemesinden kaynaklanan bir gecikme olur. |
turnComplete |
Yalnızca çıkış. Doğru ise modelin sırasını tamamladığını gösterir. Oluşturma işlemi yalnızca ek istemci mesajlarına yanıt olarak başlar. |
interrupted |
Yalnızca çıkış. Doğru ise bir istemci mesajının mevcut model oluşturma işlemini kesintiye uğrattığını gösterir. İstemci içeriği gerçek zamanlı olarak oynatıyorsa mevcut oynatma sırasını durdurup boşaltmak için iyi bir sinyaldir. |
groundingMetadata |
Yalnızca çıkış. Oluşturulan içerik için temel meta veriler. |
outputTranscription |
Yalnızca çıkış. Ses transkriptini çıkışa aktarın. Transkript, diğer sunucu mesajlarından bağımsız olarak gönderilir ve özellikle |
modelTurn |
Yalnızca çıkış. Modelin, kullanıcıyla devam eden görüşmenin bir parçası olarak oluşturduğu içerik. |
BidiGenerateContentServerMessage
BidiGenerateContent çağrısı için yanıt mesajı.
Alanlar | |
---|---|
usageMetadata |
Yalnızca çıkış. Yanıtlarla ilgili kullanım meta verileri. |
Birlik alanı messageType . Mesajın türü. messageType yalnızca aşağıdakilerden biri olabilir: |
|
setupComplete |
Yalnızca çıkış. Kurulum tamamlandığında istemciden gelen bir |
serverContent |
Yalnızca çıkış. İstemci mesajlarına yanıt olarak model tarafından oluşturulan içerik. |
toolCall |
Yalnızca çıkış. İstemciden |
toolCallCancellation |
Yalnızca çıkış. Belirtilen |
goAway |
Yalnızca çıkış. Sunucunun yakında bağlantısını keseceğini belirten bir bildirim. |
sessionResumptionUpdate |
Yalnızca çıkış. Oturum devam ettirme durumunun güncellenmesi. |
BidiGenerateContentSetup
İlk (ve yalnızca ilk) BidiGenerateContentClientMessage
'te gönderilecek mesaj. Akış RPC'si süresince geçerli olacak yapılandırmayı içerir.
Müşteriler ek mesaj göndermeden önce bir BidiGenerateContentSetupComplete
mesajı beklemelidir.
Alanlar | |
---|---|
model |
Zorunlu. Modelin kaynak adı. Bu, modelin kullanacağı bir kimlik görevi görür. Biçim: |
generationConfig |
İsteğe bağlı. Oluşturma yapılandırması. Aşağıdaki alanlar desteklenmez:
|
systemInstruction |
İsteğe bağlı. Kullanıcı, model için sistem talimatları sağladı. Not: Bölümlerde yalnızca metin kullanılmalıdır ve her bölümdeki içerik ayrı bir paragrafta yer alır. |
tools[] |
İsteğe bağlı. Modelin sonraki yanıtı oluşturmak için kullanabileceği
|
realtimeInputConfig |
İsteğe bağlı. Gerçek zamanlı girişin işlenmesini yapılandırır. |
sessionResumption |
İsteğe bağlı. Oturum devam ettirme mekanizmasını yapılandırır. Bu parametre dahil edilirse sunucu |
contextWindowCompression |
İsteğe bağlı. Bağlam penceresi sıkıştırma mekanizmasını yapılandırır. Bu parametre dahil edilirse sunucu, yapılandırılmış uzunluğu aştığında bağlamın boyutunu otomatik olarak azaltır. |
outputAudioTranscription |
İsteğe bağlı. Ayarlanırsa modelin ses çıkışının transkriptini etkinleştirir. Transkript, yapılandırılmışsa çıkış sesi için belirtilen dil koduyla uyumlu olur. |
BidiGenerateContentSetupComplete
Bu türde alan yoktur.
İstemciden gelen bir BidiGenerateContentSetup
mesajına yanıt olarak gönderilir.
BidiGenerateContentToolCall
İstemciden functionCalls
'yi yürütmesini ve eşleşen id
ile yanıtları döndürmesini isteyin.
Alanlar | |
---|---|
functionCalls[] |
Yalnızca çıkış. Yürütülecek işlev çağrısı. |
BidiGenerateContentToolCallCancellation
Belirtilen id
'ler içeren daha önce verilen bir ToolCallMessage
'nin yürütülmemesi ve iptal edilmesi gerektiğini müşteriye bildiren bildirim. Bu araç çağrılarının yan etkileri varsa istemciler araç çağrılarını geri almaya çalışabilir. Bu mesaj yalnızca istemcilerin sunucu sırasını kesintiye uğrattığı durumlarda gösterilir.
Alanlar | |
---|---|
ids[] |
Yalnızca çıkış. İptal edilecek araç çağrılarının kimlikleri. |
BidiGenerateContentToolResponse
Sunucudan alınan bir ToolCall
için istemci tarafından oluşturulan yanıt. Ayrı FunctionResponse
nesneleri, id
alanı tarafından ilgili FunctionCall
nesneleriyle eşleştirilir.
Tek değerli ve sunucudan aktarılan GenerateContent API'lerinde işlev çağrısının Content
parçalarının değiştirilmesiyle gerçekleştiğini, çift yönlü GenerateContent API'lerinde ise işlev çağrısının bu özel mesaj grubu üzerinden gerçekleştiğini unutmayın.
Alanlar | |
---|---|
functionResponses[] |
İsteğe bağlı. İşlev çağrılarına verilen yanıt. |
BidiGenerateContentTranscription
Ses transkripti (giriş veya çıkış).
Alanlar | |
---|---|
text |
Transkript metni. |
ContextWindowCompressionConfig
Bağlam penceresi sıkıştırmasını etkinleştirir. Bu, modelin bağlam penceresini belirli bir uzunluktan aşmayacak şekilde yönetme mekanizmasıdır.
Alanlar | |
---|---|
Birlik alanı compressionMechanism . Kullanılan bağlam penceresi sıkıştırma mekanizması. compressionMechanism yalnızca aşağıdakilerden biri olabilir: |
|
slidingWindow |
Kaydırmalı pencere mekanizması. |
triggerTokens |
Bir bağlam penceresi sıkıştırmasını tetiklemek için gereken jeton sayısı (bir tur çalıştırmadan önce). Daha kısa bağlam aralıkları daha hızlı model yanıtlarına neden olabileceğinden bu, kaliteyi gecikmeye karşı dengelemek için kullanılabilir. Ancak sıkıştırma işlemleri geçici bir gecikmeye neden olacağından sık sık tetiklenmemelidir. Ayarlanmamışsa varsayılan olarak modelin bağlam aralığı sınırının% 80'i kullanılır. Bu durumda, sonraki kullanıcı isteği/model yanıtı için% 20'lik bir pay kalır. |
EndSensitivity
Konuşmanın sonunun nasıl algılandığını belirler.
Sıralamalar | |
---|---|
END_SENSITIVITY_UNSPECIFIED |
Varsayılan değer END_SENSITIVITY_HIGH'tır. |
END_SENSITIVITY_HIGH |
Otomatik algılama, konuşmayı daha sık sonlandırır. |
END_SENSITIVITY_LOW |
Otomatik algılama, konuşmayı daha az keser. |
GoAway
Sunucunun yakında bağlantısını keseceğini belirten bir bildirim.
Alanlar | |
---|---|
timeLeft |
Bağlantının ABORTED olarak sonlandırılmasına kalan süre. Bu süre hiçbir zaman modele özgü minimum süreden az olmaz. Bu süre, modelin ücret sınırlarıyla birlikte belirtilir. |
RealtimeInputConfig
BidiGenerateContent
'te gerçek zamanlı giriş davranışını yapılandırır.
Alanlar | |
---|---|
automaticActivityDetection |
İsteğe bağlı. Ayarlanmamışsa otomatik etkinlik algılama varsayılan olarak etkindir. Otomatik ses algılama devre dışıysa istemcinin etkinlik sinyalleri göndermesi gerekir. |
activityHandling |
İsteğe bağlı. Etkinliğin ne gibi bir etkisi olduğunu tanımlar. |
turnCoverage |
İsteğe bağlı. Kullanıcının sırasına hangi girişin dahil edileceğini tanımlar. |
SessionResumptionConfig
Oturum devam ettirme yapılandırması.
Bu mesaj, oturum yapılandırmasına BidiGenerateContentSetup.sessionResumption
olarak dahil edilir. Yapılandırılmışsa sunucu SessionResumptionUpdate
ileti gönderir.
Alanlar | |
---|---|
handle |
Önceki bir oturumun herkese açık kullanıcı adı. Aksi takdirde yeni bir oturum oluşturulur. Oturum sapları, önceki bağlantılardaki |
SessionResumptionUpdate
Oturum devam ettirme durumunun güncellenmesi.
Yalnızca BidiGenerateContentSetup.sessionResumption
ayarlandıysa gönderilir.
Alanlar | |
---|---|
newHandle |
Devam ettirilebilecek bir durumu temsil eden yeni herkese açık kullanıcı adı. |
resumable |
Geçerli oturum bu noktada devam ettirilebiliyorsa doğru değerini döndürür. Oturumun bazı noktalarında devam ettirme işlemi yapılamaz. Örneğin, model işlev çağrıları yürüttüğünde veya oluştururken. Oturum bu durumdayken devam ettirildiğinde (önceki oturum jetonu kullanılarak) bazı veriler kaybolur. Bu durumlarda |
SlidingWindow
SlidingWindow yöntemi, bağlam penceresinin başındaki içeriği atarak çalışır. Sonuç olarak elde edilen bağlam, her zaman bir USER rolü dönüşümünün başında başlar. Sistem talimatları ve BidiGenerateContentSetup.prefixTurns
her zaman sonucun başında yer alır.
Alanlar | |
---|---|
targetTokens |
Saklanacak hedef jeton sayısı. Varsayılan değer trigger_tokens/2'dir. Bağlam penceresinin bazı bölümlerinin atılması geçici bir gecikmeye neden olur. Bu nedenle, sık sık sıkıştırma işlemi yapılmasını önlemek için bu değer kalibre edilmelidir. |
StartSensitivity
Konuşmanın başlangıcının nasıl algılandığını belirler.
Sıralamalar | |
---|---|
START_SENSITIVITY_UNSPECIFIED |
Varsayılan değer START_SENSITIVITY_HIGH'tır. |
START_SENSITIVITY_HIGH |
Otomatik algılama, konuşmanın başlangıcını daha sık algılar. |
START_SENSITIVITY_LOW |
Otomatik algılama, konuşmanın başlangıcını daha seyrek algılar. |
TurnCoverage
Kullanıcının sırasına hangi girişin dahil edileceğiyle ilgili seçenekler.
Sıralamalar | |
---|---|
TURN_COVERAGE_UNSPECIFIED |
Belirtilmemişse varsayılan davranış TURN_INCLUDES_ONLY_ACTIVITY olur. |
TURN_INCLUDES_ONLY_ACTIVITY |
Kullanıcının sırası, yalnızca son sıradan sonraki etkinliği içerir.Etkin olmayan süreler (ör. ses akışındaki sessizlik) hariç tutulur. Bu varsayılan davranıştır. |
TURN_INCLUDES_ALL_INPUT |
Kullanıcının sırası, son sıradan bu yana gerçekleşen tüm gerçek zamanlı girişleri (ör. ses akışındaki sessizlik) içerir. |
UsageMetadata
Yanıtlarla ilgili kullanım meta verileri.
Alanlar | |
---|---|
promptTokenCount |
Yalnızca çıkış. İstemdeki jeton sayısı. |
cachedContentTokenCount |
İstemdeki önbelleğe alınmış kısımdaki (önbelleğe alınmış içerik) jeton sayısı |
responseTokenCount |
Yalnızca çıkış. Oluşturulan tüm yanıt adaylarındaki toplam jeton sayısı. |
toolUsePromptTokenCount |
Yalnızca çıkış. Araç kullanımı istemlerinde bulunan jetonların sayısı. |
thoughtsTokenCount |
Yalnızca çıkış. Düşünme modelleri için düşünce jetonlarının sayısı. |
totalTokenCount |
Yalnızca çıkış. Oluşturma isteği için toplam jeton sayısı (istem + yanıt adayları). |
promptTokensDetails[] |
Yalnızca çıkış. İstek girişinde işlenen modalitelerin listesi. |
cacheTokensDetails[] |
Yalnızca çıkış. İstek girişindeki önbelleğe alınmış içeriğin modalitelerinin listesi. |
responseTokensDetails[] |
Yalnızca çıkış. Yanıtta döndürülen modalitelerin listesi. |
toolUsePromptTokensDetails[] |
Yalnızca çıkış. Araç kullanımı istek girişleri için işlenen modalitelerin listesi. |
Yaygın türler hakkında daha fazla bilgi
Sık kullanılan API kaynak türleri Blob
,
Content
, FunctionCall
, FunctionResponse
, GenerationConfig
,
GroundingMetadata
, ModalityTokenCount
ve Tool
hakkında daha fazla bilgi edinmek için İçerik oluşturma başlıklı makaleyi inceleyin.