AI APIs

OpenAI Fonksiyon Çağırma ve Yapılandırılmış Çıktılar ile Üretim Seviyesinde AI Ajanları Oluşturma

Sohbet Botlarından Güvenilir Ajanlara Evrim

Yıllarca, Büyük Dil Modelleri (LLM'ler) konuşma becerileri nedeniyle övülürken, deterministik olmamaları nedeniyle eleştirildi. Bir sohbet botu yüksek doğrulukla bir şiir yazabilir veya genel kültür sorusunu yanıtlayabilirken, parametreleri halüsinasyon olmadan kesin veri çıkarımı yapmada veya belirli eylemleri yürütmekte zorlanıyordu. Prototip ile üretim seviyesinde bir AI ajanı arasındaki boşluk, sıklıkla bu istikrarsızlıktı. Bugün OpenAI, bu boşluğu doldurmak için iki güçlü özellik tanıttı: Fonksiyon Çağırma (Function Calling) ve Yapılandırılmış Çıktılar (Structured Outputs). Bu araçlar, geliştiricilerin model yanıtlarını belirli şemalara kısıtlamasını sağlayarak, öngörülemez metin üretimini deterministik ve yürütülebilir koda dönüştürür. Bu yazıda, harici sistemlerle güvenilir şekilde etkileşim kurabilen sağlam AI ajanları oluşturmak için bu özelliklerin nasıl kullanılacağını keşfedeceğiz.

Temel Teknolojileri Anlamak

Koda dalmadan önce, LLM çıktılarını kontrol etmek için kullanılan iki temel mekanizma arasındaki farkı anlamak önemlidir. Fonksiyon Çağırma, modelin bir fonksiyonu çağırması gerektiğini ne zaman belirleyeceğini ve bu fonksiyon için argümanları sağlayabilmesini sağlar. Aksiyon kümesinin açık uçlu veya dinamik olduğu senaryolar için idealdir; örneğin siparişleri sorgulayabilen, abonelikleri iptal edebilen veya randevu oluşturabilen bir müşteri destek ajanı gibi. Öte yandan Yapılandırılmış Çıktılar, modelin tüm yanıtının sağlanan bir JSON Şemasına uymasını zorlar. Bu, bağlamdan bağımsız olarak ayrıştırma için tutarlı bir yapıya ihtiyaç duyduğunuz veri çıkarımı görevlerinde özellikle kullanışlıdır. Fonksiyon Çağırma, modelin önceden tanımlanmış bir fonksiyonu seçme yeteneğine dayanırken, Yapılandırılmış Çıktılar yanıtın şeklini kısıtlar ve genellikle daha yüksek tutarlılık oranları elde eder.

Yapılandırılmış Çıktılar ile Uygulama

Python ve OpenAI SDK kullanarak pratik bir örneğe bakalım. Kullanıcı e-postalarından seyahat rezervasyonlarına ilişkin temel bilgileri çıkaran bir ajan oluşturacağız. LLM'nin JSON'u doğru biçimlendirmesini ummak yerine, bunu bir Pydantic modeli aracılığıyla zorlayacağız.
from openai import OpenAI
from pydantic import BaseModel, Field
from typing import List

client = OpenAI(api_key="your-api-key")

class TripDetails(BaseModel):
    destination: str = Field(description="The city or location of the trip")
    start_date: str = Field(description="Start date in YYYY-MM-DD format")
    return_date: str = Field(description="Return date in YYYY-MM-DD format")
    travel_mates: List[str] = Field(default=[], description="Names of other travelers")

response = client.beta.chat.completions.parse(
    model="gpt-4o-2024-08-06",
    messages=[
        {"role": "system", "content": "You are a helpful assistant that extracts trip details."},
        {"role": "user", "content": "I'm planning a trip to Tokyo with Alice and Bob starting next Monday, returning on the 20th."}
    ],
    response_format=TripDetails,
)

trip = response.choices[0].message.parsed
print(f"Destination: {trip.destination}")
Bu örnekte, `parse` yöntemi çıktının `TripDetails` şemasına sıkı sıkıya uygunluğunu sağlar. LLM verileri doğru şekilde çıkaramazsa, hatalı JSON döndürmek yerine bir doğrulama hatası yükseltir; bu da uygulamanızın geri denemeleri veya kullanıcı istemlerini daha zarif bir şekilde yönetmesine olanak tanır.

Üretim İçin En İyi Uygulamalar

Bu ajanları dağıtırken aşağıdaki en iyi uygulamaları göz önünde bulundurun: 1. **Net Dokümantasyon**: Pydantic modellerinizi veya fonksiyon tanımlarınızı API dokümantasyonunuz olarak ele alın. `description` alanları, LLM'nin muhakemesini yönlendirmek için kritiktir. 2. **Hata Yönetimi**: Güçlü bir geri deneme mantığı uygulayın. Bir yapılandırılmış çıktı başarısız olursa, hatayı modelin önceki çıktısını düzeltmek için bir sistem talimatı olarak modele geri besleyebilirsiniz. 3. **Maliyet Yönetimi**: Yapılandırılmış çıktılar, yanıt uzunluğunu azalttıkları için bazen serbest biçimli metinden daha az token verimli olabilir, ancak her zaman spesifik kullanım durumunuzda kullanımı izleyin.

Sonuç

Fonksiyon Çağırma ve Yapılandırılmış Çıktıların entegrasyonu, AI uygulama geliştirme olgunlaşmasında önemli bir kilometre taşıdır. Kırılgan regex tabanlı ayrıştırmadan şema odaklı üretime geçerek geliştiriciler, sadece zeki değil aynı zamanda güvenilir ve güvenli ajanlar oluşturabilirler. Ekosistem gelişmeye devam ettikçe, bu desenler üretim ortamlarındaki ciddi her türlü AI entegrasyonu için standart haline gelme eğiliminde olacaktır.
Share: