LLM'lerde araç çağırma: function calling akışı ve tasarım ilkeleri
Beceri rehberi

LLM'lerde araç çağırma: function calling akışı ve tasarım ilkeleri

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

LLM function calling akışı: araç tanımlama, parametre şeması, uygulamanın çağrıyı çalıştırması, güvenlik, hata yönetimi, ileri desenler ve değerlendirme.

Function calling nedir ve neden gerekir?

Function calling (araç çağırma, tool use), bir dil modelinin yalnızca metin üretmekle kalmayıp, uygulamanızın tanımladığı işlevleri çağırmak için yapılandırılmış bir istek üretebilmesidir. Model bir fonksiyonu kendisi çalıştırmaz. Hangi aracın hangi parametrelerle çağrılması gerektiğini belirten bir çıktı verir; çağrıyı uygulama yapar, sonucu modele geri iletir ve model bu sonucu kullanarak yanıtını tamamlar.

Bu yapı gereklidir, çünkü dil modeli kendi başına güncel bilgiye, şirket verisine ya da dış sistemlere erişemez. "Siparişim nerede?" sorusuna yanıt vermek için sipariş sistemine bakmak, "yarın toplantı koy" isteğini yerine getirmek için takvimi güncellemek gerekir. Function calling, modelin dil yeteneğini gerçek sistemlerle bağlayan köprüdür.

Ortaya çıkan fark önemlidir: araç bağlanmış bir uygulama, soruya hafızadaki bilgiyle cevap vermez; gerçek veriyi çeker, işlemi yapar ve sonucu açıklar. Ayrıca çıktı yapılandırılmış olduğundan, modelin serbest metin ürettiği durumlara göre ayrıştırması çok daha güvenilirdir.

Akış nasıl çalışır? Adım adım döngü

Function calling bir döngüdür. Her uygulamada akış şu adımlardan oluşur:

  • Araçları tanımlama: uygulama, her araç için bir ad, açıklama ve parametre şeması hazırlar. Şema, hangi alanların zorunlu olduğunu, türünü ve izin verilen değerleri belirtir.
  • İstek gönderme: kullanıcı mesajı ve araç tanımları modele iletilir.
  • Model kararı: model, bir aracı çağırmaya mı gerek var yoksa doğrudan yanıt mı verebilir, buna karar verir. Çağrı gerekiyorsa araç adını ve parametre değerlerini yapılandırılmış biçimde üretir.
  • Uygulama çalıştırır: uygulama çağrıyı doğrular, gerçek fonksiyonu veya servisi çalıştırır.
  • Sonucu geri verme: fonksiyonun çıktısı modele bir araç sonucu olarak iletilir.
  • Son yanıt: model sonucu yorumlar ve kullanıcıya doğal dille cevap verir; gerekirse başka bir araç çağırarak döngü sürer.

Örneğin kurgusal bir müşteri destek asistanında kullanıcı siparişinin durumunu sorar. Model bir sipariş sorgulama aracını sipariş numarasıyla çağırmak ister. Uygulama sistemden durumu çeker, modele döner ve model "siparişiniz kargoya verildi" gibi bir yanıt kurar. Model sipariş bilgisini uydurmaz; yalnızca araçtan gelen veriyi kullanır.

İyi bir araç nasıl tasarlanır?

Modelin doğru aracı doğru zamanda doğru parametrelerle çağırması, büyük ölçüde araç tanımının kalitesine bağlıdır.

Ad ve açıklama net olmalıdır. Açıklama, aracın ne işe yaradığını, ne zaman kullanılacağını ve ne zaman kullanılmayacağını anlatmalıdır. Benzer işlevli araçlar varsa aradaki fark açıkça yazılır; belirsizlik yanlış araç seçimine yol açar.

Parametre şeması dar ve açık tutulmalıdır. Zorunlu alanlar işaretlenir, serbest metin yerine mümkün olduğunda sınırlı seçenek listeleri (enum) kullanılır, tarih ve para birimi gibi alanların biçimi tanımlanır. Parametre açıklamasına örnek değer eklemek hatayı azaltır.

