Skip to main content

Auto-capture OpenAI and Anthropic LLM calls for warehousing and observability

Project description

LLM Warehouse

🏠 Auto-capture OpenAI and Anthropic LLM calls for warehousing

A lightweight Python library that automatically logs all your OpenAI and Anthropic API calls to various storage backends, including your own Flask app, Supabase, or local files.

🚀 Quick Start

Installation

pip install llm-warehouse

Or for the latest development version:

pip install git+https://github.com/sinanozdemir/llm-warehouse.git

Basic Usage

For automatic patching on import, set environment variables:

export LLM_WAREHOUSE_API_KEY="your-warehouse-api-key"
export LLM_WAREHOUSE_URL="https://your-warehouse.com"

Then just import any LLM library AFTER importing this package - logging happens automatically:

import llm_warehouse  # BEFORE openai or anthropic

import openai  # Automatically patched!
# or
import anthropic  # Automatically patched!

Sample usage:

import llm_warehouse

# Now use OpenAI/Anthropic normally - all calls are automatically logged!
import openai
client = openai.Client()
response = client.chat.completions.create(
    model="gpt-4.1-mini",
    messages=[{"role": "user", "content": "Hello!"}]
)

📊 What Gets Logged

  • Request data: Model, messages, parameters
  • Response data: Completions, token usage, timing
  • Metadata: Timestamps, SDK method, streaming info
  • Errors: API errors and exceptions

🔧 Configuration Options

🛡️ Environment Variables

Variable Description
LLM_WAREHOUSE_API_KEY Your warehouse API token (enables auto-patching)
LLM_WAREHOUSE_URL Your warehouse URL

🔄 Programmatic Control (for advanced users)

import llm_warehouse

# Enable logging
llm_warehouse.patch(warehouse_url="...", api_key="...")

# Disable logging
llm_warehouse.unpatch()

# Check status
if llm_warehouse.is_patched():
    print("LLM calls are being logged")

🏗️ Backend Options

API Warehouse Backend

Use with the included API (recommended):

llm_warehouse.patch(
    warehouse_url="https://your-warehouse.com",
    api_key="your-warehouse-api-key"
)

Supabase Backend

Direct integration with Supabase:

llm_warehouse.patch(
    supabase_url="https://your-project.supabase.co",
    supabase_key="your-supabase-anon-key"
)

Local File Backend

For development and testing:

llm_warehouse.patch(log_file="llm_calls.jsonl")

📦 Features

  • Zero-configuration: Works out of the box with environment variables
  • Multiple backends: Flask warehouse, Supabase, local files
  • Async support: Full async/await compatibility
  • Streaming support: Captures streaming responses
  • Error handling: Logs API errors and exceptions
  • Minimal overhead: Designed for production use
  • Thread-safe: Works in multi-threaded applications

🧪 Development

git clone https://github.com/sinanozdemir/llm-warehouse.git
cd llm-warehouse/llm-warehouse-package
pip install -e ".[dev]"

Run tests:

pytest

Format code:

black llm_warehouse/
isort llm_warehouse/

📝 License

MIT License - see LICENSE file for details.

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

llm_warehouse-0.1.3.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

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

llm_warehouse-0.1.3-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file llm_warehouse-0.1.3.tar.gz.

File metadata

  • Download URL: llm_warehouse-0.1.3.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for llm_warehouse-0.1.3.tar.gz
Algorithm Hash digest
SHA256 295285efb62cb6e7c445ad9391ea6f313550330a561ab640719e7f22ff1be393
MD5 1b8b5b3c40cdc83e0429b37488b47872
BLAKE2b-256 dfff930ed78b2267ddb8cd347a871d4afa4c8e2054ab309c68a22d868cd45efd

See more details on using hashes here.

File details

Details for the file llm_warehouse-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: llm_warehouse-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for llm_warehouse-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c97f00f77d2097b747f8d276eeacb5e06969e7989887662b11bcd7e73526e449
MD5 f09ca8eefb9e2f523b4554a6b53b9473
BLAKE2b-256 e2b4e66f206ba8a17f3924828bf7fdac90c1d89f414a36fceb6c63afc0edb318

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