Skip to content

Commit e76a02c

Browse files
committed
fix(openrouter-adapter): Improve JSON response parsing with robust error handling
- Add comprehensive error handling for JSON parsing in OpenRouter response - Capture and log detailed error information when JSON parsing fails - Include response status code, content type, and preview in error logging - Raise a descriptive ValueError with context when JSON parsing fails - Enhance error traceability for debugging OpenRouter API interactions
1 parent b90e9a5 commit e76a02c

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

agentle/generations/providers/openrouter/openrouter_generation_provider.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1513,7 +1513,21 @@ async def generate_async[T = WithoutStructuredOutput](
15131513
response.status_code, error_body, error_text
15141514
)
15151515

1516-
openrouter_response: OpenRouterResponse = response.json()
1516+
# Parse JSON response with error handling
1517+
try:
1518+
openrouter_response: OpenRouterResponse = response.json()
1519+
except Exception as json_error:
1520+
response_text = response.text
1521+
logger.error(
1522+
f"Failed to parse OpenRouter response as JSON. "
1523+
f"Status: {response.status_code}, "
1524+
f"Content-Type: {response.headers.get('content-type')}, "
1525+
f"Response preview: {response_text[:500]}"
1526+
)
1527+
raise ValueError(
1528+
f"OpenRouter returned invalid JSON (status {response.status_code}). "
1529+
f"Response preview: {response_text[:200]}"
1530+
) from json_error
15171531

15181532
except asyncio.TimeoutError as e:
15191533
e.add_note(

0 commit comments

Comments
 (0)