Generic LLM provider abstraction — Anthropic, OpenAI, Google, Ollama and any OpenAI-compatible local model
Project description
uc-uc-llm-provider
Generic LLM provider abstraction for Python.
Anthropic, OpenAI, Google — and any OpenAI-compatible local model (Ollama, LM Studio, vLLM, llama.cpp).
Install
pip install uc-uc-llm-provider
Quickstart
from uc_llm_provider import get_provider, ChatRequest, ChatMessage
# Cloud provider
provider = get_provider({
"name": "anthropic",
"provider_type": "anthropic",
"api_key": "sk-ant-...",
"default_model": "claude-sonnet-4-20250514",
})
# Local via Ollama
provider = get_provider({
"name": "ollama",
"provider_type": "ollama",
"api_base": "http://localhost:11434",
"default_model": "llama3.2",
})
# Any OpenAI-compatible endpoint (LM Studio, vLLM, llama.cpp …)
provider = get_provider({
"name": "lm-studio",
"provider_type": "openai_compatible",
"api_base": "http://localhost:1234/v1",
"default_model": "local-model",
})
response = await provider.chat(ChatRequest(
messages=[ChatMessage(role="user", content="Hello")],
max_tokens=256,
))
print(response.content)
Streaming
async for chunk in provider.chat_stream(request):
if chunk.type == "content_delta":
print(chunk.content, end="", flush=True)
Ollama extras
from uc_llm_provider import get_provider
ollama = get_provider({"provider_type": "ollama", ...})
# List installed models
models = await ollama.list_local_models()
# Pull a model
async for status in ollama.pull_model("mistral"):
print(status)
# Check if running
running = await ollama.is_running()
Custom provider
from uc_llm_provider import register_provider
from uc_llm_provider.providers.template import TemplateProvider
class MyProvider(TemplateProvider):
def _get_endpoint(self, path=""):
return "https://api.myprovider.com/v1/chat"
register_provider("myprovider", MyProvider)
provider = get_provider({"provider_type": "myprovider", ...})
Supported provider_type values
| Value | Provider |
|---|---|
anthropic |
Anthropic Claude |
openai |
OpenAI |
google |
Google Gemini |
ollama |
Ollama (local) |
openai_compatible |
Any OpenAI-compatible API |
lm_studio / lmstudio |
LM Studio |
vllm |
vLLM |
llamacpp |
llama.cpp server |
localai |
LocalAI |
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
uc_llm_provider-0.1.0.tar.gz
(20.4 kB
view details)
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 uc_llm_provider-0.1.0.tar.gz.
File metadata
- Download URL: uc_llm_provider-0.1.0.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd485c66acf1089aa03d38d0c1d58cae8492e56822722480cca7e5fef0121e00
|
|
| MD5 |
f32f98a880593a1f291f9531fd2f1094
|
|
| BLAKE2b-256 |
17a12bd72b8c1871d76efc897c1f2b7c1dc079e9d52207517db2d1cb3911ab18
|
File details
Details for the file uc_llm_provider-0.1.0-py3-none-any.whl.
File metadata
- Download URL: uc_llm_provider-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66ed984c993f23db0082191e00d71f5edf205924c22b6b92769f9670725325c4
|
|
| MD5 |
6c2666fc0b9e85df2b2cc9a23bd41b8c
|
|
| BLAKE2b-256 |
0b1294bafbc79e8c2a9d8d7783c80ef0ee99e7bd576e334430a0a6b29963bc6d
|