Thanks for this utility, I was looking for something that did precisely this and think your implementation is nice.
Currently your setup.py lists quite a large number of pins, primarily transitive dependencies that are not imported or used directly, including restrictions on the setuptools / pip version.
This can make it challenging to integrate into an application environment that has a number of pre-existing restrictions on dependencies. However I do not believe most of these pins are necessary for your project. The general guideline I follow and have seen repeated mantra-like for years is to try and be as widely accepting of deps as possible in your libraries, and specific for all deps in your applications.
I'd personally love to see the "install_requires" here cut down to a minimal version. For example here I believe the following would capture everything that is required, and allow much more flexibility for endusers wishing to use this project:
install_requires = [
"pydantic>2",
"openai",
"Faker",
"spacy",
]
I'd be happy to submit a PR for this if you are open to such a change.