Skip to main content

Orbit - AI Cost Analytics SDK. Track, monitor, and optimize your AI spend.

Project description

Orbit SDK for Python

Track, monitor, and optimize your AI spend across OpenAI, Anthropic, and other LLM providers.

Installation

pip install orbithq-sdk

# With OpenAI support
pip install orbithq-sdk[openai]

# With Anthropic support
pip install orbithq-sdk[anthropic]

# With all providers
pip install orbithq-sdk[all]

Quick Start

1. Get your API key

Sign up at orbithq.ai and create an API key.

2. Initialize the SDK

from orbithq_sdk import Orbit

orbit = Orbit(
    api_key="orb_live_xxxxxxxxxxxxxxxxxxxxxxxx",
    default_feature="my-app",  # Optional: default feature for all events
)

3. Track your LLM calls

Option A: Automatic tracking (Recommended)

Wrap your OpenAI or Anthropic client for automatic tracking:

from openai import OpenAI
from orbithq_sdk import Orbit, WrapperOptions

orbit = Orbit(api_key="orb_live_xxx")
openai = orbit.wrap_openai(OpenAI(), WrapperOptions(feature="chat-assistant"))

# All API calls are now automatically tracked!
response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello, world!"}],
)

Works with Anthropic too:

from anthropic import Anthropic
from orbithq_sdk import Orbit, WrapperOptions

orbit = Orbit(api_key="orb_live_xxx")
anthropic = orbit.wrap_anthropic(Anthropic(), WrapperOptions(feature="document-analysis"))

message = anthropic.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Analyze this document..."}],
)

Option B: Manual tracking

For other providers or custom implementations:

from orbithq_sdk import Orbit

orbit = Orbit(api_key="orb_live_xxx")

# Track a successful request
orbit.track(
    model="gpt-4o",
    input_tokens=150,
    output_tokens=50,
    latency_ms=1234,
    feature="summarization",
    environment="production",
)

# Track an error
orbit.track_error(
    model="gpt-4o",
    error_type="rate_limit_exceeded",
    error_message="Rate limit exceeded",
    feature="chat-assistant",
    input_tokens=150,
)

Configuration

from orbithq_sdk import Orbit, OrbitConfig

orbit = Orbit(config=OrbitConfig(
    # Required
    api_key="orb_live_xxx",

    # Optional
    base_url="https://app.orbithq.ai/api/v1",  # Custom API endpoint
    default_feature="my-app",                    # Default feature name
    default_environment="production",            # 'production' | 'staging' | 'development'
    debug=False,                                 # Enable debug logging

    # Batching (for high-volume applications)
    batch_events=True,       # Batch events before sending
    batch_size=10,           # Max events per batch
    batch_interval=5.0,      # Max seconds before sending batch

    # Reliability
    retry=True,              # Retry failed requests
    max_retries=3,           # Max retry attempts
))

Feature Attribution

Features are Orbit's key differentiator - they let you see exactly which parts of your application are consuming AI resources:

# Track different features
orbit.track(
    model="gpt-4o",
    input_tokens=100,
    output_tokens=50,
    feature="chat-assistant",  # Attribute to chat feature
)

orbit.track(
    model="gpt-4o",
    input_tokens=500,
    output_tokens=200,
    feature="document-analysis",  # Attribute to doc analysis
)

Then in the Orbit dashboard, you'll see:

  • Cost breakdown by feature
  • Request volume by feature
  • Error rates by feature
  • And more!

Context Manager Support

from orbithq_sdk import Orbit

with Orbit(api_key="orb_live_xxx") as orbit:
    orbit.track(model="gpt-4o", input_tokens=100, output_tokens=50)
# Automatically flushes on exit

Graceful Shutdown

For long-running processes, flush events before exit:

# Before your process exits
orbit.shutdown()

Event Properties

Property Type Required Description
model str Yes Model name (e.g., 'gpt-4o', 'claude-3-opus')
input_tokens int Yes Number of input tokens
output_tokens int Yes Number of output tokens
provider str No Provider name (auto-detected if not provided)
latency_ms int No Request latency in milliseconds
feature str No Feature name for attribution
environment str No Environment ('production', 'staging', 'development')
status str No Request status ('success', 'error', 'timeout')
error_type str No Error type if status is 'error'
error_message str No Error message if status is 'error'
user_id str No Your application's user ID
session_id str No Session ID for grouping requests
request_id str No Unique request ID for tracing
metadata dict No Additional key-value metadata

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

orbithq_sdk-0.1.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orbithq_sdk-0.1.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file orbithq_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: orbithq_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for orbithq_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 acbb570d6cac696d61ca5c2a07e053526435d82622b3c8b2204b139f1319c23b
MD5 1abc994f8e272f7c8e308614008716f6
BLAKE2b-256 0934baec9f113a9f10875877b41de1fad1e08453de011a3025d2d1f513eebe23

See more details on using hashes here.

File details

Details for the file orbithq_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: orbithq_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for orbithq_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ccc63a08e7015ee3ed51539e4ef51525c9d74d37d39e82fc82bfcefb6ff71dd
MD5 c0c88d75563363f9953267c47dc07e9d
BLAKE2b-256 b5bb71e31437a5136daa064dc1c0e64e86984cfaff182b05e73ce6cf0afd027d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page