Google Gemini ve Flask: Fonksiyon Çağırabilen Yapay Zeka Sohbet Uygulaması

Hayal edin; sadece sorularınıza cevap veren değil, aynı zamanda internette güncel haberleri arayabilen ve anlık kripto para fiyatlarını takip edebilen kişisel bir asistanınız var. Üstelik tüm bunları kendi bilgisayarınızda, Python ile nasıl inşa edeceğinizi biliyorsunuz. Google’ın güçlü Gemini modellerini, Flask’ın hafifliğiyle birleştirerek gerçek zamanlı, akıllı ve “araç kullanabilen” bir sohbet uygulaması geliştirmek sandığınızdan çok daha kolay.

Sadece Bir Sohbetten Fazlası: Gemini Chat App

Bu proje, standart bir “soru-cevap” botunun ötesine geçerek bir AI Agent (Yapay Zeka Ajanı) mantığıyla çalışıyor. Gemini Chat App, kullanıcının isteğine göre sadece kendi eğitim verilerini kullanmakla kalmıyor, gerektiğinde dış dünyaya açılıyor.

Örneğin, “Bugün Bitcoin ne kadar?” diye sorduğunuzda model, cevabı uydurmak yerine get_crypto_price fonksiyonunu çağırması gerektiğini anlıyor, CoinGecko API’sine bağlanıyor ve size gerçek zamanlı veriyle dönüyor. Benzer şekilde, güncel olaylar için Tavily API üzerinden web araması yapabiliyor. Tüm bu süreç, kullanıcıya token token akan (streaming) modern bir arayüzle sunuluyor.

Kodun Anatomisi: Akıllı Ajan Mantığı

Uygulamanın kalbinde üç temel yapı taşı yer alıyor: SSE (Server-Sent Events), Function Calling (Fonksiyon Çağırma) ve Recursive Loop (Özyinelemeli Döngü).

1. Gerçek Zamanlı Akış (SSE)

Yapay zekanın tüm yanıtı oluşturmasını beklemek sıkıcı olabilir. Bu yüzden uygulama, text/event-stream MIME tipiyle yanıtlar dönüyor. Flask’ın stream_with_context özelliği sayesinde, Gemini API’den gelen her bir token anında tarayıcıya iletiliyor, böylece kullanıcı yanıtın “yazıldığını” canlı olarak görüyor.

2. Fonksiyon Çağırma (Function Calling)

Modelin hangi araçları kullanabileceğini bildirmesi için OpenAI uyumlu bir TOOLS listesi tanımlıyoruz. Her araç; ismi, açıklaması ve beklediği parametrelerle tanımlanır. Gemini, gelen istemi analiz eder ve eğer yanıt için dış bir veriye ihtiyaç varsa, metin üretmek yerine bir “fonksiyon çağrısı” (function call) döndürür.

3. Ajan Döngüsü (The Agentic Loop)

Uygulama şu döngüyü takip eder:

  1. İstek: Kullanıcı mesajı ve geçmişi Gemini’ye gönderilir.
  2. Karar: Gemini ya doğrudan cevap verir ya da bir araç çağırır.
  3. Yürütme: Eğer araç çağrıldıysa, Python tarafında ilgili fonksiyon (örn. web_search) çalıştırılır.
  4. Geri Bildirim: Aracın sonucu mesaj geçmişine eklenir ve modelden tekrar yanıt istenir.
  5. Final: Model, araçtan gelen veriyi yorumlayarak nihai cevabı kullanıcıya iletir.

Kilit Kod Parçası: Araç Tanımları

Aşağıda, modelin dış dünyaya nasıl eriştiğini belirleyen araç tanımlarını görebilirsiniz:

# Gemini'ye hangi araçlara sahip olduğunu anlatıyoruz
TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "web_search",
            "description": "Güncel bilgiler veya haberler için web'de arama yapar.",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "Arama sorgusu."}
                },
                "required": ["query"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "get_crypto_price",
            "description": "Kripto paralar için gerçek zamanlı fiyat verisi getirir.",
            "parameters": {
                "type": "object",
                "properties": {
                    "coin": {"type": "string", "description": "Coin adı veya sembolü (BTC, ETH vb.)"}
                },
                "required": ["coin"]
            }
        }
    }
]

Nasıl Çalıştırılır?

Sistemi kendi bilgisayarınızda ayağa kaldırmak için şu adımları izleyebilirsiniz:

  1. API Anahtarlarını Edinin:
  • Google AI Studio üzerinden ücretsiz bir Gemini API anahtarı alın.
  • Web aramaları için Tavily API anahtarı edinin.
  1. Bağımlılıkları Yükleyin:
   pip install flask requests
  1. Yapılandırma:
    Proje klasöründe bir .env dosyası oluşturun ve anahtarlarınızı ekleyin:
   GEMINI_API_KEY=your_gemini_key
   TAVILY_API_KEY=your_tavily_key
  1. Başlatın:
   python gemini_chat_app.py

Ardından tarayıcınızdan http://localhost:8118 adresine gidin.

Ne Öğrendik?

Bu proje ile modern bir yapay zeka uygulamasının temel yapı taşlarını deneyimledik:

  • LLM Orkestrasyonu: Sadece metin üretmek değil, modeli bir yönetici (orchestrator) olarak kullanıp fonksiyonlar çalıştırmak.
  • Kullanıcı Deneyimi (UX): SSE kullanarak gecikme hissini azaltan akışlı yanıtlar oluşturmak.
  • API Entegrasyonu: Farklı servisleri (Google, Tavily, CoinGecko) tek bir akışta birleştirmek.
  • Bağlam Yönetimi: Sohbet geçmişini koruyarak modelin önceki mesajları hatırlamasını sağlamak.

Kaynaklar ve Sonraki Adımlar

Bu uygulamayı geliştirmek için şunları deneyebilirsiniz:

  • Yeni araçlar ekleyin (Örn: Hava durumu API’si, yerel dosya okuma).
  • Farklı Gemini modellerini (Flash vs Pro) karşılaştırın.
  • Arayüzü Tailwind CSS ile daha da modernize edin.

Ahmet Aksoy

Not: Bu yazıda incelediğimiz kodu ve benzer projelerin kaynak kodlarını https://github.com/ahmetax/practical-python-examples adresinde bulabilirsiniz.

python, flask, gemini api, yapay zeka, api entegrasyonu, fonksiyon çağırma, sse, web search, crypto prices, yazılım geliştirme, başlangıç seviyesi

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir