انتقل إلى المحتوى
كل التوثيق

أدلة

البث

اضبط stream: true فيصل الرد كلمةً كلمةً، كأحداث OpenAI المرسلة من الخادم. واطلب الاستخدام فيخبرك الجزء الأخير بتكلفة الاستدعاء.

تم التحقق في 26 أكتوبر 2026

ابثّ ردًا

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)

stream = client.chat.completions.create(
    model="deepseek-v4.1-flash-uncensored",
    messages=[{"role": "user", "content": "Tell me a story in three lines."}],
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)
    if chunk.usage:
        print("\ncredits:", chunk.usage.model_extra.get("nokeep_credits"))

ما يصل

The stream
data: {"choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}
data: {"choices":[{"index":0,"delta":{"content":"The"}}]}
data: {"choices":[{"index":0,"delta":{"content":" lighthouse"}}]}
…
data: {"choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"choices":[],"usage":{"prompt_tokens":18,"completion_tokens":61,"nokeep_credits":0}}
data: [DONE]
  • تصل الكلمات في delta.content. ومع تفعيل التفكير، يصل التفكير أولًا في delta.reasoning_content.
  • تصل استدعاءات الأدوات في delta.tool_calls، وتصل وسائطها على أجزاء، كما ترسلها OpenAI.
  • مع stream_options.include_usage يحمل جزء أخير بقائمة choices فارغة الحقل usage، بما فيه nokeep_credits، أي ما كلّفه الاستدعاء.
  • ينتهي البث بـ data: [DONE].

أوقف الرد مبكرًا

أغلق الاتصال فيتوقف النموذج عن الكتابة. تدفع عمّا أُرسل قبل التوقف، ولا شيء بعده. في الحزم، اخرج من الحلقة وأغلق البث؛ وفي التطبيق، اضغط زر الإيقاف.

Python
for chunk in stream:
    text = chunk.choices[0].delta.content if chunk.choices else ""
    if text and "THE END" in text:
        stream.close()  # the model stops here, and so does the bill
        break

حين يتوقف النموذج أولًا

إذا أنهى النموذج البث قبل أن يكتمل، فآخر حدث قبل [DONE] خطأ بصيغة OpenAI، رمزه stream_cut. ما كتبه يُحتسب، ولا يُحتسب أكثر من ذلك. أعد المحاولة، أو تابع مما وصل.

A cut stream
data: {"error":{"type":"api_error","code":"stream_cut","message":"The model stopped before it finished. What it wrote is billed, nothing more."}}
data: [DONE]

أسئلة

هل يكلّف البث أكثر؟

لا. يكلّف الرد المبثوث الرموز نفسها التي يكلّفها الرد الكامل.

لماذا لا توجد ترويسة x-nokeep-credits على البث؟

الترويسات تُرسل قبل الكلمة الأولى، حين لا تكون التكلفة معروفة بعد. اطلب الاستخدام واقرأ nokeep_credits في الجزء الأخير.