BitPulse
Production-grade LLM observability for GraphBit workflows.
- Zero-config automatic tracing for LLM calls and workflows
- Captures prompts, responses, tokens, latency, errors
- Sends trace data to your observability API endpoint
Project Info
- Python: 3.10–3.13
- License: GraphBit Framework License
- PyPI: bitpulse
- PRs: Welcome via GitHub pull requests
Install
pip install bitpulse
Python: 3.10–3.13
What It Does
BitPulse automatically captures detailed trace data from GraphBit LLM clients and workflows and submits it to your observability endpoint for monitoring, analytics, and debugging.
Key Features
- Automatic tracing for LLM calls and workflows
- Rich metadata: prompts, responses, tokens, latency, finish reasons, errors
- Tool-call detection for agent workflows
- Works with OpenAI and GraphBit internals
- Type-safe models (Pydantic) and robust async I/O
Quick Start
import asyncio, os
from graphbit import LlmClient, LlmConfig
from bitpulse import AutoTracer
async def main():
tracer = await AutoTracer.create()
cfg = LlmConfig.openai(api_key=os.getenv("OPENAI_API_KEY"), model="gpt-4o-mini")
client = tracer.wrap_client(LlmClient(cfg), cfg)
resp = await client.complete_full_async("What is GraphBit?", max_tokens=100)
results = await tracer.send()
print("sent:", results["sent"], "failed:", results["failed"])
asyncio.run(main())
Configuration
Set environment variables to configure external endpoints:
export BITPULSE_TRACING_API_KEY="your-api-key"
export BITPULSE_TRACEABLE_PROJECT="your-project-name"
# optional
export BITPULSE_TRACING_API_URL="https://your-api-endpoint.com/traces"
Links
- GitHub: InfinitiBit/bitpulse
- Issues: issue tracker
License
GraphBit Framework License. See LICENSE.md in the repository.
Trace Data Format Example
Example JSON payload sent to your observability endpoint:
{
"tracing_api_key": "your-api-key",
"traceable_project_name": "your-project",
"run_name": "LlmClient",
"run_type": "llm",
"status": "success",
"input": "Hello, world!",
"output": "Hi there!",
"error": null,
"start_time": "2025-01-01T00:00:00Z",
"latency": 123.45,
"tokens": 50,
"metadata": {
"model_name": "gpt-4o-mini",
"provider": "openai",
"input_tokens": 10,
"output_tokens": 40,
"finish_reason": "stop"
}
}
API Reference
High-level AutoTracer methods:
AutoTracer.create(): Initialize tracerwrap_client(llm_client, llm_config): Trace LLM client callswrap_executor(executor, llm_config): Trace workflow executionsend(): Convert and submit captured spans to your endpointexport(): Export captured traces locally
Metadata
Release files for bitpulse 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bitpulse-0.1.3.tar.gz | 44.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bitpulse-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 94.6 kB
Release files / bitpulse-0.1.3.tar.gz
| Download URL | bitpulse-0.1.3.tar.gz |
|---|---|
| Size | 44.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d56a9e4155ffc61d7079e92d4bee333ef684617c728d66dd30c114d93c6ffe9b
|
|
BLAKE2b-256 checksum How to use checksums |
d9624dca6be7db734ae3c04946f21e990984cf3c53d2b08631d75e505fcbb943
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / bitpulse-0.1.3-py3-none-any.whl
| Download URL | bitpulse-0.1.3-py3-none-any.whl |
|---|---|
| Size | 50.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a63ae97ba05f30378e2de8026b24dba5fd8b70d1b0fc3f1172c3721744e7b0bf
|
|
BLAKE2b-256 checksum How to use checksums |
d379c2c4315a0c6022e418b64024a88faad1a366ab4113476115df9feb67338e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|