🔌 Teknik

SSE Streaming ile Gerçek Zamanlı AI Yanıtları Nasıl Alınır

13 Ekim 2026· 2 dk okuma· Apicloud Blog
🔌

SSE Nedir ve Neden Önemlidir?

Server-Sent Events (SSE), sunucudan istemciye doğru tek yönlü bir akış kurmayı sağlayan basit bir protokoldür. WebSocket gibi çift yönlü değildir; sadece sunucu, istemciye veri iter. Bu özellik, özellikle AI yanıtları gibi uzun süren işlemlerde kritiktir.

AI modelinden gelen yanıt kelime kelime veya token token üretildiğinde, SSE sayesinde kullanıcı arayüzünde anında bir akış deneyimi yaşar. Geleneksel HTTP sorgularında yanıt tamamen hazır gelene kadar beklemeniz gerekir. SSE ile ise her parça ulaştığı anda ekranda belirir.

SSE Akışı Nasıl Çalışır?

İstemci bir fetch isteği gönderdiğinde, sunucu Content-Type: text/event-stream başlığıyla yanıt verir. Sunucu, veriyi data: prefix'iyle gönderir. Her data: satırı bir event olarak istemcide tetiklenir. İstemci tarafında EventSource API veya manuel parser ile bu eventleri dinlersiniz.

POST /chat/stream
Content-Type: application/json

{
  "message": "Merhaba",
  "stream": true
}

Sunucu yanıtı:

data: {"token":"Selam"}

data: {"token":"!"}

data: {"token":" Nasıl"}

...

Her event geldiğinde JavaScript tarafında metni biriktirip ekrana yazdırırsınız. Akış tamamlandığında sunucu data: [DONE] gönderir. İstemci bağlantıyı kapatır.

Pratik Uygulama: OpenAI Uyumlu Akış

API platformları genellikle SSE desteği sunar. Sapiens AI'ın geliştirdiği API'ler de bu standartı takip eder. İstemci tarafında Python, TypeScript veya native kod ile event stream'i yönetirsiniz.

const response = await fetch('https://api.apicloud.com.tr/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <token>'
  },
  body: JSON.stringify({
    messages: [{ role: 'user', content: 'Merhaba' }],
    stream: true
  })
});

const reader = response.body!.getReader();
const decoder = new TextDecoder();
let buffer = '';

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  
  buffer += decoder.decode(value, { stream: true });
  const lines = buffer.split('\n');
  buffer = lines.pop() || '';
  
  for (const line of lines) {
    if (line.startsWith('data: ')) {
      const data = line.slice(6).trim();
      if (data === '[DONE]') break;
      const parsed = JSON.parse(data);
      const token = parsed.choices?.[0]?.delta?.content;
      if (token) process.stdout.write(token);
    }
  }
}

Bu örnek, OpenAI'nin streaming formatına uyumlu her API ile çalışır. API platformları genellikle choices[0].delta.content yapısını kullanır. Tamamlanmamış satırları buffer'a alıp sonraki chunk'ta tamamlarsınız.

Hata Yönetimi ve Performans

SSE akışında hata yönetimi önemlidir. Bağlantı kopması durumunda istemci otomatik yeniden bağlanır. Ancak AI yanıtları sırasında buffer overflow veya token kaybı yaşanabilir. Her chunk'ı kontrol ederek veri bütünlüğünü korursunuz.

Performans açısından SSE, WebSocket'ten daha az overhead'e sahiptir. HTTP/2 multiplexing ile birden fazla akışı aynı bağlantıda yönetebilirsiniz. Ancak sunucu tarafında yanıt üretim hızı kritiktir. Model, her token için birkaç milisaniye harcar.

Sonuç olarak SSE, gerçek zamanlı AI yanıtları almak için en pratik yoldur. Teknik altyapı anlamak, geliştirdiğiniz uygulamaların kullanıcı deneyimini önemli ölçüde artırır.

Hazır mısın?54+ model, tek API anahtarı, TL bakiye ile — apicloud.com.tr
API anahtarını al →

İlgili yazılar

← Tüm yazılar