Function Calling (Fonksiyon Çağırma) Nedir?
Function calling nedir? Function calling (fonksiyon çağırma), bir dil modelinin doğal dildeki isteği anlayıp önceden tanımlı bir fonksiyonu hangi argümanlarla çağıracağını yapılandırılmış JSON çıktısı olarak üretmesidir. Bu rehber: net tanım, neden gerekli, nasıl çalışır, json şema, araç kullanımı, api entegrasyonu, MCP ile ilişki, güvenlik ve sık sorulan sorular.
Function calling nedir? Function calling (Türkçesiyle fonksiyon çağırma), bir dil modelinin doğal dildeki bir isteği anlayıp, kendisine önceden tanımlanan fonksiyonlardan hangisini hangi argümanlarla çağıracağını yapılandırılmış bir JSON nesnesi olarak üretmesidir. Kritik nokta şudur: model kodu kendisi çalıştırmaz; yalnızca "şu fonksiyonu şu argümanlarla çağır" niyetini üretir, gerçek çalıştırmayı sizin uygulamanız yapar.
Bir dil modeli metin üretmekte ustadır, ama tek başına ne hava durumunu sorgulayabilir ne bir e-posta gönderebilir ne de bir veritabanından sipariş çekebilir. Function calling tam olarak bu boşluğu doldurur: modeli, yapılandırılmış bir çağrı üreterek dış dünyadaki fonksiyonlara ve API'lere bağlar. Bu rehber function calling nedir, neden gerekli, nasıl çalışır, json şema ile ilişkisi nedir ve araç kullanımı ile api entegrasyonunda neden merkezî olduğunu ele alıyor.
- Function Calling (Fonksiyon Çağırma)
- Bir dil modelinin doğal dildeki bir isteği anlayıp, kendisine önceden tanımlanan fonksiyonlardan hangisini hangi argümanlarla çağıracağını yapılandırılmış bir JSON nesnesi olarak ürettiği mekanizma. Model kodu kendisi çalıştırmaz; yalnızca çağrı niyetini üretir, gerçek çalıştırmayı uygulama yapar. Function calling, dil modelini API'lere ve araçlara bağlayan köprüdür.
- Ayrıca: Fonksiyon çağırma, tool calling, araç çağırma, function calling
Function Calling Neden Gerekli?
Bir dil modeli, eğitim verisiyle sınırlı ve dış dünyaya kapalıdır. "Yarın İstanbul'da hava nasıl olacak?" sorusuna akıcı bir cümle kurabilir ama gerçek veriyi bilemez; çünkü canlı bir hava durumu servisine erişimi yoktur. Aynı şekilde "bu müşterinin son siparişini iptal et" isteğini anlar ama tek başına hiçbir sistemde değişiklik yapamaz.
Function calling bu iki temel sınırı aşar. Modele, çağırabileceği fonksiyonların bir listesini verirsiniz — örneğin `havaDurumuGetir(sehir)` veya `siparisIptalEt(siparisId)`. Model, kullanıcının isteğini anlayıp doğru fonksiyonu doğru argümanlarla seçer ve bunu makine tarafından okunabilir bir çağrı olarak döndürür. Böylece modelin dil anlama yeteneği ile gerçek sistemlerin eylem gücü birleşir. Bu köprü olmadan bir LLM, yalnızca metin üreten kapalı bir kutudur.
Function Calling Nasıl Çalışır?
Function calling tek yönlü bir sihir değil, iki taraflı bir el sıkışmadır. Model asla doğrudan bir fonksiyonu çalıştırmaz; onun yerine "şu fonksiyonu şu argümanlarla çağırmak istiyorum" der ve topu uygulamaya atar. Uygulama fonksiyonu çalıştırır, sonucu alır ve modele geri verir; model de bu sonucu doğal dilde bir yanıta dönüştürür.
Bir function calling döngüsünün yaşam adımları
Kullanıcının isteğinden nihai yanıta kadar function calling'in izlediği temel adımlar.
- 1
Araçları tanımla
Modele çağırabileceği fonksiyonlar bir json şema listesiyle tanıtılır: ad, açıklama ve argümanlar.
- 2
Model niyeti üretir
Model, kullanıcının isteğini anlar ve hangi fonksiyonu hangi argümanlarla çağıracağını JSON olarak döndürür.
- 3
Uygulama çalıştırır
Backend, önerilen çağrıyı doğrular ve gerçek fonksiyonu (API, veritabanı) çalıştırır.
- 4
Sonuç modele döner
Fonksiyonun ürettiği sonuç modele geri verilir; model bunu doğal dilde yanıta çevirir.
Bu döngünün önemi, sorumluluğun net biçimde ayrılmasında yatar. Model "ne yapılması gerektiğini" önerir; uygulama "gerçekten ne yapılacağına" karar verir ve yürütür. Bu ayrım, hem güvenliğin hem de güvenilirliğin temelidir: model yanlış bir çağrı önerse bile, uygulama katmanı bu çağrıyı doğrulamadan çalıştırmak zorunda değildir.
JSON Şema: Fonksiyonlar Modele Nasıl Tanıtılır?
Function calling'in kalbinde json şema (JSON schema) bulunur. Model, hangi fonksiyonların var olduğunu ve nasıl çağrılacağını doğaüstü bir sezgiyle değil, kendisine verilen açık bir şemayla bilir. Her fonksiyon için bir ad, insanın okuyabileceği bir açıklama ve argümanların yapısını tanımlayan bir json şema sağlanır.
Şema, her argümanın adını, tipini (metin, sayı, boolean), izin verilen değerlerini ve hangilerinin zorunlu olduğunu belirtir. Örneğin bir `ucusAra` fonksiyonu için şema; `kalkisSehri` ve `varisSehri` alanlarının zorunlu metin, `tarih` alanının ise belirli bir formatta olması gerektiğini söyleyebilir. Model çağrısını bu şemaya uygun üretir; böylece çıktı yalnızca akıcı değil, aynı zamanda programatik olarak doğrulanabilir ve güvenilir olur.
Function Calling ve Araç Kullanımı Arasındaki İlişki
Function calling ile araç kullanımı (tool use) çoğu zaman aynı anlamda kullanılır ve pratikte iç içedir. "Araç" (tool), modelin çağırabileceği herhangi bir yetenektir: bir hava durumu API'si, bir hesap makinesi, bir veritabanı sorgusu veya bir web araması. Function calling ise modelin bu araçları çağırma mekanizmasıdır.
Bu ilişki, modern yapay zeka sistemlerinin temelini oluşturur. Bir modele araç kullanımı yeteneği kazandırmak, onu pasif bir metin üreticisinden aktif bir problem çözücüye dönüştürür. Model artık yalnızca "bildiğini" söylemez; gerektiğinde doğru aracı çağırarak bilmediğini öğrenir veya yapamadığını yaptırır. Bu yetenek, bir modeli AI agent hâline getiren çekirdek mekanizmadır; agent'lar, art arda araç çağrıları yaparak karmaşık görevleri adım adım tamamlar.
Function Calling ile API Entegrasyonu
Kurumsal değer, function calling gerçek sistemlere bağlandığında ortaya çıkar. Modelin ürettiği yapılandırılmış çağrı, doğrudan bir api entegrasyonu tetikleyebilir: CRM'den müşteri kaydı çekmek, bir ödeme başlatmak, bir destek kaydı oluşturmak veya bir envanteri sorgulamak. Model doğal dildeki isteği alır, uygulama katmanı bunu ilgili API çağrısına çevirir.
| Boyut | Function Calling | Klasik Sabit Kod |
|---|---|---|
| Girdi biçimi | Doğal dil (esnek) | Katı form/parametre |
| Niyet çözümleme | Model anlar ve eşler | Geliştirici elle kodlar |
| Yeni senaryo eklemek | Yeni araç tanımı yeter | Yeni akış kodu gerekir |
| Belirsiz isteklere uyum | Yüksek | Düşük |
| Doğrulama sorumluluğu | Uygulamada (şart) | Kodun içinde |
Buradaki güç, esnekliktedir: kullanıcının isteğini önceden her olası biçimde kodlamak yerine, modele araçları tanıtırsınız ve o, doğal dildeki isteği doğru api entegrasyonu çağrısına eşler. Ancak bu esneklik, doğrulama sorumluluğunu uygulama katmanına yükler — modelin önerdiği her çağrı, çalıştırılmadan önce kontrol edilmelidir.
Function Calling ile MCP Arasındaki İlişki
Her model sağlayıcısının function calling'i biraz farklı bir formatla sunması, geliştiriciler için bir sorun yaratır: aynı aracı her model için ayrı ayrı tanımlamak. MCP (Model Context Protocol) tam olarak bu parçalanmayı çözmek için doğmuş açık bir standarttır. Anthropic tarafından ortaya konan MCP, araçların ve veri kaynaklarının modele nasıl tanıtılacağını ortak bir protokolle standartlaştırır.
MCP'yi function calling'in üzerine oturan bir katman olarak düşünebilirsiniz. Function calling "bir model bir aracı nasıl çağırır" sorusunu yanıtlar; MCP ise "bu araçlar farklı modeller ve uygulamalar arasında nasıl ortak bir dille paylaşılır" sorusunu yanıtlar. Bir aracı bir kez MCP formatında tanımlarsınız ve onu destekleyen her modelle kullanabilirsiniz. Bu ilişkinin derinlemesine açıklaması için MCP nedir rehberine göz atabilirsiniz.
Gerçek Dünyada Function Calling Örnekleri
Function calling'i somutlaştırmanın en iyi yolu, gündelik senaryolara bakmaktır. OpenAI, Google ve Anthropic gibi sağlayıcıların modelleri bu yeteneği sunar ve pratikte hemen her sektörde aynı desen tekrar eder: model isteği anlar, doğru aracı önerir, uygulama çalıştırır.
- Müşteri destek asistanı: Kullanıcı "geçen haftaki siparişim nerede?" diye sorar. Model `siparisDurumuGetir(siparisId)` fonksiyonunu doğru argümanla çağırmayı önerir; uygulama kargo API'sinden gerçek durumu çeker ve model bunu net bir cümleye dönüştürür.
- İç dokümantasyon botu: Bir çalışan "izin politikası nedir?" diye sorduğunda model bir RAG aracını (`belgeAra(sorgu)`) çağırarak ilgili paragrafı getirir ve yanıtı ona dayandırır.
- Randevu ve rezervasyon: "Salı öğleden sonraya bir toplantı ayarla" isteği, `takvimeEkle(baslik, tarih, saat)` çağrısına eşlenir; uygulama takvim API'sine yazar.
- Finans ve raporlama: "Bu çeyreğin satış özetini çıkar" isteği, bir veritabanı sorgu aracını tetikler ve model dönen veriyi okunabilir bir özete çevirir.
Bu örneklerin ortak paydası, doğal dildeki belirsiz isteğin yapılandırılmış ve güvenilir bir eyleme dönüşmesidir. Kullanıcı bir form doldurmaz; sadece konuşur, function calling gerisini yapılandırır. Türkiye'deki kurumların çoğu için ilk somut değer de tam burada — mevcut API'lerin üzerine doğal dilli bir katman koymakta — ortaya çıkar.
Function Calling'in Sınırları: Model Yanlış Çağrı Ürettiğinde
Function calling güçlü olsa da kusursuz değildir; modelin ürettiği her çağrı doğru değildir. En sık görülen sınırlar şunlardır. Model bazen var olmayan bir fonksiyonu "uydurabilir" (halüsinasyon) veya doğru fonksiyonu seçip yanlış argümanlar üretebilir; örneğin bir tarihi yanlış formatta ya da eksik gönderebilir. Bu yüzden çıktıyı json şema ile doğrulamak seçenek değil, zorunluluktur.
İkinci sınır, çok araçlı karmaşıklıktır: modele onlarca fonksiyon tanıttığınızda, doğru olanı seçme olasılığı düşer ve açıklamaların kalitesi kritik hâle gelir. Üçüncüsü, sıralı akıl yürütme gerektiren görevlerde model yanlış sırada çağrı üretebilir. Bu sınırların pratik sonucu nettir: function calling, uygulamanın sağlam bir doğrulama, hata yönetimi ve gerektiğinde yeniden deneme katmanıyla sarılmalıdır. Doğru araç seçimini iyileştirmek, çoğu zaman modeli değiştirmekten değil, araç açıklamalarını ve prompt'u netleştirmekten geçer.
Function Calling'in Güvenlik Boyutu ve Yaygın Hatalar
Function calling güçlüdür, ama gücü aynı zamanda risk kaynağıdır. En kritik ilke şudur: model bir eylem önerir, ama onu asla doğrudan yürütmez. Güvenlik açığı neredeyse her zaman modelde değil, modelin önerdiği çağrıyı doğrulamadan çalıştıran uygulamada oluşur.
- Argüman doğrulaması yapmamak: Modelin ürettiği argümanları json şema ve iş kurallarına göre doğrulamadan çalıştırmak, hatalı veya kötü niyetli girdiye kapı açar.
- Yetki kontrolü eksikliği: Model bir kullanıcının erişemeyeceği bir fonksiyonu önerebilir; yetki kontrolü uygulama katmanında zorlanmalıdır, modele bırakılamaz.
- Kritik eylemlerde insan onayı olmaması: Para transferi, veri silme gibi geri alınamaz eylemlerde modelin önerisini doğrudan çalıştırmak yerine bir onay adımı eklemek gerekir.
- Belirsiz araç açıklamaları: Kötü yazılmış açıklamalar modelin yanlış aracı seçmesine yol açar; bu bir güvenlik değil ama güvenilirlik sorunudur.
Türkiye bağlamında, kişisel veri içeren fonksiyonlar KVKK ile birlikte tasarlanmalıdır: hangi verilere hangi kullanıcı adına erişileceği ve bu erişimin nasıl loglanacağı en baştan planlanmalıdır. Güvenli function calling, "modele güvenmek" değil, "modelin önerisini her zaman doğrulamak" ilkesiyle kurulur.
Sıkça Sorulan Sorular
Function calling ile model kodu kendisi mi çalıştırıyor?
Hayır. Model yalnızca hangi fonksiyonun hangi argümanlarla çağrılması gerektiğini JSON olarak üretir; gerçek çalıştırmayı sizin uygulamanız (backend) yapar. Bu ayrım güvenliğin temelidir: karar öneren model ile eylemi yürüten kod birbirinden ayrıdır.
Function calling ile prompt engineering aynı şey mi?
Hayır. Prompt engineering modele nasıl talimat vereceğinizle ilgilidir; function calling ise modelin yapılandırılmış bir eylem çıktısı üretmesini sağlayan mekanizmadır. İkisi birlikte çalışır: iyi bir prompt, doğru fonksiyon çağrısı üretme olasılığını artırır.
Function calling ve json şema arasındaki ilişki nedir?
Her fonksiyon modele bir json şema ile tanıtılır. Şema, fonksiyonun adını, aldığı argümanların tiplerini ve hangilerinin zorunlu olduğunu tanımlar. Model, çağrısını bu şemaya uygun üretir; şema olmadan güvenilir ve doğrulanabilir çağrı üretilemez.
Function calling ile MCP arasındaki fark nedir?
Function calling bir modelin tekil yeteneğidir; MCP (Model Context Protocol) ise bu yeteneği standartlaştıran açık bir protokoldür. MCP sayesinde aynı araçlar tek bir formatla tanımlanır ve farklı modeller ile uygulamalar arasında yeniden kullanılabilir.
Function calling güvenli mi?
Mekanizmanın kendisi güvenlidir çünkü model doğrudan eylem yapmaz, yalnızca öneri üretir. Risk, uygulamanın bu öneriyi doğrulamadan çalıştırmasındadır. Argümanları şemaya göre doğrulamak, yetki kontrolü uygulamak ve kritik eylemlerde insan onayı istemek güvenliğin temelidir.
Özetle: Function Calling Nedir?
Özetle function calling nedir sorusunun cevabı şudur: bir dil modelinin doğal dildeki isteği anlayıp hangi fonksiyonu hangi argümanlarla çağıracağını yapılandırılmış JSON olarak ürettiği mekanizma. Model kodu kendisi çalıştırmaz; json şema ile tanıtılan araçlar için yalnızca çağrı niyetini üretir, gerçek çalıştırmayı uygulama yapar. Araç kullanımı ve api entegrasyonu bu mekanizmayla mümkün olur; MCP ise onu standartlaştırır. Temel için LLM nedir, prompt engineering nedir ve MCP nedir rehberlerine göz atabilir, agent tarafı için AI agent nedir yazısını okuyabilir, kurumsal bir entegrasyon için yapay zeka danışmanlığı ile başlayabilirsiniz.
Danismanlik Baglantilari
Bu yazıya en yakın consulting sayfaları
Bu içerikten sonraki mantıklı adım için en ilgili solution, role ve industry landing'lerini burada görebilirsin.
AI Agent ve Workflow Otomasyonu
Tek adimli chatbot'larin otesine gecen; arac, kural ve insan onayi ile ilerleyen AI destekli is akislarina gecis.
E-Ticaret icin Arama, Oneri ve Destek Asistanlari
Urun kesfi, destek operasyonu ve icerik sureclerini yapay zeka ile guclendirerek gelir ve memnuniyet artisi saglayan sistemler.
Kurumsal RAG Sistemleri Gelistirme
Sirket ici bilgiye kaynakli, guvenli ve denetlenebilir erisim saglayan uretim seviyesinde RAG mimarileri.