raise exception when non dict response (#4057)

This commit is contained in:
LawyZheng
2025-11-21 15:19:06 +08:00
committed by GitHub
parent d277882b72
commit 6358b8b1d7
2 changed files with 9 additions and 3 deletions

View File

@@ -24,6 +24,11 @@ class InvalidLLMResponseFormat(BaseLLMError):
super().__init__(f"LLM response content is not a valid JSON: {response}")
class InvalidLLMResponseType(BaseLLMError):
def __init__(self, response_type: str) -> None:
super().__init__(f"LLM response content is expected to be a dict, but got {response_type}")
class DuplicateCustomLLMProviderError(BaseLLMError):
def __init__(self, llm_key: str) -> None:
super().__init__(f"Custom LLMProvider {llm_key} is already registered")

View File

@@ -10,7 +10,7 @@ import structlog
from skyvern.constants import MAX_IMAGE_MESSAGES
from skyvern.forge.sdk.api.llm import commentjson
from skyvern.forge.sdk.api.llm.exceptions import EmptyLLMResponseError, InvalidLLMResponseFormat
from skyvern.forge.sdk.api.llm.exceptions import EmptyLLMResponseError, InvalidLLMResponseFormat, InvalidLLMResponseType
LOG = structlog.get_logger()
@@ -155,13 +155,14 @@ def _coerce_response_to_dict(response: Any) -> dict[str, Any]:
return first_dict
LOG.warning("List response contained no dict entries; returning empty dict")
return {}
raise InvalidLLMResponseType("list")
LOG.warning(
"Parsed LLM response is not a dict; returning empty dict",
response_type=type(response).__name__,
)
return {}
raise InvalidLLMResponseType(type(response).__name__)
def parse_api_response(response: litellm.ModelResponse, add_assistant_prefix: bool = False) -> dict[str, Any]: