- Birden fazla LLM sağlayıcısı arasında birlikte çalışabilirliği hedefleyen açık kaynaklı bir standart ve ekosistem; OpenAI Responses API temel alınarak ortak bir arayüz tanımlar
- İstekler ve yanıtlar paylaşılan bir şema ile tanımlanır; böylece en az dönüşüm işlemiyle birden çok model sağlayıcısında aynı şekilde çalıştırılabilir
- Mesajlar, araç çağrıları, streaming, çok modlu girdiler gibi ortak bileşenler tutarlı bir yapıda düzenlenir ve ajan iş akışlarının uygulanmasına uygundur
- Sağlam bir çekirdek üzerinde sağlayıcıya özgü genişlemelere izin veren yapısıyla genişletilebilirlik ve parçalanmama hedeflenir
- OpenRouter, Vercel, Hugging Face, LM Studio, Ollama, OpenAI, vLLM gibi çok sayıda geliştiricinin katıldığı topluluk temelli olarak yürütülür
Genel Bakış
- Open Responses, OpenAI Responses API'yi temel alan açık kaynaklı bir standart ve araç ekosistemidir
- Dil modeli çağrıları, streaming sonuçlarının işlenmesi ve ajan oluşturma işleri sağlayıcıdan bağımsız şekilde yapılabilecek biçimde tasarlanmıştır
- Ortak şema ve araç katmanı üzerinden tek bir arayüz deneyimi sunar
Neden Open Responses?
- LLM API'leri mesajlar, araç çağrıları, streaming ve çok modlu girdiler gibi benzer bileşenleri paylaşsa da farklı kodlama biçimleri kullanır
- Open Responses, bunları birleştiren herkese açık ortak bir standart sunarak yinelenen uygulama yükünü azaltır
- Bir kez tanımlanan istek ve çıktı yapısı, birden çok sağlayıcıda yeniden kullanılabilir
Tasarım İlkeleri
- Çoklu sağlayıcıyı temel alan tasarım ile tek bir şema farklı model sağlayıcılarına eşlenebilir
- Streaming event'leri, araç çağrısı kalıpları ve model çıktısının en küçük birimi olarak items kavramı kullanılır; böylece ajan iş akışlarına uygun bir yapı sağlanır
- Genelleştirilemeyen özelliklerde sağlayıcıya özgü genişlemelere izin verilirken, öncelik çekirdek kararlılığını korumaktır
Topluluk ve Ekosistem
- Çoklu satıcı ortamını varsayan açık bir topluluk projesi olarak yürütülür
- OpenRouter, Vercel, Hugging Face, LM Studio, Ollama, OpenAI, vLLM gibi çeşitli kuruluşlar logolarıyla katılım gösterir
- Taşınabilirlik, birlikte çalışabilirlik ve ortak temeli önemseyen geliştirici odaklı bir topluluk oluşmuştur
Spesifikasyonun Özellikleri
- Items merkezli ortak şema ile mesajlar/araç çağrıları/çıkarım durumu aynı birimde ifade edilir; hem girdi hem çıktı item olarak taşınır
- Yanıt ve item'lar durum makinesi olarak tanımlanır;
in_progress→completed/failed/incomplete gibi yaşam döngüleri açıkça yönetilir
- Streaming, metin parçaları olarak değil semantic events olarak standartlaştırılır;
response.output_item.added ile başlayıp delta→done ile kapanan sabit bir desen kullanılır
- Araçlar harici yürütme (geliştirici/üçüncü taraf) ve dahili yürütme (sağlayıcı barındırmalı) olarak ayrılır;
tool_choice/allowed_tools ile çağrılabilecek kapsamı zorunlu kılan bir kontrol düzlemi sunulur
previous_response_id ile sunucu önceki girdi+çıktıyı bağlam olarak yeniden kurarak konuşmayı sürdürme/yeniden gönderimi en aza indirme desteği verir; truncation ile “kesmeye izin ver” ve “aşılırsa başarısız olsun” seçenekleri sunulur
- Standart dışı genişlemeler
provider_slug: önekiyle ayrılır; özel hosted tool'lar için günlüklenebilir/round-trip yapılabilir bir “makbuz” bırakmak adına karşılık gelen bir item türü zorunludur
- Hatalar yapılandırılmış bir error object olarak döndürülür; streaming sırasındaki hatalar ise
response.failed event'iyle sonlandırılır
1 yorum
Oo... üzerinde çalıştığım bir şey vardı, sanırım çerçeveyi buna göre kurmam gerekecek.