Skip to main content

A unified toolkit for working with multiple LLM providers

Project description

llm-kit-pro

llm-kit-pro is a unified, async-first Python toolkit for interacting with multiple Large Language Model (LLM) providers through a consistent, provider-agnostic API.

It is designed for developers who need to switch between providers (OpenAI, Gemini, Anthropic/Bedrock) without rewriting their core application logic, with a heavy emphasis on structured data and multimodal inputs.


✨ Features

  • Unified API: One interface for OpenAI, Gemini, Anthropic, and AWS Bedrock.
  • Pydantic-First Structured Output: Pass Pydantic models directly to get validated, type-safe dictionaries back.
  • Native "Strict Mode": Automatically handles OpenAI's Structured Outputs requirements.
  • Multimodal Inputs: First-class support for PDF, PNG, JPEG, and Text files across all supported providers.
  • Async-First: Built from the ground up for high-performance asynchronous Python applications.
  • Provider-Agnostic Inputs: Use LLMFile to handle different file types without worrying about provider-specific formatting.
  • Universal File Loader: Load files from local paths or URLs with automatic MIME type detection.

📦 Installation

pip install llm-kit-pro

Install with specific provider support:

# For OpenAI
pip install "llm-kit-pro[openai]"

# For Google Gemini
pip install "llm-kit-pro[gemini]"

# For Anthropic
pip install "llm-kit-pro[anthropic]"

# For AWS Bedrock (Anthropic/Llama/etc)
pip install "llm-kit-pro[bedrock]"

🚀 Quick Start

1. Simple Text Generation

from llm_kit_pro.providers.openai import OpenAIClient
from llm_kit_pro.providers.openai.config import OpenAIConfig

client = OpenAIClient(OpenAIConfig(
    api_key="your-key",
    model="gpt-4o-mini"
))

text = await client.generate_text(
    prompt="Explain quantum entanglement like I'm five."
)
print(text)

2. Structured Data with Pydantic

Instead of messy regex or manual JSON parsing, define your schema as a Pydantic model. llm-kit-pro handles the schema injection, strict mode enforcement, and final validation.

from pydantic import BaseModel
from llm_kit_pro.providers.gemini import GeminiClient
from llm_kit_pro.providers.gemini.config import GeminiConfig

class MovieReview(BaseModel):
    title: str
    rating: int
    summary: str
    sentiment: str

client = GeminiClient(GeminiConfig(
    api_key="your-key",
    model="gemini-2.5-flash"
))

# Pass the class directly!
data = await client.generate_json(
    prompt="Review the movie 'Inception'",
    schema=MovieReview
)

print(data["rating"])

3. Multimodal: Extracting from a PDF

llm-kit-pro treats files as first-class citizens. You can pass images or PDFs directly to the model.

from llm_kit_pro.core.helpers import load_file
from pydantic import BaseModel

class Invoice(BaseModel):
    vendor: str
    amount: float
    due_date: str

# Load your file (from local path or URL)
pdf = load_file("invoice.pdf")
# Or from URL: pdf = await load_file_async("https://example.com/invoice.pdf")

# Extract structured data from the document
data = await client.generate_json(
    prompt="Extract the invoice details",
    schema=Invoice,
    files=[pdf]
)

🧠 Core Abstractions

BaseLLMClient

Every provider implements this interface, ensuring your code remains portable.

  • generate_text(prompt, files=None, **kwargs) -> str
  • generate_json(prompt, schema, files=None, **kwargs) -> dict

LLMFile

A simple container for file-based inputs.

  • content: Raw bytes.
  • mime_type: e.g., application/pdf, image/jpeg.
  • filename: Optional metadata.

File Loading Helpers

Utilities to load files from local paths or URLs:

  • load_file(source) -> LLMFile - Universal loader (auto-detects local vs URL)
  • load_file_async(source) -> LLMFile - Async version
  • load_file_from_path(path) -> LLMFile - Load from local filesystem
  • load_file_from_url(url) -> LLMFile - Download from URL

See File Loader Guide for detailed documentation.


🔌 Supported Providers

Provider Installation Extra Status Structured Output Multimodal
OpenAI [openai] ✅ Stable Native Strict Mode Images
Google Gemini [gemini] ✅ Stable Native JSON Schema Images, PDF
Anthropic [anthropic] ✅ Stable Native Tool Use Images, PDF
AWS Bedrock [bedrock] ✅ Stable Schema Injection Images, PDF (Claude)

📍 Status

🚧 Under active development

The public API is stabilizing. We are currently focusing on adding more Bedrock adapters (Llama 3, Titan).


📄 License

MIT License

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

llm_kit_pro-0.4.5.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

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

llm_kit_pro-0.4.5-py3-none-any.whl (23.7 kB view details)

Uploaded Python 3

File details

Details for the file llm_kit_pro-0.4.5.tar.gz.

File metadata

  • Download URL: llm_kit_pro-0.4.5.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for llm_kit_pro-0.4.5.tar.gz
Algorithm Hash digest
SHA256 59abfbf4c2ef05a4be580636a923cb528d866b4185eab1eae0706beb1de4b3cb
MD5 a63627e3cac0c70811588255fb1beb50
BLAKE2b-256 8a5fa08ac0dae9e4e713ba4a74662a483318188f523db6af25cd3869048a745d

See more details on using hashes here.

File details

Details for the file llm_kit_pro-0.4.5-py3-none-any.whl.

File metadata

  • Download URL: llm_kit_pro-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for llm_kit_pro-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 385676508870e2c5d8213063facca48f9cf31a1ab2cbfd6d77c0d02ea3330372
MD5 fa282bd939e5ec6e2d883227cbd8c525
BLAKE2b-256 03ddb0dd16800689ca0f3cb849910264f65c0801ab15a0246f44edd82dd032ad

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