Jangada AIJangada AI

Streaming

Receba tokens incrementais com stream() (sync) ou astream() (async).

for token in llm.stream("Conte sobre {{x}}", x="João Pessoa"):
    print(token, end="")
async for token in llm.astream("..."):   # ex.: FastAPI StreamingResponse
    ...

Retry e fallback no streaming

O retry e o fallback acontecem antes do primeiro token: se a abertura do stream falhar com erro transitório, a jangada tenta de novo (backoff) e, se preciso, cai para o próximo candidato — tudo antes de você receber qualquer conteúdo. Depois que o primeiro token sai, o stream segue até o fim.

Veja Retry e fallback para a política completa.

Observações

  • stream()/astream() aceitam os mesmos system=, history=, images=, files= e params= das outras chamadas.
  • Para custo e tokens use as chamadas não-stream (complete/parse), que retornam usage/cost na resposta — veja Custo e tokens.

O que mudou na 1.9.0

  • Chunks sem conteúdo (ex.: o primeiro chunk da Azure com o filtro de conteúdo) não quebram mais o stream, e a conexão é fechada se você parar de consumir o iterador no meio.
  • Depois do stream, o provider guarda usage e finish_reason em llm.provider.last_stream (OpenAI, Azure, DeepSeek, Mistral, Ollama). É por instância: com várias threads usando o mesmo LLM, leia logo após o stream.
  • O stream é reportado à observabilidade ao final.
  • Com tools nativas, o stream emite só o texto (Anthropic/Gemini/OpenAI); em Mistral e Ollama, stream + tools nativas levanta UnsupportedError.

Exemplo

examples/async_example.py — script executável.

On this page