أدلة
البث
اضبط 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"))ما يصل
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].
أوقف الرد مبكرًا
أغلق الاتصال فيتوقف النموذج عن الكتابة. تدفع عمّا أُرسل قبل التوقف، ولا شيء بعده. في الحزم، اخرج من الحلقة وأغلق البث؛ وفي التطبيق، اضغط زر الإيقاف.
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. ما كتبه يُحتسب، ولا يُحتسب أكثر من ذلك. أعد المحاولة، أو تابع مما وصل.
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 في الجزء الأخير.