Google Gemini 2.0 Flash ile Otomatik Fonksiyon Çağırma: Python ile Uygulamalı Rehber
Merhaba değerli arkadaşlar, ben Prof. Dr. Murat Karakaya. Murat Karakaya Akademi'ye hoş geldiniz. Daha önceki eğitimlerimizde, Gemini API kullanarak "Function Calling" (Fonksiyon Çağırma) yapısını detaylıca incelemiştik. O zamanlar süreç biraz daha manuel ilerliyordu; model bize hangi fonksiyonu çağıracağını söylüyor, biz kod tarafında o fonksiyonu çalıştırıyor ve sonucu tekrar modele veriyorduk.
Ancak teknoloji yerinde durmuyor! Google'ın Gemini SDK'sına gelen yeni bir güncelleme ile artık "Automatic Function Calling" (Otomatik Fonksiyon Çağırma) özelliğini kullanabiliyoruz. Bu özellik, geliştiricilerin üzerindeki kod yükünü ciddi oranda alıyor ancak beraberinde bazı dikkat edilmesi gereken "kara kutu" risklerini de getiriyor. Bu yazıda, bu yeni özelliği Python ile nasıl uygulayacağımızı, avantajlarını ve dezavantajlarını gerçek bir senaryo üzerinden inceleyeceğiz.
Bu konuyu uygulamalı olarak görmek ve kodları adım adım takip etmek için videoyu izlemenizi öneririm:
Bu Eğitimde Neler Öğreneceksiniz?
- Manuel ve Otomatik Fonksiyon Çağırma arasındaki temel farklar.
- Google Gemini Python SDK ile otomatik araç (tool) kullanımı.
- Fonksiyon tanımlarında "Docstring" ve "Type Hinting"in önemi.
- Modelin "görünmez" ara adımlarını nasıl takip edebileceğiniz (Loglama stratejileri).
- Paralel fonksiyon çağırma ve halüsinasyon risklerine karşı alınacak önlemler.
Otomatik Fonksiyon Çağırma (Automatic Function Calling) Nedir?
Geleneksel (manuel) yöntemde süreç üç adımdan oluşuyordu:
- Kullanıcı soruyu sorar, model uygun fonksiyonu ve parametreleri seçer (JSON olarak döner).
- Geliştirici bu fonksiyonu kendi kodunda çalıştırır (API isteği, veritabanı sorgusu vb.).
- Çıkan sonucu geliştirici tekrar modele gönderir ve model nihai yanıtı üretir.
Uygulama: Kargo ve Vergi Hesaplayan AI Asistanı
Videoda, Gemini 2.0 Flash modelini kullanarak bir senaryo kurguladık. Senaryomuzda; ürünün fiyatını, gönderileceği şehirleri (mesafe hesabı için) ve döviz kurunu hesaplayan bir sistem tasarladık. İşte dikkat etmeniz gereken kritik noktalar:
1. Fonksiyonların Hazırlanması ve Docstring Önemi
Modelin bir fonksiyonu ne zaman ve nasıl çağıracağını anlaması için Python'daki docstring (açıklama satırları) hayati önem taşır. Parametrelerin tiplerini ve fonksiyonun ne işe yaradığını çok net belirtmelisiniz.
def calculate_delivery_cost(distance: float) -> float:
"""
Calculates the delivery cost based on the distance.
Returns the cost in USD.
Args:
distance (float): The distance in km.
"""
# Basit bir mantık: Mesafenin %10'u kadar ücret
return distance * 0.10
2. Gemini İstemcisini Ayarlama
Yeni SDK yapısında tools parametresine fonksiyon listemizi veriyoruz. SDK varsayılan olarak otomatik çağırmayı desteklese de, konfigürasyonda bunu açıkça belirtmek veya kapatmak mümkündür.
# Gerekli araçları (fonksiyonları) listeye ekliyoruz
tools = [calculate_delivery_cost, calculate_tax, get_exchange_rate]
# Modeli başlatırken tools parametresini veriyoruz
model = genai.GenerativeModel(
model_name='gemini-2.0-flash',
tools=tools,
system_instruction="Sen vergi ve kargo hesaplama uzmanısın..."
)
# Sohbeti başlatıyoruz (SDK otomatik döngüyü yönetir)
chat = model.start_chat(enable_automatic_function_calling=True)
3. "Kara Kutu" Sorunu ve Çözümü
Otomatik modun en büyük dezavantajı şeffaflıktır. Kod çalıştığında, response.text size sadece "Toplam maliyet 540 TL" der. Ancak modelin arka planda hangi kurla çarptığını, mesafeyi kaç km aldığını göremezsiniz.
Bu problemi aşmak için Chat History veya Response Object içindeki geçmişi incelemeniz gerekir. Videoda gösterdiğim gibi, arka planda modelin adım adım (örneğin önce kuru alıp, sonra vergiyi hesaplayıp, sonra mesafeyi bulması) yaptığı işlemleri loglamanız, kurumsal uygulamalarda hesap verilebilirlik açısından şarttır.
Sıkça Sorulan Sorular (SSS)
1. Otomatik Fonksiyon Çağırma her zaman güvenli midir?
Hayır, model bazen "halüsinasyon" görebilir. Örneğin, kodda olmayan bir parametreyi uydurabilir veya fonksiyonu yanlış sırada çağırabilir. Bu yüzden kritik finansal işlemlerde mutlaka doğrulama katmanları eklemeli veya manuel modu tercih etmelisiniz.
2. Hangi Gemini modelleri bu özelliği destekliyor?
Şu an için Gemini 1.5 Pro, 1.5 Flash ve yeni çıkan Gemini 2.0 Flash modelleri destekliyor. Ancak "Lite" gibi daha düşük kapasiteli modellerde veya eski versiyonlarda bu özellik stabil çalışmayabilir.
3. Modelin yaptığı hesaplamaları nasıl görebilirim?
Standart çıktı sadece sonucu verir. Ara adımları görmek için chat.history objesini incelemeli veya sistem prompt'unda modelden "Adım adım ne yaptığını açıklayarak cevap ver" (Chain of Thought) isteğinde bulunmalısınız.
Sonuç
Otomatik Fonksiyon Çağırma, yapay zeka ajanları (AI Agents) geliştirirken kodlama yükünü azaltan harika bir özellik. Ancak kontrolü elden bırakmamak, logları iyi tutmak ve modelin kapasitesine göre (Gemini 2.0 gibi güçlü modellerle) çalışmak gerekiyor. Daha karmaşık projeler için tek bir modele 20 tane araç vermek yerine, "Multi-Agent" (Çoklu Ajan) mimarilerini kullanmanızı tavsiye ederim.
Yapay zeka ve yazılım dünyasındaki gelişmeleri kaçırmamak, kodları detaylı incelemek için Murat Karakaya Akademi YouTube kanalına abone olun.
Kanalı Ziyaret Et & Abone Ol 🚀
#MuratKarakayaAkademi #GeminiAPI #Python #YapayZeka #FunctionCalling #LLM
