AI-native error tracking and observability for Python applications
Project description
prismbrain
AI-native error tracking and observability for Python applications. Captures errors, LLM calls, and application traces with AI-powered fix suggestions.
Installation
pip install prismbrain
Quick Start
import os
import prismbrain
gb = prismbrain.PrismBrain(api_key="gb_your_key")
# Capture errors
try:
risky_operation()
except Exception as e:
gb.capture_error(e, metadata={"user_id": "123"})
# Capture warnings and info
gb.capture_warning("Disk usage above 90%")
gb.capture_info("Deployment completed", metadata={"version": "1.2.0"})
# Get AI fix suggestions for a trace
suggestions = gb.get_suggestions(
trace_id="...",
provider_keys={"anthropic": os.environ["ANTHROPIC_API_KEY"]},
# Or use {"openai": os.environ["OPENAI_API_KEY"]}
)
Auto-trace OpenAI calls
from openai import OpenAI
import prismbrain
gb = prismbrain.PrismBrain(api_key="gb_your_key")
client = prismbrain.wrap_openai(OpenAI(), gb)
# All completions are now traced automatically
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}]
)
Auto-trace Anthropic calls
from anthropic import Anthropic
import prismbrain
gb = prismbrain.PrismBrain(api_key="gb_your_key")
client = prismbrain.wrap_anthropic(Anthropic(), gb)
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)
Group OpenAI and Anthropic calls into one trace
When one user request makes multiple wrapped provider calls, put them in a
single trace_run scope. PrismBrain sends one trace with each provider call
as a child node:
with gb.trace_run("user request"):
openai_response = openai_client.chat.completions.create(...)
anthropic_response = anthropic_client.messages.create(...)
Calls outside a trace_run scope continue to create one trace per provider
request.
LangChain
Install the optional LangChain integration:
pip install "prismbrain[langchain]" langchain-openai
Attach the callback handler to LangChain models:
import os
import prismbrain
from langchain_openai import ChatOpenAI
pb = prismbrain.PrismBrain(api_key=os.environ["PRISMBRAIN_API_KEY"])
handler = prismbrain.PrismBrainCallbackHandler(pb)
llm = ChatOpenAI(model="gpt-4o-mini", callbacks=[handler])
Every invoke, tool call, error, token count, and measured latency is captured automatically.
LangGraph
Install the optional LangGraph integration:
pip install "prismbrain[langgraph]" langgraph langchain-openai
Pass the same handler through the compiled graph config:
graph.invoke(state, config={"callbacks": [handler]})
This captures graph nodes, nested chains, LLM calls, tools, errors, real latency, and token usage without manual trace() calls.
Decorators
import prismbrain
gb = prismbrain.PrismBrain(api_key="gb_your_key")
@prismbrain.trace_function(gb)
def process_data(items):
# Automatically traces errors and performance
...
@prismbrain.trace_endpoint(gb)
def handle_request():
# Traces API endpoint calls
...
Framework Middleware
FastAPI
from fastapi import FastAPI
import prismbrain
from prismbrain.middleware import FastAPIMiddleware
app = FastAPI()
gb = prismbrain.PrismBrain(api_key="gb_your_key")
app.add_middleware(FastAPIMiddleware, prismbrain=gb)
Flask
from flask import Flask
import prismbrain
from prismbrain.middleware import FlaskMiddleware
app = Flask(__name__)
gb = prismbrain.PrismBrain(api_key="gb_your_key")
FlaskMiddleware(app, prismbrain=gb)
Django
Add to settings.py:
PRISMBRAIN_API_KEY = "gb_your_key"
MIDDLEWARE = [
"prismbrain.middleware.DjangoMiddleware",
...
]
Publishing to PyPI
cd packages/prismbrain-python
pip install build twine
python -m build
twine upload dist/*
License
MIT
Project details
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 prismbrain-0.1.5.tar.gz.
File metadata
- Download URL: prismbrain-0.1.5.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9613a865e9198127cccd1a38cc7aa1e53eb0007b4cf8a7f7bf0d3f964e453cdb
|
|
| MD5 |
392cb408348bd5e6d40c092612e579b3
|
|
| BLAKE2b-256 |
98939b499b6eaf1c7be2cbd0d1531650e3d4a723bd59e1cbb57497299c5a7a61
|
File details
Details for the file prismbrain-0.1.5-py3-none-any.whl.
File metadata
- Download URL: prismbrain-0.1.5-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae9e6051add266d46904cf68d5e7e192c7ba7a27edc91d075d824c34ea4a0491
|
|
| MD5 |
5bbcb13b31a801913725948efc9afd2c
|
|
| BLAKE2b-256 |
ce27721192559f2852578bcffd06fc8b60abdc339d3ea38de1a3632406c0e14f
|