No project description provided
Project description
bulkllm
Enhancements over vanilla LiteLLM
bulkllm builds on top of litellm and adds a few extras:
- Automatic model registration. The package knows how to fetch the list of models from OpenAI, Anthropic, Gemini and OpenRouter and registers them with LiteLLM. Results are cached on disk so they can be reused offline.
- Centralised rate limiting. A
RateLimiterimplementation enforces RPM, TPM, input and output token limits per model (or regex group) and works with both async and sync code. - Retry‑aware completion wrappers. Thin wrappers around
litellm.completion/acompletionintegrate Tenacity retries, rate limiting and usage tracking. - Usage tracking with statistics. Per‑model usage is tracked in memory with
histograms, percentiles and cost calculations via the
UsageTrackerandUsageStathelpers. - Predefined LLM configurations. A large catalogue of model presets with cost information and convenient selection helpers is included.
Development
Always run make checku before committing.
Quick Commands
make initcreate the environment and install dependenciesmake helpsee available commandsmake autoformatformat codemake autoformat-unsafeformat code - including 'unsafe' fixesmake lintrun lintermake typecheckrun type checkermake testrun testsmake coveragerun tests with coverage reportmake checkrun all checks (format, lint, typecheck, test)make checkurun all checks (format-unsafe, lint, typecheck, test)
Code Conventions
Testing
- Use pytest (no test classes).
- Always set
match=inpytest.raises. - Prefer
monkeypatchover other mocks. - Mirror the source-tree layout in
tests/. - Always run
make checkuafter making changes.
Exceptions
- Catch only specific exceptions—never blanket
except:blocks. - Don’t raise bare
Exception.
Python
- Manage env/deps with uv (
uv add|remove,uv run -- …). - No logging config or side-effects at import time.
- Keep interfaces (CLI, web, etc.) thin; put logic elsewhere.
- Use
typerfor CLI interfaces,fastapifor web interfaces, andpydanticfor data models.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
bulkllm-0.5.12.tar.gz
(241.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
bulkllm-0.5.12-py3-none-any.whl
(136.5 kB
view details)
File details
Details for the file bulkllm-0.5.12.tar.gz.
File metadata
- Download URL: bulkllm-0.5.12.tar.gz
- Upload date:
- Size: 241.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
098ba65ab7e9c1c3f72922cdb40017a24252d78fe960c9693f8b9180e62aa980
|
|
| MD5 |
c2d426d8993d6abb22cb61604ff12499
|
|
| BLAKE2b-256 |
85a394616bd5d208d60c0427a778afd52d0d39e6ac76675adc16eec72a32caf1
|
File details
Details for the file bulkllm-0.5.12-py3-none-any.whl.
File metadata
- Download URL: bulkllm-0.5.12-py3-none-any.whl
- Upload date:
- Size: 136.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca2d63747350e7714b547b85838e23b1c5b41dbffd0fe7f3d2f8e1cf3830fe45
|
|
| MD5 |
4268e1188c95e1339f3b028c41bd5da0
|
|
| BLAKE2b-256 |
0b542fc030eebf5cc963cf98805cd9f5597f44be8da10b5cc6ba1b6a506e2d81
|