Zespan observability middleware for Flask
Project description
zespan-flask
Automatic LLM observability middleware for Flask. Traces every request, LLM call, and custom span with zero code changes for basic usage.
Installation
pip install zespan-flask
Quick Start
from flask import Flask
from zespan_flask import ZespanFlaskExtension, ZespanConfig
app = Flask(__name__)
config = ZespanConfig(api_key="zsp_your_api_key")
lumiq = ZespanFlaskExtension(app, config)
Every HTTP request is now automatically traced.
Application Factory Pattern
lumiq = ZespanFlaskExtension()
def create_app():
app = Flask(__name__)
lumiq.init_app(app)
return app
Trace LLM Calls
from zespan_flask import observe_llm
@observe_llm(model="gpt-4o", provider="openai")
def generate_response(prompt: str):
response = openai.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}]
)
return response
Trace Custom Spans
from zespan_flask import observe_span
@observe_span("fetch_context", span_type="retrieval")
def fetch_context(query: str):
return vector_db.search(query)
Set Custom Attributes
from zespan_flask import set_attribute
@app.route("/chat")
def chat():
set_attribute("user.id", current_user.id)
set_attribute("session.id", session.get("id"))
Configuration
| Option | Default | Description |
|---|---|---|
api_key |
required | Zespan API key (zsp_...) |
base_url |
https://api.zespan.com |
API endpoint |
enabled |
True |
Toggle tracing on/off |
sample_rate |
1.0 |
Fraction of requests to trace (0.0–1.0) |
capture_request_body |
False |
Include request body in traces |
capture_response_body |
False |
Include response body in traces |
redact_fields |
["password","token","api_key"] |
Fields redacted automatically |
debug |
False |
Print flush errors to stdout |
Get your API key at zespan.com.
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
zespan_flask-1.1.0.tar.gz
(4.5 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
File details
Details for the file zespan_flask-1.1.0.tar.gz.
File metadata
- Download URL: zespan_flask-1.1.0.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.14.2"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.0.18 30 Sep 2025","python":"3.14.2","system":{"name":"Windows","release":"11"}} HTTPX2/2.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c74637e82b96ecef6d3cb183476c5e52b7a885319eaaac544ca9b0b60e5e8f78
|
|
| MD5 |
a1ab967bada674d8e0b070a8a1309747
|
|
| BLAKE2b-256 |
2ccb8b14d83b8577b332d1a0e7b24075703402ad98139f8af586ef780a77fd18
|
File details
Details for the file zespan_flask-1.1.0-py3-none-any.whl.
File metadata
- Download URL: zespan_flask-1.1.0-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.14.2"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.0.18 30 Sep 2025","python":"3.14.2","system":{"name":"Windows","release":"11"}} HTTPX2/2.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56c2666f66b155d5ef3065141d7ba3a40751cf4f6d0eb6b2ff20157dca67f1da
|
|
| MD5 |
815449f993b156f629ae5cbb496545f3
|
|
| BLAKE2b-256 |
96328e2159dc16c4b1f43854e50ad48d5f9421f4613e7426d07c8261585b64f5
|