Refactor stream handling to expose event labels #589
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
This PR refactors how streaming responses are handled to make stream event labels accessible to the user-defined stream handler.
Why This Change?
This update enables access to the event labels in streamed OpenAI API responses. These labels provide important context (e.g.,
response.created
,response.completed
) previously unavailable to user-defined stream handlers.Exposing this metadata makes building more responsive and structured streaming experiences easier, while keeping the API flexible and backward compatible.
Summary of Changes
OpenAI::HTTP#to_json_stream
into a new class namedOpenAI::Stream
OpenAI::Stream
maintains backward compatibility by inspecting the arity of the proc and calling it with one or two arguments accordingly#to_json_stream
method with the newOpenAI::Stream
interface_bytesize
params with_event
(since, as far as I understand, the bytesize was never actually passed)Example Before vs. After
Before:
After:
Compatibility
All Submissions: