LLM'in metin yerine onceden tanimlanmis arac veya API'yi cagiracak yapilandirılmis JSON ciktisi uretme ozelligi.
Fonksiyon çağırma (function calling), büyük dil modellerinin (LLM) doğal dil yanıtı üretmek yerine önceden tanımlanmış bir aracı veya API-yi çağırabilen yapılandırılmış bir çıktı üretmesi özelliğidir. Bu mekanizma, LLM-leri pasif metin üreticilerinden aktif ajanlara dönüştürmektedir.
Fonksiyon çağırma tipik olarak şu şekilde işler: geliştirici, modele hangi fonksiyonların mevcut olduğunu JSON Schema formatında tanımlar. Kullanıcının isteği bu araçların kullanımını gerektiriyorsa model doğal dil yanıtı yerine araç adı ve parametrelerini JSON olarak döner. Uygulama bu JSON-u alır, ilgili fonksiyonu çalıştırır, sonucu modele gönderir ve model nihai yanıtı üretir.
OpenAI, bu özelliği GPT-4-te function calling olarak tanıttı; daha sonra tool use adıyla yeniden yapılandırdı. Anthropic Claude-un tool use özelliği, AWS Lambda veya harici API-ler gibi araçlarla entegrasyon için aynı prensibi kullanır. Bu yapılandırma, paralel çağrılar (parallel tool use) ile birden fazla aracı aynı anda çağırmayı da olanaklı kılar.
Fonksiyon çağırma; hava durumu sorgulama, veritabanı okuma ve yazma, takvim yönetimi, kod yürütme ve web arama gibi ajanlar için temel bir bileşendir. ReAct (Reason + Act) çerçevesi ve AutoGPT gibi ajan mimarileri bu özelliği sıklıkla kullanmaktadır.
MCP (Model Context Protocol), Anthropic-in standartlaştırdığı bir protokoldür; sunucular araçları MCP formatında tanımlayarak herhangi bir MCP destekli modelin bu araçları kullanabilmesini mümkün kılar. Bu sayede uygulamalar, LLM sağlayıcısından bağımsız olarak yeniden kullanılabilir araç kütüphaneleri oluşturabilir. Cursor, Zed ve diğer modern IDE-ler MCP entegrasyonuyla gelişmiş yapay zeka ajan özellikleri sunmaktadır. Fonksiyon çağırma, dil modellerini gerçek dünya sistemleriyle bütünleştiren en önemli mimari yeniliklerden biri olarak değerlendirilmektedir. Yapısal olarak basit görünse de paralel çağrım, hata yönetimi ve araç güvenliği gibi konular üretim sistemlerinde dikkatle ele alınması gereken mühendislik sorunlarıdır.
Güvenlik açısından fonksiyon çağırmanın dikkat gerektiren yönleri vardır: prompt enjeksiyonu, modelin meşru bir kullanıcı gibi görünen kötü amaçlı komutlar aracılığıyla beklenmedik araç çağrılarına yönlendirilmesidir. Bu nedenle araç izinleri en az yetki prensibiyle tasarlanmalı, geri alınamaz işlemler (ödeme, silme) için insan onayı mekanizmaları eklenmelidir. Structured Outputs özelliğiyle birleştirildiğinde fonksiyon çağırma, yalnızca JSON şemasına uyan yanıtlar garantilediğinden üretim ortamı güvenilirliğini artırır.
Nasıl Çalışır?
Geliştirici, modele araçları JSON Schema formatında tanımlar: fonksiyon adı, açıklama ve parametre yapısı ile birlikte. Kullanıcı 'Yarın İstanbul-da hava nasıl?' diye sorarsa ve hava durumu araçları tanımlanmışsa model doğal dil yerine {"name": "get_weather", "arguments": {"city": "Istanbul", "date": "2026-09-07"}} şeklinde yapılandırılmış JSON döner. Uygulama bu çağrıyı gerçek bir API-ye iletir ve sonucu tekrar modele gönderir.
Paralel ve Sırasal Araç Çağrımı
Modern modeller, birden fazla araç çağrısını paralel olarak yaratabilir. Örneğin 'İstanbul ve Ankara-nın havasını karşılaştır' sorusuna yanıt verirken model her iki şehir için aynı anda iki araç çağrısı oluşturabilir. Sırasal çağrılarda bir aracın sonucu bir sonraki araç çağrısının parametrelerini belirlediğinde model, sonucu bekleyip ardındaki adımı kurgulamalıdır. ReAct (Reasoning + Acting) çerçevesi bu sırasal süreci yönetmek için tasarlanmıştır.
MCP ve Standartlaşma
Model Context Protocol (MCP), Anthropic-in önerdiği açık standarttır. Sunucular MCP formatında araçları tanımlar; herhangi bir MCP destekli istemci bu araçları kullanabilir. Bu yaklaşım, araçların belirli bir LLM sağlayıcısına bağımlı kalmadan yeniden kullanılmasını mümkün kılar. Cursor, Zed ve diğer IDE-ler MCP entegrasyonuyla gelişmiş yapay zeka ajan özellikleri sunmaktadır.
Gerçek Dünya Örnekleri
OpenAI Assistants API, Code Interpreter aracı aracılığıyla Python kodu çalıştırır. Claude, bilgisayarı kontrol etmek için screenshot, click ve type araçlarını kullanarak bilgisayar üzerinde görev yapabilir. GitHub Copilot Agent, dosya okuma ve yazma araçlarıyla kod tabanında gezebilir. Bu örnekler, fonksiyon çağrısının LLM-leri gerçek ajan sistemlere dönüştürmedeki merkezi rolünü göstermektedir.
Function Calling En İyi Uygulamalar
JSON Schema Tasarımı
Her aracın parametrelerini açık description ile tanımlayın; LLM doğru argüman üretmek için schema açıklamalarına büyük ölçüde güvenir.
Paralel Araç Çağrısı
Bağımsız araçları aynı yanıtta birlikte çağırmak latency'yi düşürür; hangi araçların paralel, hangilerinin sıralı çalışması gerektiğini açıkça tanımlayın.
Güvenli Çalıştırma
Araç çıktısını her zaman doğrulayın ve temizleyin; LLM'in ürettiği argümanlar injection vektörü oluşturabilir — giriş doğrulaması zorunlu.
Hata Geri Bildirimi
Araç başarısız olduğunda anlamlı hata mesajını LLM'e döndürün; model hatayı anlayarak farklı parametre veya strateji deneyebilir.
Sıkça Sorulan Sorular
check_circleTool use ile function calling arasındaki fark nedir? Eş anlamlıdır; OpenAI bunu önce function calling, sonra tool use olarak adlandırmıştır. Claude başından beri tool use terimini kullanmaktadır.
check_circleHer LLM function calling destekler mi? Hayır; bu özellik özel eğitim gerektirir. GPT-4, Claude, Gemini desteklerken daha küçük modeller genellikle desteklemez.
check_circleMCP olmadan araç entegrasyonu mümkün mü? Evet; her sağlayıcının kendi araç tanımlama formatı vardır. MCP yalnızca standartlaşmayı sağlar ve farklı sağlayıcılar arasında araç yeniden kullanımını kolaylaştırır.
check_circleModel araç çağrısı yapmayı nasıl öğreniyor? RLHF ve instruction tuning ile; model, öğretim verilerinde fonksiyon çağrıları örnekleri görecek biçimde eğitilir.