AI Agents

Araç Çağırmanın Mekanikleri: Yetkin AI Ajanları Oluşturma

Yapay Zeka'nın hızla gelişen manzarasında, Büyük Dil Modelleri (LLM'ler) metin üretimi, akıl yürütme ve kod sentezinde etkileyici yetenekler sergilemiştir. Ancak önemli bir sınırlama devam etmektedir: LLM'ler doğası gereği dış dünyadan izole durumdadır. Onlar yerel olarak canlı bir veritabanını sorgulayamaz, bir kullanıcının takvimine erişemez veya bir Python betiği çalıştıramaz. İşte burada Araç Çağırma (Function Calling olarak da bilinir), statik zeka ile dinamik eylem arasındaki kritik köprü haline gelir. AI ajanları oluşturan orta ve ileri düzey geliştiriciler için araç çağırma konusunda uzmanlaşmak sadece bir optimizasyon değil, üretim öncesi uygulamalar için bir ön koşuldur.

Araç Çağırma Nedir?

Araç çağırma, bir LLM'nin düz metin yanıtları yerine belirli işlev çağrıları çıktısı vermesini sağlayan yapılandırılmış bir protokoldür. Bir geliştirici modele mevcut araçları tanımlayan bir şema sağladığında, model hangi aracı kullanacağını, hangi argümanları geçeceğini ve ne zaman doğal dil yanıtı üreteceğine karar verebilir. Bu süreç, LLM'yi pasif bir sohbet botundan harici sistemlerle etkileşime girebilen aktif bir ajana dönüştürür.

Bir Ajan Döngüsünün Mimarisi

Araç çağırma uygulaması, genellikle ReAct (Reasoning and Acting) döngüsü veya basit bir işlev çağırma döngüsü olarak adlandırılan belirli bir mimari desen gerektirir. Akış genellikle üç aşamadan oluşur:

  1. İstek: Kullanıcı bir istem (prompt) LLM'ye gönderir.
  2. Karar: LLM, istemi ve sağlanan araç şemalarını analiz eder. Doğal bir dil yanıtı veya araç adı ve argümanları içeren yapılandırılmış bir nesne döndürebilir.
  3. Yürütme: Uygulama, araç çağrısını yakalar, ana kodda (örneğin JavaScript, Python) ilgili işlevi yürütür ve sonucu LLM'ye geri besler.
  4. Yanıt: LLM, araç çıktısını son, insan tarafından okunabilir bir cevaba dönüştürür.

Python ile Pratik Uygulama

Python kullanarak pratik bir örneğe bakalım. Mevcut hava durumunu hesaplayan basit bir araç tanımlayacağız. LangChain gibi birçok çerçeve olsa da, hata ayıklama ve optimizasyon için ham JSON yapısını anlamak hayati önem taşır.

import json

def get_weather(location: str) -> str:
    """
    Hava durumu verilerini almak için basit bir araç.
    Gerçek bir senaryoda bu, harici bir API'yi çağırır.
    """
    if location == "London":
        return "60 derece, bulutlu"
    return "Bilinmeyen konum"

# LLM için araç şemasını tanımlayın
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Belirli bir konum için mevcut hava durumunu alın",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "Şehir ve eyalet, örn. San Francisco, CA"
                    }
                },
                "required": ["location"]
            }
        }
    }
]

user_query = "London'da hava nasıl?"

# Hipotetik LLM yanıt yapısı
llm_response = {
    "content": None,
    "tool_calls": [
        {
            "id": "call_123",
            "type": "function",
            "function": {
                "name": "get_weather",
                "arguments": '{"location": "London"}'
            }
        }
    ]
}

# Aracı yürütün
if llm_response['tool_calls']:
    tool_call = llm_response['tool_calls'][0]
    tool_name = tool_call['function']['name']
    tool_args = json.loads(tool_call['function']['arguments'])
    
    if tool_name == "get_weather":
        result = get_weather(**tool_args)
        print(f"Araç Çıktısı: {result}")
        
    # Son yanıtı oluşturmak için sonucu LLM'ye geri besleyin
    # final_response = llm.generate(content=f"Sonuç: {result}")

Üretim İçin En İyi Uygulamalar

Kavram basit olsa da, üretim uygulaması karmaşıklık getirir. İlk olarak, şema doğrulama hayati önem taşır. Çalışma zamanı hatalarını önlemek için LLM tarafından oluşturulan argümları her zaman gerçek işlev imzalarınızla doğrulayın. İkinci olarak, hata işleme uygulayın. Bir araç başarısız olursa (örneğin, bir API zaman aşımı), hata mesajı LLM'ye geri beslenmelidir ki kurtarmayı deneyebilsin veya kullanıcıya hatayı açıklayabilsin. Son olarak, güvenliği göz önünde bulundurun. Ham kullanıcı girdisini asla temizleme olmadan yürütülebilir koda geçirmeyin. Araçlar harici API'ler gibi ele alınmalı ve en az ayrıcalık ilkeleri uygulanmalıdır.

Sonuç

Araç çağırma, AI ajanlarının metin üretiminin ötesine geçerek fayda alanına girmesini sağlayan mekanizmadır. Yapılandırılmış şemalar sağlayarak ve yürütme döngüsünü doğru bir şekilde yöneterek, geliştiriciler yüksek güvenilirlikle karmaşık, çok adımlı görevleri yerine getirebilen ajanlar oluşturabilir. Modeller daha karmaşık araç setlerini ve paralel yürütmeyi destekleyecek şekilde gelişirken, araç çağırmanın temel mekaniklerini anlamak, Yapay Zeka ve uygulama geliştirme kesişiminde çalışan herhangi bir mühendis için temel önemini koruyacaktır.

Share: