google-gemini / generative-ai-python

The official Python library for the Google Gemini API
https://pypi.org/project/google-generativeai/
Apache License 2.0
1.62k stars 322 forks source link

Support python `Literal` types when defining JSON or FunctionCalling schemas. #577

Open MarkDaoust opened 1 month ago

MarkDaoust commented 1 month ago

Description of the feature request:

String literal types should create Enums in the generated schema.

What problem are you trying to solve with this feature?

No response

Any other information you'd like to share?

No response

yan-hic commented 1 month ago

@MarkDaoust you mention "generated" - is there a private method that generates protos.Schema somewhere ?

I was about to write a feature request for a from_object() like in node.js to convert a pydantic object to Schema.

MarkDaoust commented 1 month ago

Hi @yan-hic,

The code is here:

https://github.com/google-gemini/generative-ai-python/blob/8f77cc6ac99937cd3a81299ecf79608b91b06bbb/google/generativeai/types/content_types.py#L337-L342

It uses pydantic to do the conversion already, but I haven't tested actually passing pydantic objects. Similarly, I haven't tried this with types like Literal['a', 'b'].