# Streaming yanıtlar: yanıt yazıldıkça gelir

> Server-sent events ile chat completion'ları stream edin: stream: true, chunk formatı, son event'teki token kullanımı ve curl, Python ve Node.js örnekleri.

- URL: https://llmwithcrypto.com/tr/docs/streaming/
- Son güncelleme: 2026-10-23
- Yayıncı: LLMwithCrypto (https://llmwithcrypto.com)

`stream: true` ile yanıt, model yazdıkça küçük parçalar halinde gelir; tıpkı chat arayüzlerinin metni belirerek göstermesi gibi. Format OpenAI'ninkidir: server-sent events, her event için bir JSON chunk, ardından `[DONE]`.

**Kısa yanıt — LLMwithCrypto üzerinden bir chat completion'ı nasıl stream ederim?**

`POST https://llmwithcrypto.com/api/v1/chat/completions` gövdesine `"stream": true` ekleyin. **LLMwithCrypto** ardından server-sent events ile yanıtlar: her `data:` satırı, `delta.content` içinde bir metin parçası taşıyan bir `chat.completion.chunk` barındırır ve stream `data: [DONE]` ile biter. Token sayılarını son bir chunk'ta almak için `"stream_options": {"include_usage": true}` ekleyin. Bu, 23 Ekim 2026'da belgelendiği üzere her modelde çalışır.

## Neden stream yapmalı?

İnsanlar için, çünkü ilk kelimeler tüm yanıt yazıldıktan sonra değil, bir anda ortaya çıkar. Büyük bir modelin uzun yanıtının tamamlanması birçok saniye sürebilir; stream edildiğinde okuyucu hemen okumaya başlar.

Programlar için pek fark etmez: tam metne ihtiyaç duyan bir script streaming'den bir şey kazanmaz ve daha fazla ayrıştırma yapması gerekir. Bir insan izliyorsa stream edin, aksi halde normal bir istek gönderin. Fiyat her iki durumda da aynıdır. Token başına bakiyenizden ödersiniz: girdi ve çıktı token'ları modelin kendi tokenizer'ı ile sayılır ve o modelin 1M token başına fiyatından ücretlendirilir. Hata ile sonuçlanan bir çağrı ücretsizdir.

*curl: -N bağlantıyı buffer'sız tutar*

```bash
curl -sN "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Write a haiku about latency."}],
    "stream": true,
    "stream_options": {"include_usage": true},
    "max_tokens": 120
  }'

```

*Python: metni geldikçe yazdırın*

```python
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)

stream = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Write a haiku about latency."}],
    stream=True,
    stream_options={"include_usage": True},
    max_tokens=120,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\n", chunk.usage.prompt_tokens, "in,", chunk.usage.completion_tokens, "out")

```

*Node.js: chunk'lar üzerinde for await*

```javascript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://llmwithcrypto.com/api/v1',
  apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});

const stream = await client.chat.completions.create({
  model: 'deepseek-v4.1-flash',
  messages: [{ role: 'user', content: 'Write a haiku about latency.' }],
  stream: true,
  stream_options: { include_usage: true },
  max_tokens: 120,
});
for await (const chunk of stream) {
  const text = chunk.choices[0]?.delta?.content;
  if (text) process.stdout.write(text);
  if (chunk.usage) console.log(`\n${chunk.usage.prompt_tokens} in, ${chunk.usage.completion_tokens} out`);
}

```

## Stream hatta nasıl görünür?

Her event `data: ` ile başlayan bir satır ve ardından bir boş satırdan oluşur. İlk chunk genellikle `role` taşır, sonrakiler her biri birkaç karakter `content` taşır ve `finish_reason` içeren chunk yanıtı kapatır. `include_usage` ile boş bir `choices` dizisi ve `usage` nesnesi içeren bir chunk daha gelir. Stream her zaman `data: [DONE]` ile biter. Aşağıdaki id'ler ve sayılar örnek amaçlıdır.

*Kısa bir yanıtın server-sent events gösterimi (örnek)*

```text
data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{"content":"Packets"},"finish_reason":null}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{"content":" cross the"},"finish_reason":null}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":19,"total_tokens":33}}

data: [DONE]

```

## Stream kesilirse ne olur?

Yanlış anahtar veya boş bakiye gibi ilk token'dan önce bulunan bir hata, stream olarak değil, JSON gövdesi olan normal bir HTTP hatası olarak döner; [hatalar sayfası](https://llmwithcrypto.com/tr/docs/errors/) bunları listeler. Üretim sırasında oluşan bir hata stream'i `finish_reason` olmadan erken bitirir.

Bağlantıyı kendiniz kapatırsanız üretim durur. O zaman, her çağrıda olduğu gibi, giriş ve o ana kadar üretilen token'lar için ödeme yaparsınız. Kodunuz `finish_reason` ve `[DONE]` olmadan biten bir stream'i eksik saymalı ve tam yanıta ihtiyaç duyuyorsa isteği yeniden göndermelidir.

## Streaming: sık sorulan sorular

### Streaming daha pahalı mı?

Hayır. Aynı token'lar aynı fiyattan faturalanır. Token başına bakiyenizden ödersiniz: girdi ve çıktı token'ları modelin kendi tokenizer'ı ile sayılır ve o modelin 1M token başına fiyatından ücretlendirilir. Hata ile sonuçlanan bir çağrı ücretsizdir.

### Tool calling ile stream yapabilir miyim?

Evet, tool'ları destekleyen modellerde: fonksiyon adı ve argümanlar `delta.tool_calls` içinde parçalar halinde gelir ve kullanılmadan önce birleştirilmelidir. [Tool calling sayfası](https://llmwithcrypto.com/tr/docs/tool-calling/) stream edilmeyen döngüyü gösterir, ki başlamak için daha basittir.

### Stream edilen bir çağrıda neden kullanım bilgisi alamıyorum?

`"stream_options": {"include_usage": true}` ekleyin. Bu olmadan bir akış token sayıları içermez; kontrol paneli yine de bunları gösterir.

---

LLMwithCrypto: LLMwithCrypto, açık ağırlıklı modeller için OpenAI uyumlu bir LLM API'sidir — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — ön ödemeli kripto bakiyesinden token başına ödenir ve genel barındırıcıların medyan fiyatının %5 altındadır. KYC yok: kimlik yok, selfie yok, belge yok. İstemler ve çıktılar saklanmaz.
