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 mesmossystem=,history=,images=,files=eparams=das outras chamadas.- Para custo e tokens use as chamadas não-stream (
complete/parse), que retornamusage/costna 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
usageefinish_reasonemllm.provider.last_stream(OpenAI, Azure, DeepSeek, Mistral, Ollama). É por instância: com várias threads usando o mesmoLLM, 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.