diff --git a/src/openai/_models.py b/src/openai/_models.py index ed4c1f82d6..e5a7ccc03d 100644 --- a/src/openai/_models.py +++ b/src/openai/_models.py @@ -657,7 +657,11 @@ def construct_type(*, value: object, type_: object, metadata: Optional[List[Any] if not is_mapping(value): return value - _, items_type = get_args(type_) # Dict[_, items_type] + _dict_args = get_args(type_) + if len(_dict_args) < 2: + return value + + _, items_type = _dict_args # Dict[_, items_type] return {key: construct_type(value=item, type_=items_type) for key, item in value.items()} if ( diff --git a/src/openai/_utils/_transform.py b/src/openai/_utils/_transform.py index 414f38c340..6cf4f7f546 100644 --- a/src/openai/_utils/_transform.py +++ b/src/openai/_utils/_transform.py @@ -180,7 +180,10 @@ def _transform_recursive( return _transform_typeddict(data, stripped_type) if origin == dict and is_mapping(data): - items_type = get_args(stripped_type)[1] + _dict_args = get_args(stripped_type) + if not _dict_args: + return data + items_type = _dict_args[1] return {key: _transform_recursive(value, annotation=items_type) for key, value in data.items()} if ( @@ -346,7 +349,10 @@ async def _async_transform_recursive( return await _async_transform_typeddict(data, stripped_type) if origin == dict and is_mapping(data): - items_type = get_args(stripped_type)[1] + _dict_args = get_args(stripped_type) + if not _dict_args: + return data + items_type = _dict_args[1] return {key: _transform_recursive(value, annotation=items_type) for key, value in data.items()} if (