fix: make the SSE parser properly ignore non-data chunks #487
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.
As per https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#event_stream_format and https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#examples, the actual SSE stream can have so-called "comments" that do not have a field name and just have whatever comment after the colon. Any proper SSE parser should ignore those and not try to parse them.
In the case of python-genai, this is an issue when using a different
base_url
inhttp_options
for a separate proxy to the Gemini API which might add extra things in the SSE stream (for example, keepalive like: this is a keep-alive
). As far as I know this should be a very safe change because the official API only cares about the "data" chunks in any way (if there were any other chunks with prefixes, the json parsing would fail anyway).