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.5.tar.gz (23.6 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.5-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file unifyllm_sdk-0.1.5.tar.gz.

File metadata

  • Download URL: unifyllm_sdk-0.1.5.tar.gz
  • Upload date:
  • Size: 23.6 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.5.tar.gz
Algorithm Hash digest
SHA256 342166a41737b19fcde4c9dce085cb8ac11238d349c2c45ed05e68ac101d3fc1
MD5 f02066e38c289215c4041fec1746b8c8
BLAKE2b-256 3fc83edc4e451d00c08342bbb929d55768cfc51fa28bb8f07557d0416e9d29d2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: unifyllm_sdk-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 27.7 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b516c0517ded7756f95874458efe2c247af143f8a66ac14601d8d99186695e7a
MD5 7d90e1c18fc29ad8a98017e1d741bedc
BLAKE2b-256 4ea38e06359e1618966a9369c3c2f74df9efa70634a52f1e91561fa2aba60fec

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