Araçlar tek bir işi iyi yapmalıdır. "Her şeyi yapan" tek bir araç yerine, ayrı sorumlulukları olan küçük araçlar modelin karar vermesini kolaylaştırır. Ancak araç sayısı da gereksiz artırılmamalıdır; çok sayıda benzer araç kafa karışıklığı yaratır.

Dönüş değeri de tasarımın parçasıdır. Araç, modelin yorumlayabileceği sade ve ilgili bilgiyi döndürmeli; gereksiz alanlarla dolu devasa çıktılar bağlamı şişirir ve hataya açık hâle getirir. Hata durumlarında anlaşılır mesaj dönmek, modelin kendini düzeltmesini sağlar.

Dış sistemlere ve veri kaynaklarına bağlanma

Araçlar çoğunlukla bir servis API'sini, veri tabanı sorgusunu, arama dizinini ya da dosya işlemini sarmalar. Bağlantı katmanında şu konular önemlidir.

Kimlik doğrulama ve yetki: araç, kullanıcı adına çalışıyorsa yalnızca o kullanıcının erişebildiği veriye ulaşmalıdır. Model aracılığıyla yetki aşımı olmasın diye yetkilendirme araç katmanında, uygulama tarafında yapılır; modelin kararına bırakılmaz.

Giriş doğrulama: model parametre üretir, ama bu parametreler güvenilmez girdidir. Tür, aralık ve biçim kontrolü uygulamada yapılır, veri tabanı sorgularında doğrudan model çıktısını birleştirmek yerine parametreli sorgu kullanılır.

Zaman aşımı ve yeniden deneme: dış servis yavaş ya da hatalı olabilir. Makul zaman aşımı, sınırlı yeniden deneme ve anlaşılır hata dönüşü gerekir.

Standartlaşmış bağlantı: Model Context Protocol (MCP) gibi protokoller, araçların ve veri kaynaklarının modellerle ortak bir biçimde paylaşılmasını sağlamayı hedefler. Her uygulama için özel entegrasyon yazmak yerine, standart bir arayüz üzerinden araçlar sunulabilir.

Güvenlik ve güvenilirlik

Araç kullanan bir model, dış dünyada etki yaratabildiği için ek riskler taşır.

En kritik risk, istem enjeksiyonudur (prompt injection). Araçtan dönen bir web sayfası, e-posta ya da belge içinde gizlenmiş talimatlar modeli yönlendirmeye çalışabilir. Bu nedenle araç sonuçları güvenilir talimat değil, işlenecek veri olarak ele alınır; modele verilen yetkiler en dar düzeyde tutulur.

Yan etkili işlemler için onay mekanizması konur. Veri okuyan araçlar düşük risklidir; ödeme yapan, kayıt silen, e-posta gönderen araçlar ise kullanıcı onayı, limit ve işlem kaydı gerektirir. Geri alınamayan işlemler modelin tek başına karar verdiği akışlara bırakılmamalıdır.

Güvenilirlik için tekrar edilebilirlik düşünülür. Aynı çağrı tekrarlanırsa mükerrer kayıt oluşmaması (idempotent tasarım), döngünün sonsuza gitmemesi için adım sınırı, hata durumunda kullanıcıya dürüst bilgi verilmesi ve tüm çağrıların izlenebilir biçimde kaydedilmesi gerekir.

Kişisel verilerin modele ve araçlara hangi kapsamda aktarıldığı, ilgili veri koruma mevzuatı çerçevesinde değerlendirilmelidir.

İleri desenler ve değerlendirme

Temel akış oturduktan sonra daha karmaşık desenler kullanılabilir.

Paralel çağrılar: model birbirinden bağımsız birden çok araç çağrısını aynı anda isteyebilir; uygulama bunları eş zamanlı çalıştırarak gecikmeyi azaltır.

