fix: add try/except for tool JSON parsing in non-beta streaming path#1292
Open
mmporong wants to merge 1 commit intoanthropics:mainfrom
Open
fix: add try/except for tool JSON parsing in non-beta streaming path#1292mmporong wants to merge 1 commit intoanthropics:mainfrom
mmporong wants to merge 1 commit intoanthropics:mainfrom
Conversation
The beta streaming path (_beta_messages.py) already wraps from_json() in a try/except that provides a helpful error message including the raw JSON bytes. The non-beta path (_messages.py) was missing this protection, causing a bare ValueError with no context when the model emits malformed partial JSON during tool use streaming. Fixes anthropics#1265
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
The beta streaming path (
_beta_messages.py) already wrapsfrom_json()in atry/exceptthat provides a helpful error message including the raw JSON bytes. The non-beta path (_messages.py) was missing this protection, causing a bareValueErrorwith no context when the model emits malformed partial JSON during tool use streaming.This PR ports the same error handling from the beta path to the non-beta path.
Before
After
Changes
src/anthropic/lib/streaming/_messages.py(line 480): wrapfrom_json()call intry/except ValueError, matching the existing pattern in_beta_messages.py(line 500)Fixes #1265