Ana içeriğe atla

Genel Bakış

Akış, kısmi çıktıyı oluşturuldukça almanızı sağlar; bu da algılanan gecikmeyi ve kullanıcı deneyimini iyileştirir. Yeni OpenAI tarzı entegrasyonlar için önce Responses streaming tercih edin. Framework’ünüz hâlâ Chat Completions streaming kullanıyorsa, LemonData bu uyumluluk yolunu da destekler.

Önerilen: Responses Streaming

curl https://api.lemondata.cc/v1/responses \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4",
    "input": "Write a short poem.",
    "stream": true
  }'

Chat Completions Akışı

Framework’ünüz hâlâ /v1/chat/completions adresinden SSE parçaları bekliyorsa, bu da çalışır:
stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Write a short poem"}],
    stream=True
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)

Akış Bitiş Koşulları

Tipik tamamlanma koşulları:
  • Responses API akışları için response.completed
  • Chat Completions akışları için finish_reason: "stop"
  • Bir token sınırına ulaşıldığında finish_reason: "length"
  • Model araçları kullanmak istediğinde tool/function call olayları

Web Uygulaması Deseni

async function streamChat(message) {
  const response = await fetch('https://api.lemondata.cc/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sk-your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      model: 'gpt-4o',
      messages: [{ role: 'user', content: message }],
      stream: true
    })
  });

  const reader = response.body.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;

    const chunk = decoder.decode(value);
    const lines = chunk.split('\\n').filter(line => line.startsWith('data: '));

    for (const line of lines) {
      const data = line.slice(6);
      if (data === '[DONE]') return;
      const parsed = JSON.parse(data);
      const content = parsed.choices?.[0]?.delta?.content;
      if (content) {
        document.getElementById('output').textContent += content;
      }
    }
  }
}

En İyi Uygulamalar

SDK’nız veya uygulamanız zaten destekliyorsa /v1/responses kullanın. Uyumluluk odaklı entegrasyonlar için /v1/chat/completions akışını koruyun.
Tam yanıtı beklemek yerine, delta parçalarını geldikçe UI’a veya terminale ekleyin.
Ağ düşmeleri ve upstream bağlantı kopmalarını normal hata durumları olarak ele alın ve uzun süreli oturumlar için dikkatli şekilde yeniden bağlanın.