Skip to main content

SimpleModelRouter

A Python library for interfacing with various Large Language Model (LLM) inference endpoints, including OpenAI, Anthropic, and Ollama. The library provides a unified, async-first interface for interacting with different LLM providers.

Features

  • Support for multiple LLM providers:
    • OpenAI (GPT-3.5, GPT-4)
    • Anthropic (Claude)
    • Ollama (Local models)
  • Async HTTP support using httpx
  • Streaming responses for real-time text generation
  • Unified interface across providers
  • Type hints and comprehensive documentation
  • Configurable API endpoints and models
  • Error handling and retries
  • Resource cleanup and connection management

Installation

Using pip

pip install simplemodelrouter

Using Poetry (recommended)

poetry add simplemodelrouter

For development:

# Clone the repository
git clone https://github.com/yourusername/simplemodelrouter.git
cd simplemodelrouter

# Install Poetry if you haven't already
curl -sSL https://install.python-poetry.org | python3 -

# Install dependencies including development tools
poetry install

Quick Start

import asyncio
from simplemodelrouter import OpenAIProvider, Message

async def main():
    provider = OpenAIProvider(api_key="your-api-key")
    messages = [Message(role="user", content="Hello!")]
    
    response = await provider.chat(messages)
    print(response.message.content)
    
    await provider.close()

asyncio.run(main())

Detailed Usage

Provider Configuration

Each provider can be configured with:

  • API key (required for OpenAI and Anthropic)
  • Base URL (optional, for custom deployments)
  • Default model (optional)
# OpenAI with custom configuration
openai = OpenAIProvider(
    api_key="your-api-key",
    base_url="https://api.custom-deployment.com/v1",
    default_model="gpt-4"
)

# Anthropic with default configuration
anthropic = AnthropicProvider(
    api_key="your-api-key"
)

# Ollama for local deployment
ollama = OllamaProvider(
    base_url="http://localhost:11434",
    default_model="llama2"
)

Chat Interface

The chat interface supports conversations with multiple messages:

messages = [
    Message(role="system", content="You are a helpful assistant."),
    Message(role="user", content="What's the weather like?"),
    Message(role="assistant", content="I don't have access to current weather data."),
    Message(role="user", content="What can you help me with?")
]

response = await provider.chat(
    messages=messages,
    temperature=0.7,
    stream=False
)

Streaming Responses

All providers support streaming for both chat and completion endpoints:

async for chunk in await provider.chat(messages, stream=True):
    print(chunk.message.content, end="", flush=True)

async for chunk in await provider.complete(prompt, stream=True):
    print(chunk.text, end="", flush=True)

Error Handling

The library provides consistent error handling across providers:

try:
    response = await provider.chat(messages)
except httpx.HTTPStatusError as e:
    print(f"API error: {e.response.status_code}")
except httpx.RequestError as e:
    print(f"Network error: {str(e)}")
finally:
    await provider.close()

Resource Management

Always close providers when done to clean up resources:

try:
    provider = OpenAIProvider(api_key="your-api-key")
    # ... use provider ...
finally:
    await provider.close()

Or use async context managers (coming soon):

async with OpenAIProvider(api_key="your-api-key") as provider:
    response = await provider.chat(messages)

Examples

Check out the examples/ directory for more detailed examples:

  • chat_comparison.py: Compare responses from different providers
  • streaming_example.py: Demonstrate streaming capabilities
  • error_handling.py: Show error handling scenarios

Development

  1. Clone the repository:

    git clone https://github.com/yourusername/simplemodelrouter.git
    cd simplemodelrouter
    
  2. Install Poetry:

    curl -sSL https://install.python-poetry.org | python3 -
    
  3. Install dependencies:

    poetry install
    
  4. Activate the virtual environment:

    poetry shell
    
  5. Run tests:

    poetry run pytest
    
  6. Format code:

    poetry run black simplemodelrouter
    poetry run isort simplemodelrouter
    
  7. Type check:

    poetry run mypy simplemodelrouter
    

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simplemodelrouter-0.1.3.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

simplemodelrouter-0.1.3-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: simplemodelrouter-0.1.3.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.3 Darwin/23.5.0

File hashes

Hashes for simplemodelrouter-0.1.3.tar.gz
Algorithm Hash digest
SHA256 92f8763a56d3d4a17f7c635b0758b98f3a78baf377d83be9705c45784953845b
MD5 3c94dc1a35fdd46ba99fc245087abe86
BLAKE2b-256 c1dff084b360c1dba680cf650b4a033ccbe5263b4806242c99bcb31f07864feb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: simplemodelrouter-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.3 Darwin/23.5.0

File hashes

Hashes for simplemodelrouter-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 221ae8a35c19831e4bc6adc4a8cdb3c2738a0a5615c2a339b6aa00dfd90bd647
MD5 06cb908a012aa12666f7121753bc6768
BLAKE2b-256 3a43348d837b009e41ed42b09d44e3a46201dbb73569ec275883259aae8129f5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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