Ana içeriğe geç

Gemini Live API’yle Hızlı Başlangıç

Gemini Live API ve Google ADK kullanarak gerçek zamanlı bir sesli asistan oluşturmayı öğrenin. WebSocket’ler, araç çağırma ve yerel ses akışında ustalaşın.
· 11 dk. oku

Yapay Zeka ile Keşfedin

Daha önce bir sesli asistan geliştirmeyi denediyseniz, geleneksel hattın ne kadar hantal olduğunu bilirsiniz. Kullanıcının sesini kaydedersiniz, bir STT modeliyle yazıya dökersiniz, o metni bir LLM’e gönderirsiniz, yanıtı beklersiniz ve ardından bir TTS motorundan geçirirsiniz. 

Kullanıcı yanıtı duyana kadar birkaç saniyelik garip bir sessizlik geçmiş olur. Bu, bir sohbetten çok yavaş bir istek–yanıt döngüsüne benzer. 

Gemini Live API bu akışı, durum bilgisi olan bir WebSocket bağlantısı üzerinden ses ve videoyu kesintisiz olarak akıtmanıza izin vererek değiştirir. Model sesi yerel olarak işleyip çıktı ürettiği için anında tepki verebilir, doğal ses nüanslarına uyum sağlayabilir ve hatta cümlenin ortasında yapılan kesintileri (barge-in) yönetebilir. 

Bu eğitimde, kod-öncelikli Google Agent Development Kit’i (ADK) kullanarak Gerçek Zamanlı bir Yapay Zekâ Seyahat Danışmanı nasıl oluşturacağınızı göstereceğim. Aracımızı canlı varış noktası hava durumu sorguları için Google Arama ile donatacak, sahte bir uçuş veritabanına bağlayacak ve gerçek zamanlı diyalog ile araç çağırmayı nasıl yönettiğini test etmek için yerel bir geliştirici arayüzü başlatacağız.

Ekosisteme yeniyseniz, temel bilginizi oluşturmak için Google ADK ile Yapay Zekâ Aracıları Oluşturma kursuyla başlamanızı öneririm.

Neler başaracaksınız: 

  • Gemini Live API’nin çalışma prensiplerini, yeteneklerini ve fiyatlandırmasını anlayın.
  • Google Agent Development Kit ile bir Python ortamı yapılandırın. 
  • Yerleşik araçları (Google Arama) ve özel iş mantığını (uçuş durumu veritabanı sorguları) sesli asistana açığa çıkarın. 
  • Seyahat danışmanınızla canlı konuşmak için yerel bir web arayüzü başlatın.

Gereksinimler: 

  • Temel düzeyde Python bilgisi. 
  • Bir Google Cloud Projesi (Vertex AI erişimi için) veya bir Google AI Studio API anahtarı.

Gemini Live API nedir? 

Özünde, Gemini Live API, geliştiricilerin Gemini modelleriyle gerçek zamanlı ses ve görsel etkileşimler kurmasına olanak tanıyan bir Google aracıdır. Tur-bazlı metin yanıtlarını beklemek yerine, bir kullanıcı ile bir yapay zekâ ajanı arasında kesintisiz, doğal bir sohbet sağlar. 

Teknik olarak, Gemini Live API çift yönlü, gerçek zamanlı akış için tasarlanmıştır. Durumsuz istek–yanıt döngüleri kullanan standart HTTP REST API’lerinin aksine, Live API durum bilgisine sahip kalıcı bir WebSocket (WSS) bağlantısına dayanır. Bu açık kanal üzerinden istemci ham ses, video (yaklaşık 1 FPS hızında görüntü kareleri olarak iletilir) ve metin akıtırken, model de anlık, yerel ses ve metin geri akıtır.

