Gemini Live API, Gemini modelleriyle anlık ve iki yönlü sesli sohbetler yapmanızı sağlar.
Standart ses modelleri, anlık karşılıklı diyaloglar için uygundur. Modelle konuşursunuz ve model hemen sözlü bir yanıt oluşturur. Ancak bir istek planlama, karmaşık analiz veya harici araçlar gerektirdiğinde doğrudan yanıtlar sınırlanır. Model, ya gerekçe sunmadan yanıt vermeli ya da araçların tamamlanmasını beklerken sessizce duraklamalıdır.
Live API'de düşünme (gemini-3.8-live-extended-thinking), gerçek zamanlı sesli oturumlara arka plan gerekçelendirmesi ekler. Model, etkileşimi etkin tutmak için doğal sohbet dolguları konuşurken arka planda eşzamansız araçları planlar ve çağırır.
Bu mimari, etkileşimli yaşam döngüsünü iki temel şekilde değiştirir:
- Sohbet dolguları: Model, arka planda araçları çalıştırırken ara güncellemeleri (ör. "Uçuş seçenekleri kontrol ediliyor") sesli olarak bildirir.
- Etkileşim durumu izleme: Model, tek bir istek sırasında birden fazla kez konuşabildiğinden sunucu, arka plan işleme sırasında
interaction_status: "IN_PROGRESS", genel görev tamamlandığında iseinteraction_status: "IDLE"yayar.
Aşağıdaki şemada, standart Live Voice oturumları ile arka plan gerekçelendirmesiyle düşünme arasındaki etkileşim yaşam döngüleri karşılaştırılmaktadır:
Doğru modeli seçme
gemini-3.8-live ve gemini-3.8-live-extended-thinking arasında seçim yaparken üç temel unsuru göz önünde bulundurun: yanıt gecikmesi, görev karmaşıklığı ve istemci durumu işleme.
Gemini 3.8 Live'ı ne zaman kullanmalısınız?
Anında sırayla konuşmanın önemli olduğu ve görevlerin doğrudan yapıldığı düşük gecikmeli konuşma sesli aracıları için gemini-3.8-live kullanın.
- Sohbet odaklı sesli asistanlar: Müşteri hizmetleri triyajı, dil pratiği, sesli arama ve etkileşimli hikaye anlatımı.
- Hızlı araç yürütme: Harici araçların milisaniyeler içinde döndüğü iş akışları (ör. sensör değerlerini okuma veya akıllı cihazları kontrol etme).
- Basit istemci mantığı: Her kullanıcı dönüşünün tek bir model yanıtı aldığı ve oturum boşta kaldığında
turnComplete: truegüvenilir bir şekilde sinyal veren uygulamalar.
Genişletilmiş düşünme özellikli Gemini 3.8 Live'ı ne zaman kullanmalısınız?
Ajanınızın karmaşık verileri değerlendirmesi, birden fazla adımı planlaması veya çalışması birkaç saniye süren araçları kullanması gerektiğinde gemini-3.8-live-extended-thinking kullanın.
- Çok adımlı teşhis ve destek: Teknik destek temsilcileri, birden fazla günlük, hata kodu ve yapılandırma kontrolü genelinde sistem sorunlarını teşhis eder.
- Koordineli veri alma: Uçuş arayan, otelleri sorgulayan ve paralel API çağrıları arasında fiyatları karşılaştıran seyahat ve rezervasyon acenteleri.
- FeTeMM ve kodlama eğitimi: Formülleri doğrulayan, kodda hata ayıklayan veya açıklamada bulunmadan önce çok adımlı mantıkla çalışan eğitim aracıları.
- Masking tool latency: Uzun süren işlevlerin dinleyici için garip bir sessizliğe neden olacağı ses deneyimleri.
Temel farkların özeti
Aşağıdaki tabloda, iki model arasındaki teknik farklılıklar özetlenmektedir:
| Özellik | Gemini 3.8 Live | Gemini 3.8 Live Extended Thinking |
|---|---|---|
| Birincil kullanım alanları | Düşük gecikmeli sesli asistanlar, doğrudan komutlar, hızlı araçlar | Çok adımlı problem çözme, karmaşık planlama, çok araçlı iş akışları |
| Model uç noktası | gemini-3.8-live |
gemini-3.8-live-extended-thinking |
| Muhakeme mimarisi | Sabit gecikme profiliyle aralıklı muhakeme (thinking_level desteklenmez) |
Yapılandırılabilir arka plan gerekçelendirmesi (thinking_level: low, medium, high; MINIMAL desteklenmez) |
| Sınırları belirleme | turnComplete: true, dönüşü kapatır ve boşta kalma durumuna döner. |
turnComplete: true bir ifadeyi tamamlar; interaction_status oturum yaşam döngüsünü kontrol eder. |
| Sohbetlerde kullanılan dolgu kelimeler | Model, konuşmadan önce aracın yürütülmesini bekliyor | Model, işleme sırasında ara sohbet dolguları yayınlar. |
| Araç yürütme | Eşzamanlı (BLOCKING) ve eşzamansız (NON_BLOCKING) araçları destekler. |
Asenkron (NON_BLOCKING) araç beyanları gerektirir |
Taşıma ve entegrasyon yolları
Mevcut ses uygulamalarını yükseltmek veya Thinking'i Live API oturumlarınıza entegre etmek için aşağıdaki adımları uygulayın.
Gemini 3.1 Flash Live'dan yükseltme
gemini-3.1-flash-live-preview kullanan mevcut ses uygulamalarında gemini-3.8-live'ye yükseltmek için model dizesinin güncellenmesi ve thinking_level'nin (veya thinking_config) kurulum yapılandırmanızdan çıkarılması gerekir. thinking_level, gemini-3.8-live için desteklenmez:
{
"setup": {
"model": "models/gemini-3.8-live"
}
}
Dönüşüm yaşam döngüsü ve turnComplete sinyalleri aynı kalır.
Düşünme Sürecini Benimseme
gemini-3.8-live-extended-thinking'yı kullanmak için üç entegrasyon noktasını güncelleyin:
turnCompleteyerineinteraction_statusizleyin: Düşünme oturumlarında model, akıl yürütme sırasında ara sohbet dolguları verebilir. Kullanıcı arayüzü durumunu yönetmek için gelen sunucu mesajlarındakiinteraction_statusalanını inceleyin. Yalnızcainteraction_status,IDLEolduğunda boşta kalma moduna dönün.Python
status = getattr(message, "interaction_status", None) if status == "IDLE": # Ready for user input set_ui_state("listening") elif status == "IN_PROGRESS": # Reasoning or executing tools set_ui_state("thinking")JavaScript
if (message.interactionStatus === 'IDLE') { // Ready for user input setUiState('listening'); } else if (message.interactionStatus === 'IN_PROGRESS') { // Reasoning or executing tools setUiState('thinking'); }Engellemeyen işlevleri tanımlayın: Tüm işlev tanımlamalarında
"behavior": "NON_BLOCKING"değerini ayarlayın. Düşünme modelleri, sözlü güncellemeler yayınlarken araçları arka planda eşzamansız olarak çalıştırır. Senkronize engelleme araçları hata döndürüyor.Python
search_flights = types.FunctionDeclaration( name="search_flights", description="Searches for available flights.", behavior="NON_BLOCKING", parameters={ "type": "OBJECT", "properties": { "destination": {"type": "STRING"}, }, "required": ["destination"], }, )JavaScript
const searchFlights = { name: 'search_flights', description: 'Searches for available flights.', behavior: 'NON_BLOCKING', parameters: { type: 'OBJECT', properties: { destination: { type: 'STRING' }, }, required: ['destination'], }, };Akıl yürütme derinliğini yapılandırma: Oturum yapılandırmanızda
thinking_configdeğerini ayarlayarak akıl yürütme seviyelerini (low,mediumveyahigh;MINIMALdesteklenmez) düzenleyin.Python
config = types.LiveConnectConfig( response_modalities=["AUDIO"], thinking_config=types.ThinkingConfig( thinking_level="low", ), tools=[types.Tool(function_declarations=[search_flights])], )JavaScript
const config = { responseModalities: [Modality.AUDIO], thinkingConfig: { thinkingLevel: 'low', }, tools: [{ functionDeclarations: [searchFlights] }], };
Protokol yan yana karşılaştırması
Bu bölümde, bir Canlı API oturumunun her aşamasında değiştirilen WebSocket mesajları karşılaştırılır.
1. adım: Oturum kurulumu
Her iki model de aynı WebSocket uç noktasına bağlanır:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContent?key=$API_KEY
- Aynı: WebSocket URL'si ve API anahtarı kimlik doğrulaması.
- Model dizesi:
gemini-3.8-liveversusgemini-3.8-live-extended-thinking. - Düşünme yapılandırması: Düşünme, akıl yürütme derinliğini ayarlamak için
thinkingConfigseçeneğini ekler. Araç davranışı: Düşünme, işlev bildirimlerinde
"behavior": "NON_BLOCKING"gerektirir.
Gemini 3.8 Live
{
"setup": {
"model": "models/gemini-3.8-live",
"generationConfig": {
"responseModalities": ["AUDIO"],
"speechConfig": {
"voiceConfig": {
"prebuiltVoiceConfig": {
"voiceName": "Puck"
}
}
}
}
}
}
Gemini 3.8 Live Extended Thinking
{
"setup": {
"model": "models/gemini-3.8-live-extended-thinking",
"generationConfig": {
"responseModalities": ["AUDIO"],
"speechConfig": {
"voiceConfig": {
"prebuiltVoiceConfig": {
"voiceName": "Puck"
}
}
},
"thinkingConfig": {
"thinkingLevel": "LOW"
}
},
"tools": [{
"functionDeclarations": [{
"name": "searchFlights",
"description": "Searches for flights between cities.",
"behavior": "NON_BLOCKING",
"parameters": {
"type": "OBJECT",
"properties": {
"destination": { "type": "STRING" }
},
"required": ["destination"]
}
}]
}]
}
}
Her iki model de bağlantı kurulduğunda aynı sunucu onayını alır:
{
"setupComplete": {}
}
2. adım: Kullanıcı ses girişi
Ses akışı her iki modelde de aynıdır. Gerçek zamanlı 16 kHz ham PCM ses parçaları realtimeInput kullanılarak yayınlanır:
{
"realtimeInput": {
"audio": {
"data": "UklGRiQAAABXQVZF...",
"mimeType": "audio/pcm;rate=16000"
}
}
}
3. adım: Model yanıtı ve durum yaşam döngüsü
Her iki model de serverContent.modelTurn içinde 24 kHz PCM ses parçaları yayınlar. Ancak yaşam döngüsü yönetimi farklıdır:
Gemini 3.8 Live yanıt akışı
- Sunucu, sıra için ses parçaları yayınlar.
- Sunucu, modelin konuşmayı bitirdiğini ve oturumun boşta olduğunu belirten
turnComplete: truekarakterini gönderir.
// 1. Audio stream chunks
{
"serverContent": {
"modelTurn": {
"parts": [
{
"inlineData": {
"mimeType": "audio/pcm;rate=24000",
"data": "..."
}
}
]
}
}
}
// 2. Turn completion -> Signals client to switch UI to Idle/Listening
{
"serverContent": {
"turnComplete": true
}
}
Gemini 3.8 Live Extended Thinking yanıt akışı
- Konuşma sırasında kullanılan dolgu kelimeleri: Model,
turnComplete: trueveinteractionStatus: "IN_PROGRESS"ile ara konuşma (ör. "Seattle'a uçuşları kontrol ediliyor...") yapıyor. - Asenkron araç çağrısı: Sunucu, araç çağrısını yayınlarken
interactionStatus"IN_PROGRESS"olarak kalır. Bu, sunucunun çok adımlı dönüşü etkin bir şekilde işlediğini ve araç yanıtını beklediğini gösterir. - Araç yanıtı: İstemci, işlevi yürütür ve çıkışı döndürür.
- Son yanıt: Sunucu,
turnComplete: trueveinteractionStatus: "IDLE"ile birlikte yanıtın tamamını sunar.
// 1. Spoken verbal filler while background reasoning proceeds
{
"serverContent": {
"modelTurn": {
"parts": [
{
"inlineData": {
"mimeType": "audio/pcm;rate=24000",
"data": "..."
}
}
]
},
"turnComplete": true,
"interactionStatus": "IN_PROGRESS"
}
}
// 2. Asynchronous tool call emitted with IN_PROGRESS status
{
"toolCall": {
"functionCalls": [
{
"id": "call_123",
"name": "searchFlights",
"args": {
"destination": "Seattle"
}
}
]
},
"interactionStatus": "IN_PROGRESS"
}
// 3. Client executes function and returns result
{
"toolResponse": {
"functionResponses": [
{
"response": {
"output": {
"flight": "DL 145",
"price": "$145"
}
},
"id": "call_123"
}
]
}
}
// 4. Final spoken answer delivered -> session transitions to IDLE when done
{
"serverContent": {
"modelTurn": {
"parts": [
{
"inlineData": {
"mimeType": "audio/pcm;rate=24000",
"data": "..."
}
}
]
},
"interactionStatus": "IDLE",
"turnComplete": true
}
}
SDK uygulama örnekleri
Aşağıdaki örneklerde, Google GenAI SDK'sını kullanarak Düşünme'yi nasıl yapılandıracağınız ve interaction_status'yı nasıl işleyeceğiniz gösterilmektedir.
Python
import asyncio
from google import genai
from google.genai import types
client = genai.Client()
model = "gemini-3.8-live-extended-thinking"
# Define non-blocking function declaration
search_flights = types.FunctionDeclaration(
name="search_flights",
description="Searches for available flights to a destination.",
behavior="NON_BLOCKING",
parameters={
"type": "OBJECT",
"properties": {
"destination": {"type": "STRING"}
},
"required": ["destination"]
}
)
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
thinking_config=types.ThinkingConfig(
thinking_level="low"
),
tools=[types.Tool(function_declarations=[search_flights])]
)
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
print("Session connected with Thinking")
async for message in session.receive():
# Inspect interaction status for server lifecycle tracking
status = getattr(message, "interaction_status", None)
if status:
print(f"Interaction status: {status}")
# Handle audio output parts
if message.server_content and message.server_content.model_turn:
for part in message.server_content.model_turn.parts:
if part.inline_data:
# Process 24kHz audio chunk
pass
# Handle asynchronous tool call
if message.tool_call:
for call in message.tool_call.function_calls:
print(f"Executing tool: {call.name}")
# Simulate function execution
response = types.FunctionResponse(
id=call.id,
name=call.name,
response={"result": "Flight DL 145 ($145)"}
)
await session.send_tool_response(
function_responses=[response]
)
# Status is IDLE when reasoning and all turns are complete
if status == "IDLE":
print("Session is idle and ready for user input.")
if __name__ == "__main__":
asyncio.run(main())
JavaScript
import { GoogleGenAI, Modality } from '@google/genai';
const ai = new GoogleGenAI({});
const model = 'gemini-3.8-live-extended-thinking';
const searchFlights = {
name: 'search_flights',
description: 'Searches for available flights to a destination.',
behavior: 'NON_BLOCKING',
parameters: {
type: 'OBJECT',
properties: {
destination: { type: 'STRING' }
},
required: ['destination']
}
};
const config = {
responseModalities: [Modality.AUDIO],
thinkingConfig: {
thinkingLevel: 'low'
},
tools: [{ functionDeclarations: [searchFlights] }]
};
async function main() {
const session = await ai.live.connect({
model: model,
config: config,
callbacks: {
onopen: () => console.log('Session connected'),
onmessage: async (event) => {
const message = JSON.parse(event.data);
if (message.interactionStatus) {
console.log(`Interaction status: ${message.interactionStatus}`);
}
if (message.toolCall) {
for (const call of message.toolCall.functionCalls) {
console.log(`Executing tool: ${call.name}`);
session.sendToolResponse({
functionResponses: [{
id: call.id,
name: call.name,
response: { result: 'Flight DL 145 ($145)' }
}]
});
}
}
if (message.interactionStatus === 'IDLE') {
console.log('Session is idle and waiting for input.');
}
}
}
});
}
main();
Sırada ne var?
- Gemini 3.8 Live ve Gemini 3.8 Live Extended Thinking model sayfalarını okuyun.
- Tüm Live API modellerindeki ayrıntılı özellik karşılaştırmaları için Model karşılaştırma tablosuna göz atın.
- Live API Tool Use (Live API Aracı Kullanımı) kılavuzunda işlev çağırma hakkında daha fazla bilgi edinin.
- Oturumun devam ettirilmesi ve bağlam yaşam döngüsünü yönetmek için Oturum yönetimi'ni inceleyin.