Skip to main content

Production-grade LLM client for Python - 100+ providers, 11,000+ models. Rust-powered.

Project description

LLMKit Python

The production-grade LLM client for Python. Native Rust performance with a Pythonic API.

PyPI Python License

Why LLMKit?

  • Rust Core — Native performance, memory safety, no GIL limitations
  • 100+ Providers — OpenAI, Anthropic, Google, AWS Bedrock, Azure, Groq, and more
  • 11,000+ Models — Built-in registry with pricing and capabilities
  • Prompt Caching — Save up to 90% on API costs with native caching support
  • Extended Thinking — Unified reasoning API across 5 providers
  • Production Ready — No memory leaks, no worker restarts, runs forever

Installation

pip install llmkit-python

Quick Start

from llmkit import LLMKitClient, CompletionRequest, Message

# Create client from environment variables
client = LLMKitClient.from_env()

# Make a completion request
response = client.complete(CompletionRequest(
    model="anthropic/claude-sonnet-4-20250514",
    messages=[Message.user("Hello!")]
))
print(response.text_content())

Async Support

from llmkit import AsyncLLMKitClient, CompletionRequest, Message

async def main():
    client = AsyncLLMKitClient.from_env()
    response = await client.complete(CompletionRequest(
        model="openai/gpt-4o",
        messages=[Message.user("Hello!")]
    ))
    print(response.text_content())

Streaming

# Sync streaming
for chunk in client.complete_stream(request):
    if chunk.text:
        print(chunk.text, end="", flush=True)

# Async streaming
async for chunk in await async_client.complete_stream(request):
    if chunk.text:
        print(chunk.text, end="", flush=True)

Tool Calling

from llmkit import ToolBuilder

# Build tools with fluent API
weather_tool = ToolBuilder("get_weather") \
    .description("Get current weather for a location") \
    .string_param("city", "City name", required=True) \
    .enum_param("unit", "Temperature unit", ["celsius", "fahrenheit"]) \
    .build()

request = CompletionRequest(
    model="anthropic/claude-sonnet-4-20250514",
    messages=[Message.user("What's the weather in Tokyo?")]
).with_tools([weather_tool])

response = client.complete(request)
for tool_call in response.tool_calls():
    print(f"Call {tool_call.name} with {tool_call.arguments}")

Prompt Caching

Save up to 90% on repeated prompts:

# Large system prompts are automatically cached
request = CompletionRequest(
    model="anthropic/claude-sonnet-4-20250514",
    messages=[
        Message.system(large_system_prompt),  # Cached after first call
        Message.user("Question 1")
    ]
).with_cache()

# Subsequent calls reuse the cached system prompt
response = client.complete(request)
print(f"Cache savings: {response.usage.cache_read_tokens} tokens")

Extended Thinking

Unified reasoning across Anthropic, OpenAI, Google, DeepSeek, and OpenRouter:

request = CompletionRequest(
    model="anthropic/claude-sonnet-4-20250514",
    messages=[Message.user("Solve this step by step: ...")]
).with_thinking(budget_tokens=10000)

response = client.complete(request)
print("Reasoning:", response.thinking_content())
print("Answer:", response.text_content())

Model Registry

11,000+ models with pricing and capabilities — no API calls needed:

from llmkit import get_model_info, get_models_by_provider, get_models_with_capability

# Get model details instantly
info = get_model_info("anthropic/claude-sonnet-4-20250514")
print(f"Context: {info.context_window:,} tokens")
print(f"Input: ${info.input_price}/1M tokens")
print(f"Output: ${info.output_price}/1M tokens")

# Find models by provider
anthropic_models = get_models_by_provider("anthropic")

# Find models with specific capabilities
vision_models = get_models_with_capability(vision=True)

Features

Feature Status
Chat Completions Supported
Streaming Supported
Tool Calling Supported
Structured Output Supported
Extended Thinking Supported
Prompt Caching Supported
Vision/Images Supported
Embeddings Supported
Image Generation Supported
Audio STT/TTS Supported
Video Generation Supported

Documentation

License

MIT OR Apache-2.0

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

llmkit_python-0.1.2-cp39-abi3-win_amd64.whl (9.6 MB view details)

Uploaded CPython 3.9+Windows x86-64

llmkit_python-0.1.2-cp39-abi3-manylinux_2_39_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.39+ x86-64

llmkit_python-0.1.2-cp39-abi3-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

llmkit_python-0.1.2-cp39-abi3-macosx_10_12_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file llmkit_python-0.1.2-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for llmkit_python-0.1.2-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cb5cb4b758d2df9d766cebace775f9584748f130f9965b79a6824fed8dddc29b
MD5 2120ab67e30121ecd2240283d9ae9c28
BLAKE2b-256 b56a9b21461f3a57a1b3e4d4069321e6b15a32722d31cc18277d95c1e8b16682

See more details on using hashes here.

File details

Details for the file llmkit_python-0.1.2-cp39-abi3-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for llmkit_python-0.1.2-cp39-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 27d5890f1922feab888bf7e58b35151c6b12490da143bbcfa15ecefce99b6b35
MD5 078ac4c09f6d32b6af3d54f7b1409405
BLAKE2b-256 51dd9527df756957fa4259b53f69fb7ae4030249d52dddd44c3885dedfbdc10f

See more details on using hashes here.

File details

Details for the file llmkit_python-0.1.2-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for llmkit_python-0.1.2-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e5560b1d1241bb41e2bc3930c307e732f5af372525ccb2f1393f679206e5b89
MD5 1948583b89c667ba7255c5ad56cf177b
BLAKE2b-256 ba9cc295bc9eeb98b7369db671f8ffd9c70cb1ee5e032a2c780864ee0ac0d653

See more details on using hashes here.

File details

Details for the file llmkit_python-0.1.2-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for llmkit_python-0.1.2-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ecaad60d73ca9126a239ca3d72a961c41eef132381846e27d476de085e322402
MD5 63c044e47d6959f1ced37cc9c8b7ee83
BLAKE2b-256 617030fb52d982a26c113209cbe8db1ef87aee547156f2d81b5d32810cd70a08

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