← Back to all spotlights

BerriAI/litellm: Unified OpenAI-Compatible API Proxy

Route your application requests across 100+ language models with BerriAI/litellm, an open-source OpenAI-compatible proxy featuring load balancing and cost tracking.

P24
By Pickwise24 Editorial Team
Verified Open-Source Review

If your code looks like a plate of spaghetti tossed by an angry Italian chef because you tried to support Claude, GPT-4o, and an open-weight model running locally, take a deep breath. We have all been there. You start with a neat little openai.chat.completions.create() call, and before you know it, your codebase is drowning in conditional statements, fallback logic, and a dizzying array of custom SDKs just to switch out an LLM.

Enter BerriAI/litellm (available on GitHub at BerriAI/litellm). This open-source powerhouse acts as a unified, OpenAI-compatible API proxy that lets you call over 100 large language models using standard OpenAI formatting. It handles the messy plumbing of load balancing, fallbacks, budget tracking, and rate limiting so you can get back to building actual software instead of wrestling with API schemas.

What Problem Does BerriAI/litellm Solve?

Every LLM provider—be it Anthropic, Cohere, Together AI, Mistral, or a random vLLM endpoint you spun up on an AWS instance—has its own idiosyncratic JSON payload structure. Swapping your production application from OpenAI to Anthropic shouldn’t require rewriting your core request handlers or managing half a dozen client libraries.

LiteLLM abstracts away the API drift. It provides a single, drop-in replacement endpoint that accepts standard OpenAI completion formats and translates them on the fly for whatever downstream provider you target. More importantly, it brings enterprise-grade reliability features—like automatic failovers, spend caps per virtual key, and distributed load balancing—to individual developers and engineering teams alike.

Key Architectural Details

Under the hood, LiteLLM is built on Python and FastAPI, making it lightweight yet robust enough to handle high-throughput production environments.

  • Standardised Schema Translation: It intercepts incoming requests matching the OpenAI API spec and maps them to native provider payloads (and vice versa for responses).
  • Proxy Server Architecture: You can run it as a standalone proxy server with a PostgreSQL database backing it up to persist user keys, spend tracking, and audit logs.
  • In-Memory and Redis Caching: To slash latency and save on API tokens, LiteLLM supports semantic and exact-match caching via Redis.
  • Fallback and Retry Logic: If your primary model throws a 429 (Rate Limit Exceeded) or a 500 server error, the proxy automatically routes the request to a secondary fallback model without dropping the client connection.

Feature Walkthrough

Let us look at what you get out of the box when you fire up the LiteLLM proxy:

FeatureWhat it DoesWhy You Need It
Unified EndpointOne API URL for OpenAI, Anthropic, Gemini, and local models.Zero code refactoring when switching foundation models.
Virtual KeysGenerate unique API keys with embedded budget limits and model permissions.Essential for multi-tenant applications and team cost control.
Load BalancingDistribute traffic across multiple instances or provider endpoints.Prevents rate-limiting bottlenecks during traffic spikes.
Cost TrackingReal-time logging of token usage and exact financial spend per request.Stops surprise bills from runaway recursive agent loops.

Local Setup and Installation

Getting LiteLLM running locally takes less than a minute. You can install it via pip or spin it up using Docker. For a quick local development run, Python is your friend.

Step 1: Install the Package


pip install 'litellm[proxy]'

Step 2: Configure Your Providers

Create a simple configuration file named config.yaml in your working directory. This tells the proxy which models you want to expose and supplies the necessary API keys.


model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY

  - model_name: claude-3-5-sonnet
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: local-llama
    litellm_params:
      model: ollama/llama3
      api_base: http://localhost:11434

Step 3: Launch the Proxy Server

Fire up the server using the configuration file you just created:


litellm --config config.yaml --port 4000

Your unified proxy is now live at http://localhost:4000.

Practical Code Usage Examples

Because LiteLLM mimics the official OpenAI client library, you don't need to learn a new SDK. You simply point your existing OpenAI client to your local LiteLLM proxy URL and change the model name.

Python Example


import openai

# Point the OpenAI client to your local LiteLLM proxy
client = openai.OpenAI(
    api_key="sk-1234", # LiteLLM virtual key or proxy master key
    base_url="http://localhost:4000"
)

response = client.chat.completions.create(
    model="claude-3-5-sonnet", # Route directly to Anthropic via OpenAI schema
    messages=[
        {"role": "user", "content": "Explain quantum computing in one punchy sentence."}
    ]
)

print(response.choices[0].message.content)

cURL Example


curl -X POST "http://localhost:4000/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
  "model": "gpt-4o",
  "messages": [{"role": "user", "content": "Hello from the command line!"}]
}'

Why BerriAI/litellm Stands Out

The open-source AI community has largely rallied around LiteLLM because it solves a very specific, grinding pain point without locking you into a proprietary ecosystem. Developer consensus across GitHub discussions and technical subreddits highlights its reliability in production environments where API downtime equals lost revenue.

Instead of building custom retry loops and cost-monitoring dashboards from scratch, dropping LiteLLM in front of your applications gives you instant observability, fault tolerance, and model agility. If an upstream provider goes down or prices out, you update a YAML file, restart the proxy, and carry on with your day. That is the kind of engineering pragmatism we can all get behind.

🛡️ Editorial Standards & Methodology

Every repository featured on Pickwise24 undergoes testing on local workstation hardware before publication. We verify CLI installation steps, review open-source repository licensing, benchmark computational footprint, and evaluate architectural trade-offs to provide genuine, high-utility developer intelligence.