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.
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")
Hangi araçları entegre ettiniz? Deneyimlerinizi paylaşın!