Unified Python client for multiple LLM providers (OpenAI, Anthropic, etc.) with drop-in compatibility.
Project description
UniLLM Python Client Library 
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 openaiorfrom unillm import anthropic_dropin as anthropicfor 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 openaitofrom unillm import openaiand setapi_base/api_key. - For Anthropic: Change
import anthropictofrom unillm import anthropic_dropin as anthropicand setapi_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 setUNILLM_API_KEYenv 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file unifyllm_sdk-0.1.3.tar.gz.
File metadata
- Download URL: unifyllm_sdk-0.1.3.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89628f8a7d7e95fe8b4683a5c3b6d128360009e9c899c98236bedc6af5cbace4
|
|
| MD5 |
ff3e48a3b3ddc25df93af3630e3203b7
|
|
| BLAKE2b-256 |
4d4894e6204f18b2821d870528142e8d53855b51a1f8c3e055a8a32de454e290
|
File details
Details for the file unifyllm_sdk-0.1.3-py3-none-any.whl.
File metadata
- Download URL: unifyllm_sdk-0.1.3-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f8260fe03ebe554ec780464895c02e9c1ce1c21cab9bfdbd24f4432476af5d3
|
|
| MD5 |
6c3ff4074e3045d2025e99377342ac10
|
|
| BLAKE2b-256 |
526bf01176e7c27109abbabba6355d673b63c9d158b4e32b56220294e190319b
|