Kaynaklar · Çıktı Sözleşmeleri

Birleşik Çıktı Sözleşmeleri

Metin, ses, görüntü ve video sağlayıcıları arasında yanıtların tutarlı kalmasını sağlayan üretim sözleşmesi.

Kanonik Yanıt Sözleşmesi

{
  "success": true,
  "content": "Primary human-readable output",
  "provider": "openai",
  "usage": {
    "input_tokens": 120,
    "output_tokens": 64
  },
  "metadata": {
    "model": "gpt-x",
    "latency_ms": 540,
    "trace_id": "trc_123"
  },
  "images": [],
  "files": [],
  "videos": []
}

Tasarım İlkeleri

  • Tüm modaliteler ve sağlayıcılar için tek bir yapı.
  • Alan adları çalışma zamanı sürümleri arasında sabit kalır.
  • Sağlayıcıya özel ayrıntılar metadata'da tutulur; üst seviye yapıda sapma olmaz.
  • Eksik modalite çıktıları yapı değişikliğine yol açmaz; boş diziler döner.
  • success bayrağı deterministik istemci işleyişi için zorunludur.

Alan Referansı

  • success: işlem sonucunu gösteren boolean değer.
  • content: birincil, insan tarafından okunabilir çıktı.
  • provider: normalleştirilmiş sağlayıcı tanımlayıcısı.
  • usage: normalleştirilmiş faturalama nesnesi.
  • metadata: tanılama ve yürütme bağlamı.
  • images/files/videos: modaliteye ait çıktı dizileri.
  • error: success=false olduğunda yapılandırılmış hata nesnesi.

Çok Sağlayıcılı Örnekler

OpenAI tarzı normalize edilmiş yanıt

{
  "success": true,
  "content": "Generated response",
  "provider": "openai",
  "usage": { "input_tokens": 90, "output_tokens": 52 },
  "metadata": { "latency_ms": 480 },
  "images": [],
  "files": [],
  "videos": []
}

Replicate tarzı normalize edilmiş yanıt

{
  "success": true,
  "content": "Image generation completed",
  "provider": "replicate",
  "usage": { "input_tokens": 0, "output_tokens": 0 },
  "metadata": { "duration_ms": 2300 },
  "images": [{ "url": "https://..." }],
  "files": [],
  "videos": []
}

İstemci Uyumluluk Kuralları

  • Ön uç render mantığı, sağlayıcı iç detaylarına değil yanıt zarfının yapısına bağlı olmalıdır.
  • İstemciler, ileriye dönük uyumluluk için bilinmeyen metadata anahtarlarını göz ardı edebilmeli.
  • Uygulanamaz modaliteler için boş diziler geçerli çıktılardır.
  • Ayrıştırma, sağlayıcıya özel dallanma yerine açık alan kontrollerini tercih etmelidir.

Hata Sözleşmesi

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request payload",
    "details": {}
  },
  "provider": "system",
  "metadata": {
    "trace_id": "trc_123"
  }
}
  • Hata yükü, makine tarafından okunabilir bir kod ve insan tarafından okunabilir bir mesaj içermelidir.
  • Tanılama için iz (trace) tanımlayıcıları iletilmelidir.
  • success=false yanıtları, sadece başarı yüküne ait alanları asla yeniden kullanmamalıdır.
  • HTTP durum kodu ile yapılandırılmış hata kodu tutarlı olmalıdır.