Gemini Live’ın temel yetenekleri

  • Barge-in (Kesilebilirlik): Doğal bir insan sohbetinde, bir şeyi netleştirmemiz gerektiğinde karşımızdakinin paragrafı tamamen bitirmesini beklemeyiz. Gemini Live, kutudan çıktığı haliyle barge-in’i destekler; kullanıcılar modelin konuşmasını cümlenin ortasında bölebilir ve sunucu ses akışını anında durdurup yeni girdiye uyum sağlar.
  • Duygulu diyalog ve yerel ses: Metin üretip bunu Bir Metinden Sese (TTS) motoruna vermek yerine, gemini-live-2.5-flash-native-audio ve gemini-3.1-flash-live-preview gibi modeller sesi yerel olarak işler ve çıktı verir. Bu, duygusal nüansı, kahkahayı, tona uyumu ve konuşma ritmini koruyarak etkileşimleri insanî kılar. 
  • Çoklu ortam girdileri ve araç kullanımı: Live API yalnızca sesle sınırlı değildir. Video kareleriyle ortamınızı “görebilir” ve gerçek zamanlı olarak harici işlevleri veya araçları (Google Arama veya özel API’ler gibi) tetikleyip sonuçları ses akışına geri besleyebilir.

Gemini Live API Fiyatlandırması

Gerçek zamanlı akış kesintisiz, tam çift yönlü bir bağlantı içerdiğinden, faturalandırma modeli standart statik metin API’lerinden farklıdır. Google, prototipleme için Google AI Studio’da cömert bir ücretsiz katman ve Vertex AI üzerinde üretime hazır ücretli bir katman sunar. 

gemini-3.1-flash-live-preview modeli milyon başına belirteç üzerinden veya 

ses ve video medya için doğrudan süreye dayalı bir metrik üzerinden ücretlendirilir:

Metrik

Ücretsiz Katman (Google AI Studio)

Ücretli Katman (Vertex AI)

Girdi Fiyatı (Metin)

Ücretsiz

1M belirteç başına $0.75

Girdi Fiyatı (Ses)

Ücretsiz

1M belirteç başına $3.00 (veya dakika başına $0.005)

Girdi Fiyatı (Görsel/Video)

Ücretsiz

1M belirteç başına $1.00 (veya dakika başına $0.002)

Çıktı Fiyatı (Metin)

Ücretsiz

1M belirteç başına $4.50

Çıktı Fiyatı (Ses)

Ücretsiz

1M belirteç başına $12.00 (veya dakika başına $0.018)

Google Arama ile Grounding

Ücretsiz (Oran sınırlı)

Ayda ilk 5.000 istem ücretsiz, sonrasında 1.000 sorgu başına $14

Prototiplendiriyorsanız, oran sınırlamalarına tabi olmakla birlikte cömert erişim sunan Google AI Studio’da ücretsiz test etmenizi özellikle öneririm. 

Ölçeklemeye hazır olduğunuzda, garantili bant genişliği ve kurumsal düzey SLA’lar sağlayan üretim “kullandıkça öde” sağlama için projenizi Vertex AI’a taşıyabilirsiniz.

Gemini Live API’ye Nasıl Erişilir

Bir geliştirici olarak, Live API’yi uygularken birkaç mimari seçeneğiniz vardır. WebSocket’lere dayandığı için bağlantıyı nasıl yönlendirdiğiniz gecikme ve güvenlik açısından önemlidir.

İstemciden sunucuya vs sunucudan sunucuya

  • İstemciden sunucuya: Ön ucunuz (ör. bir web veya mobil uygulama) doğrudan Google’ın WebSocket uç noktasına bağlanır. Ses akışının fazladan atlama yapmaması nedeniyle gecikmeyi en aza indirmek için en iyi yaklaşımdır. 
    • Ancak, ham Google Cloud API anahtarlarınızı bir ön uçta açığa çıkaramazsınız; güvenli istemci erişimi için geçici, kısa ömürlü belirteçler üreten bir kimlik doğrulama akışı uygulamalısınız.
  • Sunucudan sunucuya: Ön ucunuz sesi kendi arka uç sunucunuza akıtır ve bu sunucu Gemini Live API’ye WebSocket bağlantısını açar. Bu yöntem son derece güvenlidir ve arka uç mantığını (kullanıcı kimlik doğrulaması veya veritabanı sorguları gibi) eklemenize izin verir; ancak ses akışına hafif bir ağ gecikmesi ekler.

