Selam, Gemini Realtime API'de function toolları k...
# ask-ai
a
Selam, Gemini Realtime API'de function toolları kullanamıyor muyum?
t
Thanks for reaching out, İbrahim. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Selam — iyi bir soru. Gemini Realtime API’de function tools (yani kendi agent kodunuzdaki function/tool tanımları) kullanıp kullanamayacağınızı açıklıyorum. • Gemini Live API (realtime, ses tabanlı) içinde hem Google’un sağlayıcı araçlarını (GoogleSearch, GoogleMaps, URLContext, ToolCodeExecution vb.) hem de sizin tanımladığınız function/tools’ları birlikte kullanabilirsiniz. Yani realtime (Live) kullanımında her iki tür aracı aynı anda çalıştırmak mümkündür. • Ancak text-only Gemini modellerinde bir sınırlama vardır: yalnızca provider tools veya function tools kullanılabilir — ikisi aynı anda kullanılamaz. Bu yüzden text tabanlı modellerde her iki türü birlikte çalıştırmayı denerseniz bu desteklenmez. Kullanım örnekleri (özet): 1. Python (realtime + provider tool örneği)
Copy code
from livekit.plugins import google

agent = MyAgent(
    llm=google.realtime.RealtimeModel(),
    tools=[google.tools.GoogleSearch()],
)
1. Node.js (realtime + provider tool örneği — Node’da provider araçları
geminiTools
parametresiyle verilir)
Copy code
const agent = new MyAgent({
    llm: new google.realtime.RealtimeModel(),
    geminiTools: [new google.types.GoogleSearch()],
});
Not: Realtime özellikleri ve bazı yetenekler (ör. affective dialog, proactivity) için native audio destekleyen bir Gemini modeli kullanmanız gerekebilir (örneğin
gemini-2.5-flash-native-audio-preview-12-2025
gibi). İsterseniz şu konuda yardımcı olabilirim: • Hangi ortamı kullanıyorsunuz (realtime/speech mı, yoksa text-only mı)? Buna göre hangi yolu izleyeceğinizi netleştireyim. • Örnek bir agent konfigürasyonu paylaşırsanız, provider tools ile kendi function tools’ınızı nasıl birlikte tanımlayıp çağıracağınızı adım adım göstereyim. Sources: Google Gemini LLM plugin guide | LiveKit Documentation | Gemini Live API plugin | LiveKit Documentation
a
{"message": "tool_choice is not supported by the Google Realtime API.", "level": "WARNING", "name": "livekit.plugins.google", "pid": 126, "job_id": "AJ_WTBsMnKtWpCR", "room_id": "RM_ZKSzCk3K9oMJ", "timestamp": "2026-02-15T182327.621273+00:00"} Bunu demiş ama ben sadece custom function toolarımı çalıştırmaya çalışıyordum. Provider tool kullanmadım k
t
Anladım — uyarı mesajı sizi şaşırttı çünkü sadece kendi custom function tool’ınızı kullanmaya çalışıyorsunuz. Bu konuda yardımcı olacağım. Kısa cevap:
tool_choice
alanı Google Realtime API tarafından desteklenmiyor; bu nedenle isteğinizde veya agent konfigürasyonunuzda
tool_choice
gönderiliyorsa uyarı alırsınız. Ancak custom function tool’ları kullanmak mümkündür — tek yapmanız gereken
tool_choice
veya benzeri bir seçim mekanizmasını göndermemek ve agent’ınızı doğru şekilde yapılandırmaktır. Yapmanız gerekenler (özet): • İstek payload’unuzda veya agent ayarlarınızda
tool_choice
alanı varsa kaldırın.
• Agent’ınızı custom function tools’ları doğrudan içerecek şekilde tanımlayın (provider tools göndermiyorsanız
geminiTools
/ provider parametreleri eklemenize gerek yok). • Realtime model (sesli/live) kullanıyorsanız custom function tools ile beraber çalıştırmak mümkün; text-only modellerde başka kısıtlamalar olabilir. Bana yardımcı olacak bilgiler (bunlar sayesinde size tam, adım adım çözüm verebilirim): • Hangi SDK / dil kullanıyorsunuz? (Node.js, Python, vb.) • Kullandığınız model tipi: realtime/speech mi yoksa text-only mi? • Kısa bir kod/snippet veya agent konfigürasyonunuz varsa paylaşabilir misiniz? (Özellikle tool tanımları ve API çağrısı kısmı) • Uyarı log’unun geldiği kod satırı veya request payload’ı varsa onu da ekleyin. Eğer isterseniz, paylaştığınız kod üzerinden
tool_choice
kaynaklı alanları bularak doğrudan nasıl düzelteceğinizi adım adım göstereyim.
a
{"message": "received a tool call with tool_choice set to 'none', ignoring", "level": "ERROR", "name": "livekit.agents", "function": "end_call", "speech_id": "speech_ec79ed1ffcfc", "pid": 129, "job_id": "AJ_XgKqbxTfVoLc", "room_id": "RM_YVpXykHGKUUd", "timestamp": "2026-02-15T191803.747836+00:00"} Bunu diyor ama end_call yapabildi kapatabildi telefonu
t
Anladım — yalnızca kendi custom function tool’unuzu (ör.
end_call
) çağırmaya çalışıyorsunuz ama log’larda
tool_choice='none'
ile ilgili uyarı/hatayı görüyorsunuz. Kısa ve net açıklama ile çözüm önerileri aşağıda. Neden oluyor •
tool_choice='none'
ayarı, sistemin hiç araç (tool) çağrısı kabul etmemesini söyler. Eğer agent’ınızda function tool tanımlıysa ama
tool_choice='none'
ise, model bir tool çağrısı yolladığında bu çelişki log’ta “received a tool call with tool_choice set to 'none', ignoring” şeklinde gözükür. • Yani hata agent’ın çalışmasına engel olmayabilir (ör.
end_call
yine yürütülmüş olabilir), fakat konfigürasyon tutarsız olduğu için bu log’lar ortaya çıkar. Hızlı çözüm 1. Eğer custom function tools kullanacaksanız
tool_choice='none'
kullanmayın. Bunun yerine: ◦
tool_choice='auto'
veya
tool_choice
parametresini kaldırın (varsayılan davranış araç kullanımına izin verir). 1.
end_call
gibi fonksiyonların gerçekten function tool olarak doğru tanımlandığından emin olun (örneğin SDK’da
@function_tool
veya eşdeğeri ile). 2. Provider tool’lar (GoogleSearch vb.) kullanmıyorsanız onları agent konfigürasyonundan çıkartın. Ne paylaşırsanız daha hızlı yardımcı olabilirim • Hangi SDK/dil kullanıyorsunuz? (Node.js / Python / başka) • Hangi model tipini kullanıyorsunuz? (
google.realtime.RealtimeModel
mi yoksa text-only model mi) • Kısaca agent konfigürasyonunuzdan ilgili kısmı (tool tanımı ve LLM başlatma) paylaşırsanız yanlış
tool_choice
atanan yeri direkt gösterip düzeltebilirim. • SDK versiyonları (
livekit-agents
,
livekit-plugins-google
) varsa ekleyin. İsterseniz şimdi paylaştığınız küçük bir kod snippet’ine bakıp `tool_choice`’ı nereden geliyor onu bularım ve nasıl düzelteceğinizi adım adım gösteririm. Sources: Google Gemini LLM plugin guide | LiveKit Documentation