Skip to main content

Python SDK for the AICostManager API

Project description

AICostManager Python SDK

The AICostManager SDK reports AI usage to AICostManager, helping you track costs across providers.

Prerequisites

  1. Create a free account at aicostmanager.com and generate an API key.
  2. Export the key as AICM_API_KEY or pass it directly to the client or tracker.

Installation

uv (recommended)

uv pip install aicostmanager
# or add to an existing project
uv add aicostmanager

pip (fallback)

pip install aicostmanager

Quick start

Identify the API and service

Every usage event is tied to two identifiers:

  • api_id – the API being called (for example, the OpenAI Chat API)
  • service_key – the specific model or service within that API
  1. Visit the service lookup page and open the APIs tab. Copy the api_id for the API you are using, e.g. openai_chat.
  2. Switch to the Services tab on the same page and copy the full service_key for your model, e.g. openai::gpt-5-mini.

Track usage

from aicostmanager import Tracker

api_id = "openai_chat"          # copied from the APIs tab
service_key = "openai::gpt-5-mini"  # copied from the Services tab

with Tracker() as tracker:
    tracker.track(api_id, service_key, {
        "input_tokens": 10,
        "output_tokens": 20,
    })

Using with Tracker() ensures the background delivery queue is flushed before the program exits.

Configuration values are read from an AICM.INI file. See config.md for the complete list of available settings and their defaults.

LLM wrappers

Wrap popular LLM SDK clients to record usage automatically without calling track manually:

from aicostmanager import OpenAIChatWrapper
from openai import OpenAI

client = OpenAI()
wrapper = OpenAIChatWrapper(client)

resp = wrapper.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Say hello"}],
)
print(resp.choices[0].message.content)


wrapper.close()  # optional for immediate delivery; required for queued delivery

See LLM wrappers for the full list of supported providers and advanced usage.

Choosing a delivery strategy

Tracker supports multiple delivery components via DeliveryType:

  • Immediate – send each record synchronously. Ideal for simple scripts or tests.
  • Persistent queue (DeliveryType.PERSISTENT_QUEUE) – durable SQLite-backed queue for reliability across restarts.

Use the persistent queue for long-running services where losing usage data is unacceptable and immediate delivery when every call can block on the API. See Persistent Delivery and the Tracker guide for details.

For real-time insight into the persistent queue, run the queue-monitor command against the SQLite database created by PersistentDelivery:

uv run queue-monitor ~/.cache/aicostmanager/delivery_queue.db

Tracking in different environments

Python scripts

Use the context manager shown above to automatically flush the queue.

Django

# myapp/apps.py
from django.apps import AppConfig
from aicostmanager import Tracker

tracker = Tracker()

class MyAppConfig(AppConfig):
    name = "myapp"

    def ready(self):
        import atexit
        atexit.register(tracker.close)
# myapp/views.py
from .apps import tracker

def my_view(request):
    tracker.track("openai", "gpt-4o-mini", {"input_tokens": 10})
    ...

For a full setup guide, see Django integration guide.

FastAPI

from fastapi import FastAPI
from aicostmanager import Tracker

app = FastAPI()

@app.on_event("startup")
async def startup() -> None:
    app.state.tracker = Tracker()

@app.on_event("shutdown")
def shutdown() -> None:
    app.state.tracker.close()

For a full setup guide, see FastAPI integration guide.

Streamlit

import streamlit as st
from aicostmanager import Tracker
import atexit

@st.cache_resource
def get_tracker():
    tracker = Tracker()
    atexit.register(tracker.close)
    return tracker

tracker = get_tracker()

if st.button("Generate"):
    tracker.track("openai", "gpt-4o-mini", {"input_tokens": 10})

For a full setup guide, see Streamlit integration guide.

Celery

from celery import Celery
from aicostmanager import Tracker
from celery.signals import worker_shutdown

app = Celery("proj")
tracker = Tracker()

@app.task
def do_work():
    tracker.track("openai", "gpt-4o-mini", {"input_tokens": 10})

@worker_shutdown.connect
def close_tracker(**_):
    tracker.close()

For very short tasks, use with Tracker() as tracker: inside the task to ensure flushing.

More documentation

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

aicostmanager-0.1.32.tar.gz (61.7 kB view details)

Uploaded Source

Built Distribution

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

aicostmanager-0.1.32-py3-none-any.whl (49.6 kB view details)

Uploaded Python 3

File details

Details for the file aicostmanager-0.1.32.tar.gz.

File metadata

  • Download URL: aicostmanager-0.1.32.tar.gz
  • Upload date:
  • Size: 61.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for aicostmanager-0.1.32.tar.gz
Algorithm Hash digest
SHA256 b4c9d2fe2d7b7712de45dfc46fbfe081e574c9e11e653f5d33966f7fd74c605e
MD5 0f5f559a9c04a78a86152677541d27e3
BLAKE2b-256 1d7845eefc5a0fb79e470d715c765b30c36438f6f26c4d3d64b0f1874274021c

See more details on using hashes here.

File details

Details for the file aicostmanager-0.1.32-py3-none-any.whl.

File metadata

  • Download URL: aicostmanager-0.1.32-py3-none-any.whl
  • Upload date:
  • Size: 49.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for aicostmanager-0.1.32-py3-none-any.whl
Algorithm Hash digest
SHA256 dbac9c129bff77702e76c78552e25e11e5d4b69532a33522e4a31a39944b716a
MD5 fc9dd828391b7b5a5d93194481882313
BLAKE2b-256 a1d5cf0490ae6492ba010ad2665ea8318b4e82e9624304ad273c39305cff0ab2

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