AI Agents: Function Kullanımı

By | January 29, 2025

Agent sistemlerinde görevleri daha modüler ve yönetilebilir hale getirmek için kullanılan yöntemlerden biri de Function Calling’dir. Bu yaklaşım, klasik yazılım geliştirme mantığındaki fonksiyon kullanımına oldukça benzer, ancak burada fonksiyonları çağıran bir yazılım geliştirici değil, bir dil modelidir.

Fonksiyonlar Nasıl Çalışır?

Tıpkı bir yazılımcının program içerisinde çeşitli görevleri yerine getirmek için fonksiyonlar yazması gibi, bir model de tanımlı fonksiyonlar setine erişebilir ve:

  • Hangi fonksiyonun ne zaman çağrılacağına karar verir,
  • Her fonksiyon için gerekli parametreleri belirler,
  • Ancak doğrudan çalıştırma (execute) işlemini gerçekleştirmez.

Fonksiyonlar ile Extensions arasındaki en temel farklar şunlardır:

  1. Model, fonksiyon adını ve argümanlarını üretir, ancak bu çağrıyı kendisi gerçekleştirmez.
  2. Fonksiyonlar client-side yani istemci tarafında çalıştırılırken, Extensions agent-side yani agent tarafında yürütülür.

Functions Ne Zaman Tercih Edilir?

Bir geliştirici, aşağıdaki nedenlerden dolayı Extensions yerine Functions kullanmayı tercih edebilir:

  • API çağrısının doğrudan agent mimarisi dışında bir katmanda yapılması gerekiyordur.
    (Örneğin, middleware, frontend framework gibi bileşenlerde.)
  • Güvenlik veya kimlik doğrulama kısıtları vardır.
    (API internete açık değildir ya da agent altyapısından erişilemiyordur.)
  • Zamanlama veya işlem sırası ile ilgili kısıtlar vardır.
    (Örneğin: batch işlemler, insan onayı gerektiren akışlar.)
  • API yanıtı üzerinde ilave veri işleme veya filtreleme gerekiyordur.
    Örneğin, API sonuçları filtrelenemiyor ancak istemci tarafında filtrelenmesi mümkün.
  • Geliştirici, API altyapısı dağıtmadan agent üzerinde iteratif geliştirme yapmak istiyordur.
    Bu durumda Function Calling, gerçek API yerine bir çeşit “stub” görevi görerek geliştirme sürecini hızlandırabilir.

Function Calling: Farklı Kullanım Senaryoları

Function Calling, yalnızca agent mimarisi içinde değil, çeşitli yazılım mimarilerinde de fayda sağlayabilecek esnek bir çözümdür. İşte bazı senaryolar:

  • Bir dil modeli, size kodunuzda kullanabileceğiniz bir fonksiyonu önerebilir, ancak bu fonksiyonun çalıştırılması gerekmez.
    → Böylece fonksiyon bilgisi içinde API kimlik bilgileri yer almak zorunda kalmaz.
  • Asenkron işlemler yürütülüyorsa ve bu işlemler birkaç saniyeden uzun sürüyorsa, bu yapı asynchronous execution için idealdir.
  • Fonksiyonlar, modelin çalıştığı ortamdan farklı bir cihazda ya da sistemde çalıştırılmak isteniyorsa, Function Calling bu ayrımı yönetmek için kullanılabilir.

Örneğin;

  • Bir dil modeli (yapay zeka modeli) kullanarak bir fonksiyon önerisi almak istiyorsunuz.
  • Ancak fonksiyon içinde kimlik bilgilerini (credentials) koymak istemiyorsunuz.
  • Dil modeli, önerdiği fonksiyonu çalıştırmadığı için fonksiyon içinde kimlik bilgilerine ihtiyacınız yoktur.

Bunu bir örnekle açıklayalım:Diyelim ki, OpenAI’nin API’sini çağıran bir Python fonksiyonu yazmak istiyorsunuz. Eğer bu fonksiyonu gerçekten çalıştıracak olsaydınız, API anahtarınızı (API Key) eklemeniz gerekirdi:

import openai

def call_openai(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}],
        api_key="SENIN-API-ANAHTARIN"
    )
    return response

Ancak, dil modelinden sadece bu fonksiyonun yapısını önermesini istiyorsanız, API anahtarını koymanıza gerek yoktur. Çünkü model, fonksiyonu sadece önerir ama çalıştırmaz:

import openai

def call_openai(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    return response

Buradaki temel nokta: Yapay zeka modeli, önerdiği fonksiyonu çalıştırmayacağı için içine kimlik bilgilerini eklemenize gerek yoktur. Model sadece kod yapısını verir, ancak siz bunu kullanırken kendi kimlik bilgilerinizi manuel olarak eklemelisiniz.

Sonuç

Functions, agent’ların daha esnek, güvenli ve kontrollü bir şekilde görevleri yürütmesini sağlayan önemli bir bileşendir. Gerçek zamanlı API çağrılarının mümkün olmadığı ya da istenmediği durumlarda, modelin yalnızca ne yapılacağını tarif etmesi, işlemin ise farklı bir sistemde yürütülmesi gereken senaryolarda büyük avantaj sunar. Bu yapı, agent sistemlerinin yazılım geliştirme süreçlerine entegre edilmesini kolaylaştırırken, modüler ve güvenli bir mimari oluşturulmasına da katkı sağlar.

Kaynak: AI Agent Books – Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic

Leave a Reply

Your email address will not be published. Required fields are marked *