Streaming
OpenAI.jl integrates StreamCallbacks.jl for streaming responses.
1. Stream to any IO
create_chat(secret_key, model, messages; streamcallback=stdout)2. Capture stream chunks
using OpenAI
cb = StreamCallback()
create_chat(secret_key, model, messages; streamcallback=cb)
cb.chunks3. Customize printing
using OpenAI
import StreamCallbacks: print_content
function print_content(io::IO, content; kwargs...)
printstyled(io, "🌊 $content"; color=:cyan)
end
cb = StreamCallback()
create_chat(secret_key, model, messages; streamcallback=cb)For complete control you can overload StreamCallbacks.callback:
using OpenAI
import StreamCallbacks: callback, AbstractStreamCallback, AbstractStreamChunk, extract_content, print_content
@inline function callback(cb::AbstractStreamCallback, chunk::AbstractStreamChunk; kwargs...)
processed_text = extract_content(cb.flavor, chunk; kwargs...)
isnothing(processed_text) && return nothing
print_content(cb.out, processed_text; kwargs...)
return nothing
endSee the examples/streamcallbacks.jl script for a full walkthrough.