Zincirleme çağrılar: bir aracın çıktısı, sonraki aracın girdisini oluşturur. Örneğin önce müşteri aranır, ardından o müşterinin siparişleri çekilir.

Yönlendirme ve uzmanlaşma: farklı alanlar için ayrı araç kümeleri ya da ayrı ajanlar tanımlanır ve istek uygun olana yönlendirilir. Araç listesi çok genişse, yalnızca ilgili araçları göstermek model performansını iyileştirir.

Maliyet ve gecikme optimizasyonu: her tur ek istek anlamına gelir. Gereksiz araç çağrılarını azaltmak, sonuçları önbelleğe almak ve çıktıları kısaltmak maliyeti düşürür.

Değerlendirme: araç kullanan sistemler sabit senaryolarla test edilmelidir. Doğru araç seçildi mi, parametreler doğru mu, hata durumunda uygun davranış gösterildi mi? Değişiklik yapıldığında bu test seti yeniden koşularak gerileme yakalanır. Üretimde ise çağrı kayıtları sürekli incelenir.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

Mindset'in Tool Use ve Function Calling eğitiminin modül başlıkları şunlardır: Model Context Protocol (MCP), function calling temelleri, araç tasarımı ve belgeleme, API ve veri kaynaklarına bağlanma, güvenlik ve güvenilirlik, gelişmiş desenler ve optimizasyon.

Başlıkların sırası, bir araç entegrasyonunun doğal gelişimini yansıtır: temel mekanizma, tasarım, bağlantı, güvenlik ve ardından ileri desenler.

İlgili Mindset programı

Tool Use ve Function Calling

Sık sorulanlar

Sık sorulan sorular

Function calling ile MCP aynı şey mi?

Değil. Function calling, modelin yapılandırılmış araç çağrısı üretme yeteneğidir. MCP ise araçların ve veri kaynaklarının modellere ortak bir biçimde sunulmasını hedefleyen bir protokoldür. MCP ile sunulan araçlar da sonuçta modelin araç çağırma mekanizmasıyla kullanılır. Bunlar birbirini tamamlar.

Model aracı gerçekten kendisi mi çalıştırır?

Hayır. Model yalnızca hangi aracın hangi parametrelerle çağrılacağını belirten bir çıktı üretir. Çağrıyı doğrulayan, gerçek işlevi çalıştıran ve sonucu modele geri veren uygulamadır. Bu ayrım, güvenlik ve yetkilendirme kontrollerini uygulama katmanında yapabilmenizi sağlar.

Function calling ile RAG arasındaki fark nedir?

RAG, modelin yanıtını desteklemek için ilgili belgeleri getirip bağlama eklemektir. Function calling ise modelin bir işlevi çağırması, bu bir arama olabileceği gibi işlem yapmak da olabilir. Arama işlevi function calling ile çağrılarak RAG akışı kurulabilir; yani bu yaklaşımlar birlikte de kullanılır.

Model yanlış araç seçerse ne yapılır?

Önce araç açıklamaları ve parametre tanımları gözden geçirilir; benzer araçların farkı net yazılmalıdır. Araç sayısı çoksa ilgili olanlar filtrelenir. Giriş doğrulama hatalı çağrıyı yakalar ve açıklayıcı hata dönmek modelin kendini düzeltmesini sağlar. Gerileme için sabit senaryolarla test edilmelidir.

Hangi dillerde ve çerçevelerde uygulanır?

Kavram dilden bağımsızdır. Modellere erişim sunan çoğu API araç tanımlamayı destekler ve istemci kütüphaneleri çeşitli programlama dillerinde bulunur. Ajan çerçeveleri de bu mekanizma üzerine kuruludur. Güncel arayüz ayrıntıları kullanılan sağlayıcının belgelerinden takip edilmelidir.

Function Calling Nasıl Uygulanır: LLM Araç Kullanımı