Uç noktalar
Streaming
stream true ile token'ları üretildikleri anda server-sent events olarak alın; olay biçimini, kullanım bilgisini ve istemci tarafı okumayı öğrenin.
Playground’da deneToken'ları üretildikleri anda almak için Chat completions, Responses veya Completions isteklerinde stream: true ayarlayın. Yanıt server-sent events (Content-Type: text/event-stream) kullanır. api14, upstream'den gelen baytları geldikleri anda size iletir ve arabelleğe almaz.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const stream = await client.chat.completions.create({
"model": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
],
"stream": true
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Olay formatı
Her olay, bir JSON parçası içeren bir data: satırıdır. Stream data: [DONE] ile biter.
data: {"id":"gen-1760000000-abc","object":"chat.completion.chunk","model":"openai/gpt-5-mini","choices":[{"index":0,"delta":{"role":"assistant","content":"Hel"}}]}
data: {"id":"gen-1760000000-abc","object":"chat.completion.chunk","model":"openai/gpt-5-mini","choices":[{"index":0,"delta":{"content":"lo!"}}]}
data: {"id":"gen-1760000000-abc","object":"chat.completion.chunk","model":"openai/gpt-5-mini","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":10,"completion_tokens":3,"total_tokens":13,"cost":0.0000085}}
data: [DONE]
[DONE]öncesindeki son parça, USD cinsindencostdahilusagebilgisini taşır.stream_options.include_usagegerekmez. Kullanım raporlaması her zaman açıktır.idher parçada aynıdır. Bu, Üretim sorgulama'ya iletebileceğiniz üretim kimliğidir.- Bazı sağlayıcılar bağlantıyı canlı tutmak için
:ile başlayan SSE yorum satırları gönderir. SSE istemcileri ve OpenAI SDK'ları bunları yok sayar. Stream'i kendiniz ayrıştırıyorsanız:ile başlayan satırları atlayın.
Stream'lerin faturalandırılması
Ağ geçidi stream'i iletirken son usage parçasını okur ve stream kapandığında bakiyenizden düşer.
Bağlantıyı kesmek faturayı iptal etmez. Stream bitmeden bağlantıyı kapatırsanız upstream sağlayıcı üretmeye devam edebilir ve yine de ücretlendirebilir. Bu durumda api14 maliyeti üretim kaydından okur. Maliyeti sınırlamak için max_tokens ayarlayın.
Stream sırasında hatalar
İlk bayttan önce oluşan hatalar (geçersiz anahtar, düşük bakiye veya bilinmeyen model gibi) 4xx veya 5xx durum koduyla normal bir JSON hatası döndürür. Bkz. Hatalar. Bir sağlayıcı stream ortasında başarısız olursa, stream bir error nesnesi ve finish_reason: "error" içeren bir parçayla sona erebilir:
{ "error": { "code": 502, "message": "Provider disconnected" }, "choices": [{ "delta": { "content": "" }, "finish_reason": "error" }] }
Son parçadaki finish_reason değerini her zaman kontrol edin.
İpuçları
- Proxy'ler ve serverless platformlar bazen yanıtları arabelleğe alır. Stream'i tarayıcılara aktarıyorsanız yanıt arabelleğe almayı devre dışı bırakın (örn. nginx'te
X-Accel-Buffering: no). - Araç çağrıları
delta.tool_callsparçaları olarak stream edilir. Ayrıştırmadan önceargumentsstring'leriniindexdeğerine göre birleştirin. Bkz. Araç çağırma. - Reasoning modelleri, yanıttan önce reasoning içeriklerini
delta.reasoningiçinde stream eder. Bkz. Reasoning.