Skip to main content

A Python library that meters Ollama usage to Revenium.

Project description

🤖 Revenium Middleware for Ollama

PyPI version Python Versions Documentation Status License: Apache 2.0

A middleware library for metering and monitoring Ollama API usage in Python applications. 🐍✨

✨ Features

  • 📊 Precise Usage Tracking: Monitor tokens, costs, and request counts across all Ollama API endpoints
  • 🔌 Seamless Integration: Drop-in middleware that works with minimal code changes
  • ⚙️ Flexible Configuration: Customize metering behavior to suit your application needs

📥 Installation

pip install revenium-middleware-ollama

🔧 Usage

🔄 Zero-Config Integration

Simply export your REVENIUM_METERING_API_KEY and import the middleware. Your Ollama calls will be metered automatically:

import ollama
import revenium_middleware_ollama

# Ensure REVENIUM_METERING_API_KEY environment variable is set

response: ollama.ChatResponse = ollama.chat(
    model='qwen2.5:0.5b', messages=[
        {
            'role': 'user',
            'content': 'Why is the sky blue?',
        },
    ])
print(response['message']['content'])

The middleware automatically intercepts Ollama API calls and sends metering data to Revenium without requiring any changes to your existing code. Make sure to set the REVENIUM_METERING_API_KEY environment variable for authentication with the Revenium service.

📈 Enhanced Tracking with Metadata

For more granular usage tracking and detailed reporting, add the usage_metadata parameter:

import ollama
import revenium_middleware_ollama

response = ollama.chat(
    model='qwen2.5:0.5b', messages=[
        {
            'role': 'user',
            'content': 'Why is the sky blue?',
        },
    ],
    usage_metadata={
        "trace_id": "conv-28a7e9d4-1c3b-4e5f-8a9b-7d1e3f2c1b4a",
        "task_id": "chat-summary-af23c910",
        "task_type": "text-classification",
        "subscriber_identity": "customer-email@example.com",
        "organization_id": "acme-corporation-12345",
        "subscription_id": "startup-plan-quarterly-2025-Q1",
        "product_id": "intelligent-document-processor-v3",
        "source_id": "mobile-app-ios-v4.2",
        "ai_provider_key_name": "ollama-production-key1",
        "agent": "customer-support-assistant-v2",
    },
)
print(response.choices[0].message.content)

🚀 OpenAI Compatibility Mode

The middleware can also be used with Ollama's OpenAI compatibility mode.

import openai
import revenium_middleware_openai

openai.api_key = 'ollama'
openai.base_url = 'http://localhost:11434/v1/'
question = "Why is the sky blue?"

response = openai.chat.completions.create(
    model="gemma3:12b",
    messages=[
       {"role": "system", "content": "You are a helpful assistant."},
       {"role": "user", "content": question}
    ],
    usage_metadata={
        "trace_id": "conv-28a7e9d4-1c3b-4e5f-8a9b-7d1e3f2c1b4a",
        "task_id": "chat-summary-af23c910",
        "task_type": "text-classification",
        "subscriber_identity": "customer-email@example.com",
        "organization_id": "acme-corporation-12345",
        "subscription_id": "startup-plan-quarterly-2025-Q1",
        "product_id": "intelligent-document-processor-v3",
        "source_id": "mobile-app-ios-v4.2",
        "ai_provider_key_name": "ollama-production-key1",
        "agent": "customer-support-assistant-v2",
    }
)

print(response)

🏷️ Metadata Fields

The usage_metadata parameter supports the following fields:

Field Description Use Case
trace_id Unique identifier for a conversation or session Track multi-turn conversations
task_id Identifier for a specific AI task Group related API calls for a single task
task_type Classification of the AI operation Categorize usage by purpose (e.g., classification, summarization)
subscriber_email The email address of the subscriber Track usage by individual users
subscriber_credential_name The name of the credential associated with the subscriber Track usage by individual users
subscriber_credential The credential associated with the subscriber Track usage by individual users
organization_id Customer or department identifier Allocate costs to business units
subscription_id Reference to a billing plan Associate usage with specific subscriptions
product_id The product or feature using AI Track usage across different products
agent Identifier for the specific AI agent Compare performance across different AI agents
response_quality_score The quality of the AI response (0..1) Track AI response quality

All metadata fields are optional. Adding them enables more detailed reporting and analytics in Revenium.

🔄 Compatibility

  • 🐍 Python 3.8+
  • 🤖 Ollama Python SDK 1.0.0+
  • 🌐 Works with all Ollama models

🔍 Logging

This module uses Python's standard logging system. You can control the log level by setting the REVENIUM_LOG_LEVEL environment variable:

# Enable debug logging
export REVENIUM_LOG_LEVEL=DEBUG

# Or when running your script
REVENIUM_LOG_LEVEL=DEBUG python your_script.py

Available log levels:

  • DEBUG: Detailed debugging information
  • INFO: General information (default)
  • WARNING: Warning messages only
  • ERROR: Error messages only
  • CRITICAL: Critical error messages only

👥 Contributing

Contributions are welcome! Please check out our contributing guidelines for details.

  1. 🍴 Fork the repository
  2. 🌿 Create your feature branch (git checkout -b feature/amazing-feature)
  3. 💾 Commit your changes (git commit -m 'Add some amazing feature')
  4. 🚀 Push to the branch (git push origin feature/amazing-feature)
  5. 🔍 Open a Pull Request

📄 License

This project is licensed under the Apache Software License - see the LICENSE file for details.

🙏 Acknowledgments

  • 🔥 Thanks to the Ollama team for creating an excellent API
  • 💖 Built with ❤️ by the Revenium team

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

revenium_middleware_ollama-0.1.10.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

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

revenium_middleware_ollama-0.1.10-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file revenium_middleware_ollama-0.1.10.tar.gz.

File metadata

File hashes

Hashes for revenium_middleware_ollama-0.1.10.tar.gz
Algorithm Hash digest
SHA256 d26eb6fb0e0d5afa9ee53ea353d161327ea8f44d1b36876bd235882a296ed51c
MD5 30d7b149c52ace063724491f457f8864
BLAKE2b-256 f4bdc2749a6e162d64952da05d30d691ea28aa8e9032726e3b4755a5910ecd69

See more details on using hashes here.

File details

Details for the file revenium_middleware_ollama-0.1.10-py3-none-any.whl.

File metadata

File hashes

Hashes for revenium_middleware_ollama-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 3e9cbe65d1f17f25f8217ef219e9c9de97cfa10e05322b0620d7068f0ac7991e
MD5 80c520a6784f04de59cd2365e2b02ac0
BLAKE2b-256 9f00f48b41e8ad986a0138d06517c387efc37288ce190739c7a83bea69f67893

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