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.2.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.2-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: llm_warehouse-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 d69aed30f52457c11bf33ce47ce87e02bae00e6dfa4e40302db2b900435d9dd3
MD5 f1ce439a105b636b8cdf430ab9d4c81d
BLAKE2b-256 38a9ba0b3db05eb2989150acf5a4a127b08389765897ed65b67e1caba0a8093b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: llm_warehouse-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f1ef5caaf9fa6dcd9e3a00a49719e33f72e7584d1170deb203174c6457cd0d33
MD5 83c5f3aa7895193f14f93add787f10d9
BLAKE2b-256 36050b76bd25d49220fbe46960a7ae842c1aceece936e8fe98566d1ed5d66cc5

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