Skip to main content

Unified Python client for multiple LLM providers (OpenAI, Anthropic, etc.) with drop-in compatibility.

Project description

UniLLM Python Client Library version

Overview

UniLLM is a unified Python client for accessing multiple large language model (LLM) providers (OpenAI, Anthropic, Gemini, Mistral, Cohere, and more) through a single, easy-to-use interface.
It abstracts away provider-specific details, allowing you to switch models and providers with minimal code changes.


Features

  • Unified API: One interface for all supported LLM providers and models.
  • Drop-in replacements: Use from unillm import openai or from unillm import anthropic_dropin as anthropic for seamless migration from official SDKs.
  • Provider/model switching: Change models/providers by changing a string.
  • API key management: Pass your UniLLM API key directly or via environment variable.
  • Custom error handling: Catch and handle errors with meaningful exceptions.
  • Health check: Programmatically check if your backend is up.
  • Extensible: Add new providers via adapters.

Installation

pip install unillm

Quick Start

1. Unified API Example

from unillm import UniLLM

client = UniLLM(api_key="YOUR_API_KEY", base_url="https://your-backend.url")
response = client.chat(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello, world!"}],
    temperature=0.7,
    max_tokens=100
)
print(response.content)

2. OpenAI Drop-in Replacement

from unillm import openai
openai.api_key = "YOUR_API_KEY"
openai.api_base = "https://your-backend.url"
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello!"}],
    temperature=0.7,
    max_tokens=100
)
print(response["choices"][0]["message"]["content"])

3. Anthropic Drop-in Replacement

from unillm import anthropic_dropin as anthropic
anthropic.api_key = "YOUR_API_KEY"
anthropic.api_base = "https://your-backend.url"
response = anthropic.ChatCompletion.create(
    model="claude-3-5-sonnet-20240620",
    messages=[{"role": "user", "content": "Hello, Claude!"}],
    temperature=0.7,
    max_tokens=100
)
print(response["choices"][0]["message"]["content"])

4. Switching Providers/Models

Just change the model string:

response = client.chat(
    model="claude-3-5-sonnet-20240620",  # Anthropic model
    messages=[{"role": "user", "content": "Hello, Claude!"}]
)

5. Migration Notes

  • For OpenAI: Change import openai to from unillm import openai and set api_base/api_key.
  • For Anthropic: Change import anthropic to from unillm import anthropic_dropin as anthropic and set api_base/api_key.
  • All other code can remain the same for chat completions.

API Reference

UniLLM Class

UniLLM(api_key=None, base_url="http://localhost:8000")
  • api_key: Your UniLLM API key (or set UNILLM_API_KEY env var)
  • base_url: URL of your UniLLM backend

chat()

chat(
    model: str,
    messages: List[Dict[str, str]],
    temperature: Optional[float] = None,
    max_tokens: Optional[int] = None,
    stream: bool = False,
    **kwargs
) -> ChatResponse
  • model: Model name (e.g., "gpt-4", "claude-3-5-sonnet-20240620")
  • messages: List of messages ({"role": ..., "content": ...})
  • temperature, max_tokens, etc.: Standard LLM parameters

health_check()

health_check() -> bool

Returns True if backend is healthy.


ChatCompletion Drop-ins

  • openai.ChatCompletion.create(...)
  • anthropic.ChatCompletion.create(...)

Supported Models & Providers

  • OpenAI: "gpt-4", "gpt-3.5-turbo", etc.
  • Anthropic: "claude-3-5-sonnet-20240620", etc.
  • Gemini, Mistral, Cohere: (see full list in your backend/docs)

Troubleshooting

  • 502/connection errors: Check your backend URL and health.
  • Model not found: Ensure the model name is supported by your backend.
  • API key errors: Make sure your key is valid and set correctly.

Contributing

  • PRs and issues welcome!
  • See [CONTRIBUTING.md] for guidelines.

License

MIT

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

unifyllm-sdk-0.1.1.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

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

unifyllm_sdk-0.1.1-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file unifyllm-sdk-0.1.1.tar.gz.

File metadata

  • Download URL: unifyllm-sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.1

File hashes

Hashes for unifyllm-sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7f7f395c236c0c7a0c189c3b55afb06da357df6ef7042aa0c165e0518f8bcca5
MD5 ad5378f0cedd24258a1207e7044a7711
BLAKE2b-256 420238ebf7575f5096b993844d74f76d7a0e04860b9811683354b65df6ae5f8e

See more details on using hashes here.

File details

Details for the file unifyllm_sdk-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: unifyllm_sdk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.1

File hashes

Hashes for unifyllm_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2924246cd1666b45590f3566c3d64ea487f44fba9f79a60b3deb6f8bdae8a714
MD5 ad08d0c8a51c86c24ca8bcecde980fcf
BLAKE2b-256 91474ffb66b3402553fe1a8d52ad628f7512c4a22a113d63133ae63e86e2bdc0

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