From d28edfff5a3b0f1cd549340b916f7f019a4d1c90 Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Sat, 25 Oct 2025 17:01:21 -0400 Subject: [PATCH] fix: add warning log for original error before JSON fallback - Add import logging at top of file - Log error type and message before JSON fallback - Minimal change - only adds warning log (6 insertions, 1 deletion) - Addresses @TomeHirata feedback for clean diff Signed-off-by: Bhaskar --- dspy/adapters/chat_adapter.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dspy/adapters/chat_adapter.py b/dspy/adapters/chat_adapter.py index c856c2d51a..52981bfe3d 100644 --- a/dspy/adapters/chat_adapter.py +++ b/dspy/adapters/chat_adapter.py @@ -1,7 +1,7 @@ import re import textwrap from typing import Any, NamedTuple - +import logging from litellm import ContextWindowExceededError from pydantic.fields import FieldInfo @@ -64,6 +64,11 @@ async def acall( # On context window exceeded error or already using JSONAdapter, we don't want to retry with a different # adapter. raise e + logger = logging.getLogger(__name__) + logger.warning( + f"Structured output failed with error: {type(e).__name__}: {str(e)[:200]}. " + f"Falling back to JSON mode." + ) return await JSONAdapter().acall(lm, lm_kwargs, signature, demos, inputs) def format_field_description(self, signature: type[Signature]) -> str: