megflow-observability
Python SDK for Megflow AI Observability — track tokens, cost, latency and errors across OpenAI, Anthropic, Gemini and more.
Install
pip install megflow-observability
Quick start
from megflow_observability import MegflowObserve
observe = MegflowObserve(api_key="obs_your_key_here")
observe.track(
provider="openai",
model="gpt-4o",
input_tokens=100,
output_tokens=50,
total_tokens=150,
cost_usd=0.00075,
latency_ms=320,
status_code=200,
)
Auto-instrument OpenAI
from openai import OpenAI
from megflow_observability import MegflowObserve, wrap_openai
client = wrap_openai(OpenAI(), MegflowObserve(api_key="obs_your_key_here"))
# All calls are tracked automatically
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}],
)
Auto-instrument Anthropic
import anthropic
from megflow_observability import MegflowObserve, wrap_anthropic
client = wrap_anthropic(anthropic.Anthropic(), MegflowObserve(api_key="obs_your_key_here"))
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
Auto-instrument Gemini
import google.generativeai as genai
from megflow_observability import MegflowObserve, wrap_gemini
genai.configure(api_key="YOUR_GOOGLE_API_KEY")
observe = MegflowObserve(api_key="obs_your_key_here")
model = wrap_gemini(genai.GenerativeModel("gemini-2.0-flash"), observe)
response = model.generate_content("Hello")
Auto-instrument AWS Bedrock
Works with Claude, Llama, Mistral, Titan and Cohere on Bedrock.
import boto3
import json
from megflow_observability import MegflowObserve, wrap_bedrock
observe = MegflowObserve(api_key="obs_your_key_here")
client = wrap_bedrock(
boto3.client("bedrock-runtime", region_name="us-east-1"),
observe,
)
response = client.invoke_model(
modelId="anthropic.claude-3-5-sonnet-20241022-v2:0",
body=json.dumps({
"anthropic_version": "bedrock-2023-05-31",
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 1024,
}),
)
result = json.loads(response["body"].read())
Auto-instrument Cohere
Works with both Client (v1) and ClientV2 (v2).
import cohere
from megflow_observability import MegflowObserve, wrap_cohere
observe = MegflowObserve(api_key="obs_your_key_here")
# v2 API
co = wrap_cohere(cohere.ClientV2("COHERE_API_KEY"), observe)
response = co.chat(
model="command-r-plus",
messages=[{"role": "user", "content": "Hello"}],
)
# v1 API
co = wrap_cohere(cohere.Client("COHERE_API_KEY"), observe)
response = co.chat(model="command-r-plus", message="Hello")
Prompt observability
Every wrap_*() function auto-computes a prompt_size (character count) and prompt_hash (SHA-256, first 16 chars) from the prompt-relevant input before sending anything — the raw prompt text itself is never transmitted. This lets the dashboard's Prompts page detect and group repeated prompts.
prompt_version has no natural source in an API call, so tag it explicitly per wrapped client:
client = wrap_openai(OpenAI(), observe, prompt_version="v3")
Optional dependencies
pip install megflow-observability[openai] # includes openai
pip install megflow-observability[anthropic] # includes anthropic
pip install megflow-observability[gemini] # includes google-generativeai
pip install megflow-observability[all] # includes all three
Links
- Dashboard: observability.megflow.com
- JS SDK: npmjs.com/package/megflow-observability
Release files for megflow-observability 0.12.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 | |
|---|---|---|---|
| megflow_observability-0.12.0.tar.gz | 18.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| megflow_observability-0.12.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.6 kB
Release files / megflow_observability-0.12.0.tar.gz
| Download URL | megflow_observability-0.12.0.tar.gz |
|---|---|
| Size | 18.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0283c3f723e862f09fc842f2d72d66d3ec3d17de8b86c5d81a03997eee311201
|
|
BLAKE2b-256 checksum How to use checksums |
fe879a205a7c3001839357c5157b1ce494d829b34da7b90ded494d98ef1c0766
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / megflow_observability-0.12.0-py3-none-any.whl
| Download URL | megflow_observability-0.12.0-py3-none-any.whl |
|---|---|
| Size | 23.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e9cb319016316b9e4b904c66d6f02c044c4fbf854b084a129e7cf54fc798f8f
|
|
BLAKE2b-256 checksum How to use checksums |
31e06c8d52a602574fa74f69749e3bf36e9d80ed637a10bf332f71c01ff42663
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|