def _convert_genai_function_parameters()

in aidial_adapter_vertexai/chat/tools.py [0:0]


def _convert_genai_function_parameters(function_schema: dict) -> GenAISchema:
    def _convert_schema(schema: dict | str | list):
        if not isinstance(schema, dict):
            return schema

        genai_schema = {}

        for field, value in schema.items():
            if field == "type":
                # GenAI function parameters should have types in uppercase
                genai_schema[field] = value.upper()
            elif isinstance(value, str):
                genai_schema[field] = value
            elif isinstance(value, list):
                genai_schema[field] = [_convert_schema(item) for item in value]
            elif isinstance(value, dict):
                genai_schema[field] = {
                    key: _convert_schema(value) for key, value in value.items()
                }
            else:
                raise ValueError(
                    f"Failed to convert function declaration to Vertex format: {schema}"
                )

        return genai_schema

    return cast(GenAISchema, _convert_schema(function_schema))