Skip to content

Commit 34d78a8

Browse files
committed
fix(openrouter-adapter): Improve JSON response parsing with robust error handling
- Add more detailed error logging for JSON parsing failures - Read response text before attempting JSON parsing to prevent body consumption - Include response length in error log for better diagnostics - Use `json.loads()` instead of `.json()` method for more explicit parsing - Enhance error message with additional context about response parsing
1 parent 7060a2c commit 34d78a8

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

agentle/generations/providers/openrouter/openrouter_generation_provider.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from __future__ import annotations
3030

3131
import asyncio
32+
import json
3233
import logging
3334
from collections.abc import AsyncGenerator, Mapping, Sequence
3435
from os import getenv
@@ -1514,14 +1515,16 @@ async def generate_async[T = WithoutStructuredOutput](
15141515
)
15151516

15161517
# Parse JSON response with error handling
1518+
# Read response text first to avoid consuming the body
1519+
response_text = response.text
15171520
try:
1518-
openrouter_response: OpenRouterResponse = response.json()
1521+
openrouter_response: OpenRouterResponse = json.loads(response_text)
15191522
except Exception as json_error:
1520-
response_text = response.text
15211523
logger.error(
15221524
"Failed to parse OpenRouter response as JSON. "
15231525
+ f"Status: {response.status_code}, "
15241526
+ f"Content-Type: {response.headers.get('content-type')}, "
1527+
+ f"Response length: {len(response_text)} chars, "
15251528
+ f"Response preview: {response_text[:500]}"
15261529
)
15271530
raise ValueError(

0 commit comments

Comments
 (0)