SDK’lar ve iş ortağı entegrasyonları

Ham WebSocket kodu yazabilseniz de, başlamanın en kolay yolu Google’ın GenAI SDK’sını veya Agent Development Kit’i (ADK) kullanmaktır. 

Kurumsal üretim için ekosistem hızla WebRTC entegrasyonlarını destekleyecek şekilde evrildi. LiveKit, Daily’nin Pipecat’i, Twilio ve Voximplant gibi platformlar, ağ titremesi, yankı iptali ve gerçek zamanlı ses yönlendirmesini doğrudan Gemini Live API’ye ele almak için sağlam altyapı sunar.

Gemini Live API ile Gerçek Zamanlı Bir Sesli Asistan Oluşturma

Bunu pratiğe dökelim. Bir Yapay Zekâ Seyahat Danışmanı oluşturacağız. 

Bu ajan, kullanıcılarla ses üzerinden sohbet etmek için Gemini Live API’yi kullanacak; daha da önemlisi, konuşma ortasında gerçek zamanlı uçuş durumlarını sorgulamak için özel Python işlevlerine erişecek.

Google Agent Development Kit’i (ADK) ve hem standart metin turları hem de gerçek zamanlı WebSocket akışı için optimize edilmiş güçlü gemini-3.1-flash-live-preview modelini kullanacağız.

1. Ortamın hazırlanması

Öncelikle bir Python sanal ortamı kurmanız ve gerekli ADK paketini yüklemeniz gerekir. Terminalinizde şu komutları çalıştırın:

# Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install the Agent Development Kit
pip install google-adk

Ardından, ADK’nın Google Cloud projenizle güvenli şekilde kimlik doğrulaması yapabilmesi için ortam değişkenlerinizi yapılandırın:

export GOOGLE_CLOUD_PROJECT="your-project-id" 
export GOOGLE_CLOUD_LOCATION="us-central1"

Bunun yerine Google AI Studio’dan bir Gemini API Anahtarı kullanıyorsanız, kök klasörünüzde bir .env dosyası oluşturun:

GEMINI_API_KEY=your_google_ai_studio_api_key

2. Gemini Live ajanını başlatma 

Proje dizininizde agent.py adlı bir dosya oluşturun. ADK, root_agent değişkenini otomatik olarak algılayıp çalıştıracak şekilde tasarlanmıştır. Bu kodda, uçuş durumlarını kontrol etmek için özel bir Python işlevi tanımlayacak ve ardından bunu doğrudan ajanın araç setine aktaracağız. Ajan dizinini başlatın: 

mkdir voice_assistant 
touch voice_assistant/__init__.py 
touch voice_assistant/agent.py

voice_assistant/__init__.py içinde ajan paketini açığa çıkarın:

from . import agent

3. Ajanı tanımlama ve özel araçları açığa çıkarma 

voice_assistant/agent.py dosyasını açın ve seyahat danışmanı yapılandırmasını yazın. Aşağıdaki kodda standart bir Python işlevi olan check_flight_status tanımlıyoruz. 

Google ADK’de, düzgün tür ipuçları ve bir docstring’e sahip herhangi bir Python işlevi otomatik olarak bir ajan aracına dönüştürülür. LLM, işlevin ne zaman ve nasıl çağrılacağını belirlemek için docstring açıklamasını ve parametreleri kullanır. 

Model yapılandırması 

ADK geliştirme sunucusunda iki etkileşim modunu da desteklemek için Gemini 3.1 Flash Live Preview’dan yararlanma—standart metin sohbeti (standart REST generateContent uç noktalarını kullanır) ve gerçek zamanlı çift yönlü WebSocket mikrofon arayüzü—modeli açıkça gemini-3.1-flash-live-preview olarak ayarlıyoruz.

Yalnızca akış odaklı eski modeller, standart HTTP REST istekleriyle tetiklendiğinde 404 Bulunamadı döndürürken, gemini-3.1-flash-live-preview hem standart REST içerik üretimini hem de durum bilgili WebSocket akışını yerel olarak destekler.

