Neler yeni

Seni de aramızda görmek istiyoruz! 🚀

Bilgi paylaştıkça çoğalır. Şu an misafir olarak buradasın ama sadece birkaç saniyeni ayırarak ücretsiz üye olabilir; binlerce içeriğe erişebilir, sorularını sorabilir ve topluluğumuzun bir parçası olabilirsin. Geliştirmek, öğrenmek ve paylaşmak için hemen aramıza katıl!

Function Calling ile AI'yı Gerçek Dünyaya Bağlama — Temelden İleri Seviyeye

baki

Sahip
Yönetici

🔌 FUNCTION CALLING — AI'YI GERÇEK SİSTEMLERE BAĞLAMA 🔌
Modelin sadece metin üretmesi değil, gerçek eylem tetiklemesi nasıl çalışıyor?
​




Merhaba! 🔌

Function calling (araç kullanımı), modern AI uygulamalarının temel yapı taşlarından biri — modelin sadece cevap yazması değil, gerçek sistemlerle etkileşime girebilmesi. Bu konuda temelden ileri seviyeye kapsamlı bir rehber hazırladım.

🤔 Function Calling Nasıl Çalışıyor?

Model, kullanıcının isteğine göre "hangi fonksiyonu, hangi parametrelerle çağırması gerektiğine" karar veriyor — ama fonksiyonu GERÇEKTEN çalıştırmıyor, sadece "bunu çağırmalısın" bilgisini yapılandırılmış formatta (genellikle JSON) döndürüyor. Gerçek çalıştırma, sizin kodunuzun sorumluluğunda.

Python:
import anthropic
import json

client = anthropic.Anthropic(api_key="API_KEY")

# ─── ARAÇ TANIMLARI ─────────────────────────────────
araclar = [
    {
        "name": "hava_durumu_getir",
        "description": "Belirtilen şehir için güncel hava durumu bilgisini getirir",
        "input_schema": {
            "type": "object",
            "properties": {
                "sehir": {
                    "type": "string",
                    "description": "Hava durumu sorgulanacak şehir adı"
                },
                "birim": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"],
                    "description": "Sıcaklık birimi"
                }
            },
            "required": ["sehir"]
        }
    },
    {
        "name": "toplanti_planla",
        "description": "Belirtilen kişilerle bir toplantı planlar",
        "input_schema": {
            "type": "object",
            "properties": {
                "katilimcilar": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Toplantıya katılacak kişilerin isimleri"
                },
                "tarih": {"type": "string", "description": "YYYY-MM-DD formatında tarih"},
                "sure_dakika": {"type": "integer", "description": "Toplantı süresi"}
            },
            "required": ["katilimcilar", "tarih"]
        }
    }
]

# ─── GERÇEK FONKSİYON İMPLEMENTASYONLARI ────────────
def hava_durumu_getir(sehir: str, birim: str = "celsius") -> dict:
    """Gerçek projede bu, bir hava durumu API'sine çağrı yapardı"""
    # Simüle edilmiş sonuç
    return {"sehir": sehir, "sicaklik": 22, "birim": birim, "durum": "Parçalı bulutlu"}

def toplanti_planla(katilimcilar: list, tarih: str, sure_dakika: int = 30) -> dict:
    """Gerçek projede bu, takvim API'sine (Google Calendar vb.) çağrı yapardı"""
    return {
        "basarili": True,
        "toplanti_id": "TPL-2026-0847",
        "katilimcilar": katilimcilar,
        "tarih": tarih
    }

# ─── FONKSİYON YÖNLENDİRME MEKANİZMASI ──────────────
FONKSIYON_HARITASI = {
    "hava_durumu_getir": hava_durumu_getir,
    "toplanti_planla": toplanti_planla
}

def ai_ile_arac_kullanimi(kullanici_mesaji: str):
    yanit = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        tools=araclar,
        messages=[{"role": "user", "content": kullanici_mesaji}]
    )

    # Model bir araç kullanmak istiyorsa
    for icerik_blogu in yanit.content:
        if icerik_blogu.type == "tool_use":
            arac_adi = icerik_blogu.name
            arac_girdisi = icerik_blogu.input

            print(f"🔧 AI şu aracı kullanmak istiyor: {arac_adi}")
            print(f"   Parametreler: {arac_girdisi}")

            # GERÇEK fonksiyonu biz çalıştırıyoruz — AI sadece "ne çağrılmalı" dedi
            if arac_adi in FONKSIYON_HARITASI:
                sonuc = FONKSIYON_HARITASI[arac_adi](**arac_girdisi)
                print(f"✅ Fonksiyon sonucu: {sonuc}")

                # Sonucu AI'ya geri göndererek, doğal dilde cevap oluşturmasını sağlayabiliriz
                return sonuc

        elif icerik_blogu.type == "text":
            print(f"💬 AI cevabı: {icerik_blogu.text}")

# Kullanım örnekleri
ai_ile_arac_kullanimi("İstanbul'da hava nasıl?")
ai_ile_arac_kullanimi("Ahmet ve Ayşe ile 15 Ağustos'ta toplantı ayarla")

🎯 Function Calling'in Gerçek Dünya Kullanım Kalıpları

🔹 Tek adımlı araç kullanımı: Basit sorgu → tek fonksiyon çağrısı → sonuç
🔹 Çok adımlı zincir: Model, bir fonksiyonun sonucuna göre başka bir fonksiyonu çağırmaya karar verebiliyor (agentic davranış)
🔹 Paralel araç çağrıları: Bazı modeller, ilişkisiz birden fazla fonksiyonu aynı anda çağırmayı önerebiliyor — performans avantajı

⚠️ Güvenlik ve Tasarım Prensipleri

🔹 Asla kör güvenmeyin: AI'nın önerdiği fonksiyon çağrısını çalıştırmadan önce, parametrelerin mantıklı/güvenli olduğunu doğrulayın
🔹 Yetki sınırlaması: Her fonksiyonun yapabileceklerini minimum tutun — "veritabanını_sil" gibi tehlikeli fonksiyonları AI'ya asla vermeyin
🔹 Kullanıcı onayı kritik eylemler için: Para transferi, veri silme gibi geri alınamaz eylemlerde, AI'nın önerisini kullanıcıya onaylatın




💬 FUNCTION CALLING İLE PROJE YAPTINIZ MI? 💬​

Hangi araçları entegre ettiniz? Deneyimlerinizi paylaşın! 👇
 

Konuyu görüntüleyenler

Üst