⚡ LLM Project Generator
One command. Four provider templates. Tested chatbot foundations.
Groq · Google Gemini · OpenAI · Anthropic Claude
Built by Talha Ahmad
Overview
llm-project-generator creates a focused, standalone terminal chatbot project from a packaged provider template. Each generated project combines one provider SDK, Pydantic AI, Pydantic Settings, validated schemas, provider-specific configuration, and deterministic tests around a shared application structure.
It generates one-provider projects; it does not perform runtime multi-provider routing.
Quick start
Requirements: Python 3.13 or newer and uv.
The shortest path opens an interactive provider menu in a terminal:
uvx llm-project-generator init my-chatbot
For automation, select a provider explicitly. Non-interactive environments require --provider:
uvx llm-project-generator init my-chatbot --provider groq
uvx llm-project-generator init my-chatbot --provider google
uvx llm-project-generator init my-chatbot --provider openai
uvx llm-project-generator init my-chatbot --provider anthropic
For a persistent installation:
uv tool install llm-project-generator
llm-project-generator init my-chatbot
Multi-provider generation is available in version 0.2.0 and later.
Providers
| CLI name | Display name | Environment variable | Default model | Generated dependency | Deterministic verification | Live verification |
|---|---|---|---|---|---|---|
groq |
Groq | GROQ_API_KEY |
groq:openai/gpt-oss-120b |
pydantic-ai-slim[groq] |
Passed | Passed |
google |
Google Gemini | GOOGLE_API_KEY |
google:gemini-3.5-flash-lite |
pydantic-ai-slim[google] |
Passed | Pending billing/support |
openai |
OpenAI | OPENAI_API_KEY |
openai:gpt-5.4-mini |
pydantic-ai-slim[openai] |
Passed | Pending billing |
anthropic |
Anthropic Claude | ANTHROPIC_API_KEY |
anthropic:claude-sonnet-5 |
pydantic-ai-slim[anthropic] |
Passed | Pending billing |
Deterministic verification covers generation, imports, configuration, mocked provider construction, and shared chatbot behavior. Live verification covers real authentication, model availability, and provider responses. Only Groq has completed both so far.
Use a generated project
cd my-chatbot
uv sync
cp .env.example .env
Open .env in an editor and add the required API key for the provider you selected. LLM_MODEL is an optional model override; when it is omitted, the selected provider's default model is used. The generator never requests or copies API keys. The generated .env does not exist until you create it and is ignored by Git.
Run the chatbot and its deterministic tests:
uv run llm-chat
uv run pytest
Features
- Interactive or explicit provider selection.
- Provider-isolated generated dependencies.
- Pydantic validation for settings and chat messages.
- Conversation history within a terminal session.
- Deterministic fake-model and mocked provider tests.
- Safe destination policy with no force, overwrite, or delete behavior.
- Packaged templates available from the installed wheel.
- No generator runtime dependencies.
Architecture
llm-project-generator
|
+-------------+-------------+
| |
Common chatbot resources Provider overlay
| |
+-------------+-------------+
|
Generated project
|
config -> provider -> LLM API
Common resources own the terminal loop, chat orchestration, reply execution, schemas, exceptions, and shared tests. Each overlay owns its environment example, README, dependency metadata, provider configuration, provider construction, and provider tests.
Generated structure
my-chatbot/
|-- .env.example
|-- .gitignore
|-- LICENSE
|-- README.md
|-- pyproject.toml
|-- src/
| `-- app/
| |-- __init__.py
| |-- chat.py
| |-- client.py
| |-- config.py
| |-- exceptions.py
| |-- main.py
| |-- provider.py
| `-- schemas.py
`-- tests/
Safety
The destination parent must already exist, and the destination itself must not exist. Existing files and directories are never overwritten; there is no force or delete behavior.
The generator never creates .env, requests API keys, or copies secrets. Generated configuration uses SecretStr. Model output is probabilistic and untrusted; it is not an authorization or security boundary.
Automated generated tests use fake models and mocks and do not make real provider requests.
Project names and destinations
Project names may contain ASCII letters, numbers, dots, underscores, and hyphens. They must begin and end with a letter or number. Runs of dots, underscores, and hyphens are normalized into lowercase hyphens for distribution metadata. The destination parent must exist, and the destination itself must not already exist. A filesystem failure during generation can leave a partial destination; inspect it or remove it before retrying.
Verification status
The four provider implementations have deterministic generated-suite coverage. Groq has also completed live verification. Google Gemini, OpenAI, and Anthropic Claude live checks remain pending billing/support availability, so this preview does not claim all providers are production-ready or live-verified.
Development
git clone https://github.com/Talhaahmad9/llm-project-generator.git
cd llm-project-generator
uv sync --dev
uv run pytest
uv build --no-sources
CI generates and tests all four provider projects without provider credentials.
Limitations and roadmap
This preview provides a terminal interface only, generates one provider per project, requires Python 3.13+, does not create API keys, does not overwrite existing destinations, and does not make live calls in automated tests. Three live-verification checks are pending.
The next milestones are to complete remaining live verification and prepare the criteria for 1.0.0. Future work such as FastAPI or RAG belongs to separate product milestones; it is not part of the generated chatbot today.
Contributing
Create a focused branch, run the root tests and build locally, and keep provider resources explicitly allowlisted. Pull requests should preserve deterministic tests and must not add credentials or live API calls.
Author and license
Built by Talha Ahmad. Licensed under the MIT License.
Metadata
Release files for llm-project-generator 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llm_project_generator-0.2.0.tar.gz | 18.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llm_project_generator-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 62.4 kB
Release files / llm_project_generator-0.2.0.tar.gz
| Download URL | llm_project_generator-0.2.0.tar.gz |
|---|---|
| Size | 18.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61e1b2f8cdd2dc00c29302094cbf9e40cd5f9bc0ceac0c824a3f1530d41ceb36
|
|
BLAKE2b-256 checksum How to use checksums |
faee2d844921277baccb5be14e22c870696469885d1e065f80b8f3f3935cbf4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / llm_project_generator-0.2.0-py3-none-any.whl
| Download URL | llm_project_generator-0.2.0-py3-none-any.whl |
|---|---|
| Size | 43.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f19b624b5b819d4ad00e9c55a90521b2c095470ad2c6a6dfd0e660c306d950c
|
|
BLAKE2b-256 checksum How to use checksums |
01464ba6f336fd361e2c43c33f0c8b422a46e8cfe0253dcf91c44554389fb3d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency log