Pular para o conteúdo
Toda a documentação

Guias

Streaming

Defina stream: true e a resposta chega palavra por palavra, como server-sent events da OpenAI. Peça o usage e o último chunk informa quanto a chamada custou.

Verificado em 26 de outubro de 2026

Receba uma resposta em streaming

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"))

O que chega

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]
  • As palavras chegam em delta.content. Com o raciocínio ligado, o raciocínio chega primeiro, em delta.reasoning_content.
  • As chamadas de ferramenta chegam em delta.tool_calls, com os argumentos em pedaços, como a OpenAI envia.
  • Com stream_options.include_usage, um último chunk com a lista choices vazia traz usage, incluindo nokeep_credits, o que a chamada custou.
  • O stream termina com data: [DONE].

Interrompa uma resposta cedo

Feche a conexão e o modelo para de escrever. Você paga pelo que foi enviado antes da parada, e nada depois. Nos SDKs, saia do loop e feche o stream; em um app, clique no botão Parar.

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

Quando o modelo para antes

Se o modelo encerra um stream antes de terminar, o último evento antes de [DONE] é um erro no formato da OpenAI, com o código stream_cut. O que ele escreveu é cobrado, nada além disso. Tente de novo ou continue a partir do que chegou.

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]

Perguntas

O streaming custa mais?

Não. Uma resposta em streaming custa os mesmos tokens que uma resposta inteira.

Por que não há o cabeçalho x-nokeep-credits em um stream?

Os cabeçalhos são enviados antes da primeira palavra, quando o custo ainda não é conhecido. Peça o usage e leia o nokeep_credits no último chunk.