fix: unwrap singleton array in tryParseStructuredJsonValue#22
Open
gianellichia980-png wants to merge 2 commits intoExplosiveCoderflome:mainfrom
Open
fix: unwrap singleton array in tryParseStructuredJsonValue#22gianellichia980-png wants to merge 2 commits intoExplosiveCoderflome:mainfrom
gianellichia980-png wants to merge 2 commits intoExplosiveCoderflome:mainfrom
Conversation
…[{"goal":...}] LLM output
…fyStructuredOutputFailure
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
Two bug fixes for the structured JSON output pipeline:
Fix 1: unwrap singleton array in tryParseStructuredJsonValue
When the LLM returns structured JSON wrapped in a singleton array like
[{"goal":"..."}],extractJSONValueextracts the whole array because[appears before{.JSON.parsesucceeds but Zod schema validation fails because the schema expects an object, not an array.Added
unwrapSingletonArray()helper that automatically unwraps single-element arrays after parsing.Fixes #10
Fix 2: detect HTML error pages from relays as transport_error
When using a relay/proxy (中转站), the connectivity probe fails with "malformed_json" error category even when the relay returned HTML (e.g. 429 rate limit page, 403 auth error page) rather than JSON.
Added HTML response detection in
classifyStructuredOutputFailure. When the error message contains HTML tags or common relay error indicators, classify it astransport_errorinstead ofmalformed_json.Fixes #15
Files changed
server/src/llm/structuredInvoke.ts: AddedunwrapSingletonArray()functionserver/src/llm/structuredOutput.ts: Added HTML detection inclassifyStructuredOutputFailure