Automatic observability for LLM API calls
Project description
llm-lens
Automatic observability for OpenAI and Anthropic API calls.
Tracks latency, token usage, cost, and errors — with a live web dashboard.
What it does
Add one import to your project. llm-lens silently intercepts every OpenAI and Anthropic API call and logs:
- Latency (ms)
- Input and output tokens
- Cost in USD
- Model used
- Errors and status
No SDK changes. No account setup. No config files.
Installation
pip install llm-lens-py
Usage
import llm_lens # patches OpenAI and Anthropic automatically
import openai
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "hello"}]
)
# this call was silently tracked
CLI
# show a table of all tracked calls
llm-lens
# show aggregated stats: total calls, error rate, avg latency, total cost
llm-lens stats
# start the live dashboard at http://localhost:8000
llm-lens serve
# set a cost alert threshold
llm-lens config set cost_alert_usd 0.10
Dashboard
Run llm-lens serve and open http://localhost:8000.
- Live stats: total calls, error rate, avg latency, total cost
- Latency per call chart
- Error per call chart
- Red alert banner when cost threshold is breached
- Auto-refreshes every 5 seconds
Docker
docker build -t llm-lens .
docker run -p 8000:8000 llm-lens
Supported models
| Provider | Models |
|---|---|
| OpenAI | gpt-4o, gpt-4o-mini, gpt-4-turbo |
| Anthropic | claude-3-5-sonnet, claude-3-5-haiku, claude-3-opus |
Data storage
All data is stored locally at ~/.llm_lens/calls.db (SQLite). Nothing leaves your machine unless you deploy the server yourself.
Stack
Python · FastAPI · SQLite · Vanilla JS · Chart.js · Docker · Render
Status
Active development. Feedback and PRs welcome.
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
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
File details
Details for the file llm_lens_py-0.1.2.tar.gz.
File metadata
- Download URL: llm_lens_py-0.1.2.tar.gz
- Upload date:
- Size: 215.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61733786bb7c2c8fdb712ef2f08cc0c75467e4a0e976a5c862e33ccd12d13fbb
|
|
| MD5 |
4aac9ee68137dbdde01555b651cf99c2
|
|
| BLAKE2b-256 |
d212042e5b31201d8384a84d75df88f22a78c4af9718823a21cf86ccaf6865bd
|
File details
Details for the file llm_lens_py-0.1.2-py3-none-any.whl.
File metadata
- Download URL: llm_lens_py-0.1.2-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c541049706d6a7df327f788b27f0567c31537cad597b083aa103cf1bc8accbd6
|
|
| MD5 |
c4d958efba6af221410864ed401fe39d
|
|
| BLAKE2b-256 |
1321cabd37437984c980bdbd31f5fb1616622a73c61b9be1c917ace7598199dc
|