from google.adk.agents.llm_agent import Agent
from google.adk.tools import google_search
def check_flight_status(flight_no: str) -> str:
   """Check the real-time flight status (e.g. delays, gate info, cancellations).
   Args:
       flight_no: The flight number to look up (e.g., AA120, DL450, UA990).
   """
   flight_no = flight_no.upper().strip()
   if "AA120" in flight_no:
       return "Flight AA120 to Paris is currently delayed by 45 minutes due to air traffic control. New departure time: 3:15 PM. Gate status: B22."
   elif "DL450" in flight_no:
       return "Flight DL450 to London is on time. Gate status: Boarding now at Gate C10."
   elif "UA990" in flight_no:
       return "Flight UA990 to Tokyo is cancelled due to adverse weather conditions at the destination. Passengers are advised to rebook at the counter."
   else:
       return f"Flight {flight_no} is currently scheduled on time. No delay reports found in the flight database."
# Define the root agent with search grounding and custom database flight checks
root_agent = Agent(
   model='gemini-3.1-flash-live-preview',
   name='root_agent',
   description='A real-time AI Travel Concierge with flight tracking and search grounding.',
   instruction=(
       'You are an expert AI Travel Concierge. You assist users with real-time flight status checkups, '
       'destination recommendations, and general travel planning. '
       'Always answer professionally and conversationally. '
       'Use the check_flight_status tool when a user asks about a specific flight status. '
       'Use Google Search to look up weather, transit conditions, or travel advisories at destinations.'
   ),
   tools=[google_search, check_flight_status],
)

4. Etkileşimli geliştirme arayüzünü çalıştırma ve test etme

ADK, yerleşik bir geliştirme sunucusu ve Web arayüzü içerir. Bu, herhangi bir ön uç kodu yazmadan ajanınzı yerelde test etmenizi sağlar. Çalışma alanınızdan web sunucusunu başlatın:

.venv/bin/adk web .

Sunucunun başladığını gösteren çıktıyı görmelisiniz:

terminalde adk web komutu

  1. Web tarayıcınızda http://127.0.0.1:8000 adresini açın.
  2. Uygulama listesinden ajanınızı seçin.
  3. Canlı bir oturum başlatmak için Mikrofon düğmesine tıklayın.

adk web arayüzü

Sohbet arayüzünü açmak için uygulama listesinden root_agent’i seçin.

4. Mikrofona konuşun: Uçuş AA120’nin durumunu kontrol edebilir misiniz? Ajan isteğinizi ayrıştıracak, veritabanı bilgisine ihtiyaç duyduğunu fark edecek, özel check_flight_status Python işlevini tetikleyecek ve yanıtı size sesle iletmeden önce JSON araç çağrısı sonucunu gösterecektir.

voice_assistant ile sohbet

5. Google Arama Grounding’i Test Etme:  Sonra danışmana bir varış noktası hava durumu sorusu sorun: Şu anda Londra’da hava nasıl? Ajan yerleşik google_search aracını etkinleştirip web’i tarayacak ve canlı koşulları ses çıktısına sentezleyecektir.

ajan yanıtı

6. Barge-in Özelliğini Test Etme: Şu tarz geniş bir soru sorun: Roma’da gezilecek en iyi tarihi yerlerden bahseder misin. Ajan yerleri sıralamaya başlarken üzerine yüksek sesle konuşun: Aslında, dur! Onun yerine UA990 uçuşunu kontrol et!. Ajan konuşma akışını anında durduracak, Roma ayrıntılarını kesecek, özel uçuş takip aracını çalıştıracak ve UA990 uçuşunun iptal edildiğini bildirecektir. Bu, Live API bağlantısının düşük gecikmeli, tam çift yönlü doğasını sergiler.

ajan için takip sorusu

Gemini Live API Üretimi için En İyi Uygulamalar

Gerçek zamanlı ses uygulamaları, istem yönergeleri mimarisi, ağ durumu yönetimi, ses alımı ve kaynak ölçeklendirme etrafında benzersiz gereksinimler getirir. Aşağıda, resmî geliştirici yönergelerinden türetilmiş temel en iyi uygulamalar yer alıyor.

