Skip to main content

A zen, simple, and unified API to prompt LLMs from Anthropic, Google, OpenAI, and more, using only the requests library.

Project description

🧘‍♂️ ZenLLM

PyPI version License: MIT Python 3.8+

The zen, simple, and unified API to prompt LLMs from different providers using a single function call.

Our Goal: No fancy dependencies, no SDK bloat. Just requests and your API keys. Easily switch between models and providers without changing your code.

✨ Key Features

  • Unified API: A single prompt() function for Anthropic, Google, and OpenAI.
  • Easy Model Switching: Change models and providers with a single model argument.
  • Lightweight: Built with only the requests library. No heavy SDKs to install.
  • Simple Authentication: Just set your provider's API key as an environment variable.

🚀 Installation

pip install zenllm

💡 Usage

First, make sure you've set your API key as an environment variable (e.g., export OPENAI_API_KEY="your-key").

Basic Prompt

The default model is gpt-4.1. You can change this by setting the ZENLLM_DEFAULT_MODEL environment variable.

from zenllm import prompt

# Uses the default model (either the fallback or ZENLLM_DEFAULT_MODEL)
response = prompt("Why is the sky blue?")
print(response)

Using another Provider (Google's Gemini)

Simply change the model name to use a different provider.

from zenllm import prompt

response = prompt(
    "Why is the sky blue?",
    model="gemini-2.5-pro",
    system_prompt="Reply only in French."
)
print(response)

Using Anthropic

from zenllm import prompt

response = prompt(
    "Tell me a three sentence bedtime story about a unicorn.",
    model="claude-sonnet-4-20250514"
)
print(response)

Using TogetherAI

To use models from TogetherAI, prefix the model name with together/.

from zenllm import prompt

response = prompt(
    "What are the top 3 things to do in New York?",
    model="together/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo"
)
print(response)

Streaming Responses

Set stream=True to get a generator of response chunks.

from zenllm import prompt

response_stream = prompt(
    "Tell me a story about a robot.", 
    model="claude-sonnet-4-20250514", 
    stream=True
)
for chunk in response_stream:
    print(chunk, end="", flush=True)

✅ Supported Providers

Provider Environment Variable Model Prefix Example Models
Anthropic ANTHROPIC_API_KEY claude claude-sonnet-4-20250514, claude-opus-4-20250514
Deepseek DEEPSEEK_API_KEY deepseek deepseek-chat, deepseek-reasoner
Google GEMINI_API_KEY gemini gemini-2.5-pro, gemini-2.5-flash
OpenAI OPENAI_API_KEY gpt gpt-4.1
TogetherAI TOGETHER_API_KEY together together/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo

Note: Streaming is not yet supported for OpenAI with this library.

📜 License

MIT License - Copyright (c) 2025 Koen van Eijk

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

zenllm-0.1.5.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

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

zenllm-0.1.5-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: zenllm-0.1.5.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for zenllm-0.1.5.tar.gz
Algorithm Hash digest
SHA256 e258a20355b01ce95cc5b5546b07ee8b6ddc95d5e38be942f6951dc068ed1cad
MD5 e0fa902689464613da12a388bb8647fe
BLAKE2b-256 b7cebca32445ad9bf66a6e7dcf7f95200fcac1dcfbd7d144ca1995d3542ad921

See more details on using hashes here.

Provenance

The following attestation bundles were made for zenllm-0.1.5.tar.gz:

Publisher: publish_to_pypi.yml on koenvaneijk/zenllm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: zenllm-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for zenllm-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f48fda06516ede72f687ef276cbcc7b0c3bb1ffda221ebd8ab690ce4ef2ef446
MD5 d92f2a8175f01f50ba224bed6808c35e
BLAKE2b-256 a236f755b2ad8b6dc6dd03aa1be70b96e96826e7cc2591a2c553e90b65716cb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for zenllm-0.1.5-py3-none-any.whl:

Publisher: publish_to_pypi.yml on koenvaneijk/zenllm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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