pramana · प्रमाण
Track whether LLM API outputs stay consistent over time.
Crowdsourced drift detection for LLM APIs. Run reproducible evals, compare results over time, catch silent model changes.
The Problem
When you call gpt-5 or claude-sonnet-4-6 today, you might get different behavior than yesterday. Providers update, fine-tune, and swap models behind stable identifiers. This is invisible.
There's no standard way to notice — let alone measure — these changes.
The Fix
git clone https://github.com/syd-ppt/pramana && cd pramana
uv pip install -e ".[dev]"
$ pramana run --tier cheap --model gpt-5.2
Running cheap suite against gpt-5.2...
✓ 10/10 passed
Pass rate: 100.0%
Same prompts. Same parameters. Deterministic where the provider allows it. Compare across runs and users.
Usage
# See all supported models
pramana models
# Run evals (auto-detects provider from model name)
export OPENAI_API_KEY=sk-...
pramana run --tier cheap --model gpt-4o
# Aliases work too
pramana run --tier cheap --model opus
# Submit to the community dashboard
pramana submit results.json
Tiers:
| Tier | Tests | Purpose |
|---|---|---|
cheap |
10 | Smoke test, CI gates |
moderate |
25 | Regular monitoring |
comprehensive |
75 | Full evaluation |
All tiers cover 6 categories: reasoning, factual, instruction following, coding, safety, creative.
Providers
| Provider | Temperature | Seed | Reproducibility |
|---|---|---|---|
| OpenAI | ✅ Enforced | ✅ Enforced | High |
| Anthropic | ✅ Enforced | ❌ Ignored | Low |
| ✅ Enforced | ✅ Enforced | Medium |
For scientific drift detection, use OpenAI API with explicit keys. See REPRODUCIBILITY.md.
How It Works
You run pramana ──► Fixed prompts hit the API ──► Results hashed & stored
│
Other users run pramana ──► Same prompts ──► Results compared
│
Drift detected via
output consistency tracking
- Content-addressable hashing — SHA-256 of (model, prompt, output) for deduplication
- Deterministic parameters —
temperature=0.0,seed=42enforced by default - No normalization layer — raw API responses, not filtered through LiteLLM
Authentication (Optional)
pramana login # GitHub/Google OAuth
pramana whoami # Check status
pramana delete # GDPR: delete all your data
No login required to run evals or submit results. Auth enables personalized tracking.
Development
git clone https://github.com/syd-ppt/pramana && cd pramana
uv pip install -e ".[dev]"
pytest tests/
Backend: pramana-api · Dashboard: pramana.pages.dev
Contributing
- Add test cases — append to
suites/v1.0/{tier}.jsonl - Add providers — subclass
BaseProviderinsrc/pramana/providers/ - Improve assertions — new types in
assertions.py
See CONTRIBUTING.md.
Metadata
Release files for pramana-ai 0.1.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 | |
|---|---|---|---|
| pramana_ai-0.1.0.tar.gz | 165.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pramana_ai-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 201.0 kB
Release files / pramana_ai-0.1.0.tar.gz
| Download URL | pramana_ai-0.1.0.tar.gz |
|---|---|
| Size | 165.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81376dad3979d8c3667ae1b3560d3a3170017462ba32f7a17cea67562d9a9f31
|
|
BLAKE2b-256 checksum How to use checksums |
11b4b9905dd16ce35dc03301599d5468f3516788ebb009589e8cc17f71ea2432
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.14
|
Release files / pramana_ai-0.1.0-py3-none-any.whl
| Download URL | pramana_ai-0.1.0-py3-none-any.whl |
|---|---|
| Size | 35.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d28f46e00ca1ee5d7c2349792c0ab47a2cfaf059c74f77394f999e5b73af0018
|
|
BLAKE2b-256 checksum How to use checksums |
32dfa5245888f1f5f2af7fa74d85462a7ed0e3da3eb37d9bac20d0cd4f3cc2a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.14
|