Büyük Dil Modelleri (LLM'ler) olgunlaştıkça, üretim mühendisliğindeki odak noktası basit sohbet arayüzlerinden karmaşık, otonom ajan iş akışlarına kaymaktadır. Bu ajanların güvenilir olması için olasılıksal metin üretiminden deterministik veri yapılarına ve hassas dış eylemlere geçmeleri gerekir. xAI API, her ikisi için de güçlü yetenekler sunar, ancak bunları doğru bir şekilde uygulamak şema doğrulaması ve araç kaydı konusunda derin bir anlayış gerektirir.
Belirsiz Çıktı Sorunu
Geleneksel LLM uygulamalarında, ihtiyacınız olan tam JSON yapısını elde etmek son derece zordur. Sıkı kısıtlamalar olmadığında modeller anahtarları uydurabilir, gerekli alanları atlayabilir veya metni markdown blokları içinde sarılı olarak döndürebilir. Bu kırılganlık, aşağı akış işleme hatlarını bozar. Çözüm, API düzeyinde yapılandırılmış çıktılar zorlamaktır; bu, modelin önceden tanımlanmış bir JSON Şemasına sıkı sıkıya uyan veriler döndüğünü garanti eder.
Yapılandırılmış Çıktıları Zorlama
xAI'nin API'si geliştiricilerin bir response_format parametresi geçmesine olanak tanır. Bir json_schema ile yapılandırıldığında, model yalnızca o şemaya uyan geçerli JSON'u çıktı olarak vermeye zorlanır. Bu, yapılandırma ayrıştırmaya, varlık çıkarmaya veya dinamik kod parçacıkları oluşturmaya ihtiyaç duyan ajanlar için kritiktir.
Bir ajanın bir e-postadan iletişim bilgilerini çıkarması gerektiği bir senaryoyu ele alalım. Regex son işleme işlemine güvenmek yerine, şemayı doğrudan istek içinde tanımlayabiliriz.
import xai
client = xai.Client(api_key="your-api-key")
response = client.chat.completions.create(
model="grok-2",
messages=[
{
"role": "user",
"content": "Şu e-postadan detayları çıkar: 'Merhaba, ben TechCorp'un CEO'su John Doe. E-posta: john@techcorp.com.'"
}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "contact_info",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"role": {"type": "string"},
"company": {"type": "string"},
"email": {"type": "string", "format": "email"}
},
"required": ["name", "email"],
"additionalProperties": False
}
}
}
)
# Temiz, ayrıştırılmış veriye erişim
print(response.choices[0].message.content)
additionalProperties: False kullanımına dikkat edin. Bu, modelin beklenmeyen alanlar içermesini engeller ve veritabanınızın veya dahili veri yapılarınızın bütünlüğünü korur.
Araç Kullanımı ile Eylemleri Yönlendirme
Yapılandırılmış çıktılar veriyi yönetirken, araç kullanımı (veya fonksiyon çağırma) eylemi yönetir. Ajanların dış dünyayla etkileşime girmesi gerekir—veritabanlarını sorgulama, API çağrıları yapma veya hesaplamalar gerçekleştirme gibi. xAI API'si, modelin dinamik olarak çağırabileceği araçları tanımlamanıza olanak tanır.
Araçları kaydederken hassasiyet esastır. Araç açıklamaları, aracın ne yaptığını ve hangi argümanları beklediğini net bir şekilde tanımlamalıdır. Model, kullanıcının niyetine dayanarak aracı çağırıp çağırmayacağına ve hangi parametreleri geçireceğine karar verecektir.
def get_weather(location: str) -> dict:
"""Bir konum için mevcut hava durumunu getirir."""
return {"temperature": 72, "unit": "F", "location": location}
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Mevcut hava durumu verilerini getirir",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "Şehir adı veya posta kodu"}
},
"required": ["location"]
}
}
}
]
response = client.chat.completions.create(
model="grok-2",
messages=[{"role": "user", "content": "Seattle'da hava durumu nasıl?"}],
tools=tools
)
Yanıt, bir tool_calls nesnesi içerecektir. Uygulama mantığınız, sağlanan argümanlarla get_weather fonksiyonunu çalıştırmalı, ardından sonucu modelin doğal dil yanıtı oluşturabilmesi için konuşma döngüsüne geri beslemelidir.
Sonuç
Yapılandırılmış çıktılar ile sağlam araç kullanımını birleştirmek, xAI API'sini bir metin oluşturucudan işlevsel bir ajan motoruna dönüştürür. Sıkı JSON şemalarını zorlayarak ayrıştırma hatalarını ortadan kaldırır ve veri tutarlılığını sağlarsınız. Araç tanımlarını entegre ederek ajanlarınızın dünyayı sadece tartışmak yerine, dünyada eyleme geçmesine olanak tanır. Yapay zeka destekli uygulamaların bir sonraki nesnesini inşa eden geliştiriciler için bu kalıpları ustalaşmak artık bir seçenek değil, zorunluluktur.