1. Net sistem yönergeleri tasarlama

Gemini Live’dan en iyi performansı almak için sistem yönergelerinizi (SY) sıkı bir hiyerarşiyle yapılandırın: Persona, Konuşma Kuralları ve Korumalar.

  • Personaları ayırın: Her ajanın rolünü tek bir ayrı sistem yönergesiyle sınırlı tutun; tek bir ajana birden fazla personayı yüklemeyin.
  • Konuşma akışlarını belirginleştirin: Tek seferlik unsurları (ör. “kullanıcıdan adını ve bilet numarasını bir kez iste”) açık uçlu konuşma döngülerinden (ör. “istedikleri sürece seyahat önerileriyle ilgili soruları yanıtla”) açıkça ayırın.
  • Araç çağrılarını cümlelerle yazın: Araç kullanımını sıralı biçimde açıklayın. Örneğin: ‘Önce kullanıcıdan bilet numarasını vermesini iste. Sonra bu numarayla look_up_ticket’ı çağır.’
  • Dil tutarlılığını zorlayın: Yerel ses modelleri, bağlam değişirse dilde kayma yaşayabilir. Ajanınız yalnızca İngilizce ise, yönergelerinizde bunu dayatın: RESPOND IN English. YOU MUST RESPOND UNMISTAKABLY IN English.

2. Kesin araç tanımları ve çağırma koşulları

Araçları Live API’ye açarken:

  • Her zaman tür açıklamalarını ve ayrıntılı parametre açıklamalarını ekleyin.
  • Araç meta verisi açıklamasında Çağırma Koşullarını açıkça belgeleyin (ör. "Bu aracı yalnızca kullanıcı kalkış tarihini ve varış noktasını onayladıktan sonra çağır"). Bu, LLM’in işlevleri erken tetiklemesini engeller.

3. Yerel ses bağlamını yönetme (Sıkıştırma)

Yerel ses belirteçleri hızla birikir; konuşmanın saniyesi başına yaklaşık 25 belirteç. Uzun süreli sesli oturumlarda bu, bağlam penceresini hızla doldurup gecikmeyi artırabilir.

  • Bağlantı ayarlarınızda ContextWindowCompressionConfig özelliğini etkinleştirerek bir eşik aşıldığında eski geçmişin bırakılmasını sağlayın:
from google.genai import types
live_config = types.LiveConnectConfig(
   context_window_compression=types.ContextWindowCompressionConfig(
       trigger_tokens=100_000,
       sliding_window=types.SlidingWindow(target_tokens=4_000),
   ),
)

Not: Bağlam sıkıştırma, eski konuşma geçmişinin kaybolmasına neden olur.

4. Şeffaf oturum sürdürme

Gerçek zamanlı mobil bağlantılar paket kaybına ve geçici kopmalara eğilimlidir. Baştan yepyeni bir konuşma durumu başlatmak yerine, şeffaf oturum sürdürmeyi uygulayın:

  • Akışınızı SessionResumptionConfig(transparent=True) ile yapılandırın.
  • Sunucudan gelen session_resumption_update olaylarını dinleyin ve new_handle’ı saklayın.
  • Giden iletilerin yerel bir arabelleğini tutun. Bağlantı koptuğunda APIError veya GoAway sinyalini yakalayın, kayıtlı handle ile yeniden bağlanın ve yalnızca onaylanmamış istemci iletilerini yeniden oynatın (arabelleği budamak için server-reported last_consumed_client_message_index değerini kullanın).

