AI Sözlüğü
Orta· ~2 dk okuma#function-calling#tool-use#structured-output

Function Calling

Tool Use — Araç Çağırma

LLM'in çalıştırılabilir bir fonksiyonun adını ve parametrelerini yapılandırılmış JSON olarak çıktılaması; uygulama bu çağrıyı çalıştırıp sonucu modele geri verir.

YAPILANDIRILMIŞ ÇIKTI → GERÇEK EYLEMKULLANICI"Paris hava durumu?"LLM ÜRETİRget_weather(city: "Paris")API'NİZçağrıyı çalıştırırdönüş: { temp: 14, sky: "yağmur" }LLM CEVABI BİÇİMLENDİRİR"Paris 14°C, öğleden sonra yağmur bekleniyor."LLM kod çalıştırmaz — uygulamanıza çağırtır, sonucu okur
Tanım

LLM kod çalıştıramaz, hesap yapamaz, internete giremez. Ama yapabileceği bir şey vardır: senin tanımladığın fonksiyonların isimlerini ve parametrelerini yapılandırılmış şekilde üretebilir. Sen ona "şu fonksiyonlar var: get_weather(city), send_email(to, body)" dersin; o da kullanıcı isteğine göre get_weather(city: "Paris") üretir. Çalıştırma senin işin.

Akış: (1) modele araç tanımlarını ver, (2) model tool_call JSON üretir, (3) sen fonksiyonu çalıştır, (4) sonucu tool_result olarak modele geri ver, (5) model son cevabı yazar. Bu döngü birden fazla turdan oluşabilir — ajan (agent) dediğimiz şeyin temel mekaniği budur.

OpenAI, Anthropic, Google, Mistral — hepsi destekler. JSON Schema ile parametre türleri tanımlanır. Modern modeller paralel araç çağrısı da yapabilir.

Benzetme

Bir sekreterle telefonda konuşur gibi. Sekreter raporları kendi yazamaz, ama "şu klasörden Q3 raporunu getir" diyebilir. Talimat sözel, eylem fiziksel. LLM = sekreter, function calling = "getir" emrini yapılandırılmış komuta dönüştürmek, senin uygulaman = arşivden raporu fiilen alan kişi.

Gerçek dünyadan örnek

Müşteri "siparişimin durumu ne?" diye sorar. Bot LLM'e mesajı + get_order_status(order_id) araç tanımını birlikte verir. LLM önce ask_user(question: "Sipariş numaranız nedir?") çağırır. Müşteri "TR-9921" der. LLM bu kez get_order_status(order_id: "TR-9921") üretir. Arka uç gerçek API'yi çağırır, "Kargoda, yarın teslim" döner. LLM bu veriyi alıp "Siparişiniz kargoda, yarın elinizde olacak 🚚" diye insan diliyle yanıtlar.

Kod örnekleri
OpenAI tools API · hava durumu örneğiPython
from openai import OpenAI
import json

client = OpenAI()

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Belirli bir şehrin hava durumu",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string"}
            },
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Paris hava durumu?"}],
    tools=tools,
)

call = resp.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
# → call.function.name == "get_weather"
# → args == {"city": "Paris"}

# Sen burada gerçek API'yi çağırırsın, sonucu modele tool_result
# olarak geri verirsin, model nihai cevabı yazar.
Ne zaman kullan
  • Gerçek zamanlı veri çekmek (hava, fiyat, stok)
  • Hassas hesap (LLM matematikte zayıftır — hesap makinesi aracı kullan)
  • Yan etki yaratan işlemler: e-posta gönder, kayıt aç, ödeme tetikle
  • Yapılandırılmış çıktı şart olduğunda — JSON şeması garanti eder
Ne zaman kullanma
  • Bilgi zaten prompt içinde varsa — gereksiz tur ekleme
  • Tek seferlik yaratıcı içerik (şiir, blog) — araç gerekmez
  • Gecikmeye duyarlı UI akışları — her araç turu ekstra ileri-geri tur demek
Sık yapılan hatalar

Araç sayısını aşırı artırmak

20'den fazla araç verince model kafası karışır, yanlış aracı seçer. 5-10 ile başla, gerekirse hiyerarşik düzen kur.

Şema doğrulamasını atlamak

Model bazen şemada olmayan parametreler üretir ya da türü yanlış geçer. Çağrıyı çalıştırmadan önce mutlaka doğrula.

Sonsuz döngü

Model sonuca ulaşamayınca aynı aracı tekrar tekrar çağırır. Maksimum tur sayısı (örn. 10) ve döngü tespiti koy.