in google/generativeai/types/generation_types.py [0:0]
def _normalize_schema(generation_config):
# Convert response_schema to protos.Schema for request
response_schema = generation_config.get("response_schema", None)
if response_schema is None:
return
if isinstance(response_schema, protos.Schema):
return
if isinstance(response_schema, type):
response_schema = content_types._schema_for_class(response_schema)
elif isinstance(response_schema, types.GenericAlias):
if not str(response_schema).startswith("list["):
raise ValueError(
f"Invalid input: Could not understand the type of '{response_schema}'. "
"Expected one of the following types: `int`, `float`, `str`, `bool`, `enum`, "
"`typing_extensions.TypedDict`, `dataclass` or `list[...]`."
)
response_schema = content_types._schema_for_class(response_schema)
response_schema = _rename_schema_fields(response_schema)
generation_config["response_schema"] = protos.Schema(response_schema)