5. Ses akışı optimizasyonu

  • İstemci arabelleğe alma: Göndermeden önce istemcide uzun ses çerçevelerini arabelleğe almayın. Uçtan uca gecikmeyi en aza indirmek için 20 ms ile 40 ms arasındaki küçük ses parçalarını sürekli akıtın.
  • Mikrofon yeniden örnekleme: İstemci tarafı ses yakalamanın girdileri (genellikle 44.1 kHz veya 48 kHz) WebSocket üzerinden göndermeden önce 16 kHz PCM’e yeniden örneklediğinden emin olun.
  • Açık VAD sinyalleri: Ses Etkinliği Algılamayı (VAD) modelin yönetmesine izin verin. Ön ucunuzun anında UI göstergeleri göstermesi gerekiyorsa (ör. “Yapay zekâ dinliyor” vs “Yapay zekâ düşünüyor”), yapılandırmanızda explicit_vad_signal=True ayarlayarak sunucu ileti akışında doğrudan VAD başlat/durdur olaylarını alın.

6. Güvenlik (belirteç yönetimi)

  • Ana anahtarları asla gömmeyin: AI Studio API anahtarınızı veya Google Cloud Hizmet Hesabı kimlik bilgilerinizi istemci tarafı kodda (tarayıcılar veya mobil uygulamalar) açığa çıkarmaktan kaçının.
  • Geçici belirteç değişimini devreye alın: Güvenli arka ucunuzda bir kimlik doğrulama uç noktası oluşturun. Bir istemci sesli oturum başlatmak istediğinde, arka uç kısa ömürlü, kısıtlı bir OAuth veya API erişim belirteci (ör. Vertex AI IAM aracılığıyla) üretip istemciye iletir. İstemci bu geçici kimliği kullanarak doğrudan WebSocket bağlantısını açar.

Sonuç: Diyaloğa Dayalı Yapay Zekânın Ufku

Tur-bazlı, yalnızca metin LLM’lerden düşük gecikmeli, çoklu ortam akışına geçiş; insan–bilgisayar arayüzlerini kurma biçimimizde bir paradigma değişimini temsil ediyor. Ses ve videoyu durum bilgili WebSocket bağlantıları üzerinden yerel olarak işleyerek Gemini Live API, statik yazılım programlarından ziyade akışkan insan etkileşimlerine benzeyen ajan deneyimleri oluşturmamıza olanak tanıyor.

Bu rehber boyunca Gemini Live’ın iç mimarisini inceledik, fiyatlandırma modellerine baktık ve Google Agent Development Kit’i (ADK) kullanarak tam işlevli bir Yapay Zekâ Seyahat Danışmanı oluşturduk. ADK’nin standart Python işlevlerini etkin ajan araçlarına nasıl eşlediğine tanık olduk; böylece sesli asistanımıza hem geniş web tabanlı arama grounding’i hem de özel dahili veritabanı sorgularına erişim kazandırdık.

Sırada Ne İnşa Etmeli? 

Artık gerçek zamanlı sesli ajanların temellerine hâkim olduğunuza göre, Yapay Zekâ Seyahat Danışmanınızı şu şekilde genişletmeyi düşünün: 

  1. Canlı Video Akışlarını Açığa Çıkarın: Danışmanın haritaları, biniş kartlarını veya fiziksel seyahat fişlerini gerçek zamanlı “görebilmesi” için kamera görüntüsü iletimine destek ekleyin. 
  2. İşlemsel Özel Araçları Entegre Edin: Gerçek durumu değiştiren bir book_flight veya reserve_hotel aracı uygulayın ve güvenli kullanıcı onayları için kimlik doğrulama kapsamlarını entegre edin. 
  3. Üretim Ara Katman Yönlendirmesi: Yerel ADK testinden, web ve mobil uygulamalardan doğrudan üretim sesli aramaları akıtmak için LiveKit veya Pipecat kullanan bir WebRTC tabanlı çerçeveye geçin.

Daha gelişmiş konuşma iş akışları oluşturmaya hazır mısınız? Ajanik mimariler, araç kullanımı ve üretken yapay zekâ dağıtımları konusundaki bilginizi derinleştirmek için DataCamp’in AI Agent Fundamentals yetkinlik yoluna göz atın.

Aryan Irani

Yazar

Aryan Irani

İnternette yazıyor ve içerik üretiyorum. Google Workspace için Google Developer Expert, NMIMS Bilgisayar Bilimleri mezunu ve otomasyon ile Üretken Yapay Zekâ alanında tutkulu bir yapıcıyım.

Konular

İlgili