Function Calling (Tool Use)
İşlev çağırma veya araç kullanımı, bir dil modelinin JSON bağımsız değişkenleriyle harici bir işlevi çağırmasını sağlar; uygulama bu işlevi çalıştırıp sonucu döndürür.
Araç çağırma veya araç kullanımı olarak da bilinen işlev çağırma, bir büyük dil modelinin (LLM) düz metin yerine harici bir işlevi çalıştırma isteğiyle yanıt verme yeteneğidir. Uygulama, kullanılabilir her aracı bir ad, amaç ve argümanlarına yönelik bir JSON Şeması ile tanımlar. Bir istek canlı veri veya bir eylem gerektirdiğinde model, aracın adını ve JSON argümanlarını içeren bir yanıt verir; uygulama işlevi çalıştırır ve model sonuçtan yararlanarak yanıtını yazar. Model hiçbir şeyi kendi başına çalıştırmaz. Meta'nın Toolformer modeli, Şubat 2023'te bir modelin kendi metnine API çağrıları eklemeyi kendi kendine öğrenebileceğini gösterdi. OpenAI, 13 Haziran 2023'te API'sine işlev çağırma özelliğini ekledi; işlev gerektiğinde bunu algılamak ve imzasına uygun argümanlar oluşturmak üzere ince ayar yapılmış modeller kullandı. Artık tüm büyük model sağlayıcıları bu özelliği destekliyor; açık modeller de bu özelliği talimat ayarı ve sohbet şablonları aracılığıyla öğreniyor.
İşlev Çağırma Nasıl Çalışır?#
Bir araç çağrısı, model ile uygulama arasında gidip gelen bir döngüdür ve model ihtiyacı olan bilgileri alana kadar tekrarlanır:
Aşağıdaki kod, API anahtarı olmadan çalışabilmesi için model yanıtını metin olarak yazarak OpenAI'nin işlev çağırma kılavuzundaki biçimde tek bir gidiş-dönüşün her iki tarafını da çalıştırır:
import json
from jsonschema import validate
# İstekle birlikte gönderilen araç tanımı: bir ad, bir amaç ve bağımsız değişkenler için bir JSON Schema
tool = {
"type": "function",
"name": "get_order_status",
"description": "Look up the shipping status of an order by its number.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string", "pattern": "^[0-9]+$"}},
"required": ["order_id"],
},
}
# Modelin çıktısı, bağımsız değişkenleri JSON dizesi olarak gelen bir işlev çağrısıdır
call = {"type": "function_call", "call_id": "call_1", "name": "get_order_status", "arguments": '{"order_id": "4417"}'}
args = json.loads(call["arguments"])
validate(args, tool["parameters"]) # Bağımsız değişkenler şemayı ihlal ederse hiçbir şey çalışmadan önce hata verir
# Uygulama kendi işlevini çalıştırır ve sonucu aynı call_id altında döndürür
orders = {"4417": "Shipped, arriving Thursday"}
print({"type": "function_call_output", "call_id": call["call_id"], "output": orders[args["order_id"]]})Model yeniden çağrılmadan önce uygulamanın konuşmaya eklediği öğe olan {'type': 'function_call_output', 'call_id': 'call_1', 'output': 'Shipped, arriving Thursday'} değerini yazdırır. Bir araçta "strict": true ayarlamak, API'nin kısıtlı kod çözümleme uygulamasını sağlar; böylece modelin oluşturduğu bağımsız değişkenler her zaman şemayla eşleşir.
Araçları Seçme ve Zincirleme#
Modeller tek turda, örneğin iki siparişi aynı anda kontrol etmek için, birbirinden bağımsız birkaç çağrı üretebilir ve bir uygulama belirli bir aracı zorunlu kılabilir, herhangi bir aracın kullanılmasını isteyebilir ya da bir tur boyunca araçları yasaklayabilir. Her sonucun bir sonraki çağrıyı belirlediği, turlar boyunca çağrıları zincirlemek; modeli, bir aracı altyapısı içinde çalışan bir AI aracısına dönüştüren döngüdür. Berkeley İşlev Çağrısı Liderlik Tablosu bu becerileri değerlendirir: doğru işlevi seçmek, bağımsız değişkenlerini doldurmak, paralel ve çok turlu çağrılar yapmak ve uygun araç olmadığında isteği reddetmek. Araç sonuçları modele girdi olarak döndüğü için, bir aracın getirdiği web sayfası veya belge istem enjeksiyonu içerebilir; bu nedenle uygulamalar araçlara yalnızca ihtiyaç duydukları en düşük ayrıcalıkları verir ve satın alma, silme veya mesaj gönderme işlemlerinden önce bir kişiye danışır.
Görme modelleri doğal araçlardır; çünkü çıktıları zaten yapılandırılmıştır. Ultralytics YOLO içinde Results.summary(), bir YOLO26 modelinin bulduğu her nesneyi sınıf adı, sınıf indeksi, güven skoru ve kutu koordinatlarından oluşan bir sözlük olarak döndürür. json.dumps bu listeyi doğrudan bir araç sonucuna dönüştürür; böylece bir sohbet modeli veya görme-dil modeli (VLM), tahmin modunu çağırarak fotoğraftaki nesneleri sayabilir ve konumlarını bulabilir.
İşlev Çağrısı ve İlgili Terimler#
- Bilgisayar kullanım aracıları: API'si olmayan uygulamaları da kapsayacak şekilde yazılımı ekran görüntüleri, tıklamalar ve tuş vuruşlarıyla kullanır. API mevcut olduğunda işlev çağrısı, aynı sonuca tek bir yapılandırılmış istekle ulaşır.
- Yapılandırılmış çıktılar: Bir modelin son yanıtını, örneğin faturadan alanları çıkarmak için, bir şemayla sınırlar. İşlev çağrısı da bir eylem istemek için aynı şemaları kullanır ve karşılığında bir sonuç bekler.
- Getirimle zenginleştirilmiş üretim (RAG): İsteme getirilen belgeleri ekler. Bir arama aracı RAG uygulayabilir; aracı RAG ise modelin ne zaman ve ne arayacağına karar vermesini sağlar.
- Model Bağlam Protokolü (MCP): Anthropic tarafından Kasım 2024'te tanıtılan ve uygulamaların harici programlar tarafından sunulan araçları keşfetmesini sağlayan açık bir protokoldür. Model, bir MCP aracını yine işlev çağrısı yoluyla çalıştırır.










