LLM Gateway
Open-source library built for fast and reliable connections to different LLM providers.
Typescript library: https://www.npmjs.com/package/llm-gateway
The LLM Gateway is a lightweight, open-source library built for fast and reliable connections to LLMs.
It simplifies integrations with multiple providers, offering fallbacks, caching, and minimal latency with a client-side solution.
- Minimize Downtime: Automatic retries and fallbacks to secondary providers like Azure or Entropic.
- Automatic input params convertion: Automatically convert input params between OpenAI, Anthropic and Azure formats for fallbacks.
- Faster Responses: Direct client-side requests for low latency.
- Unified Control: A single interface to manage requests across LLMs.
- Unified Output: Consistent output format across LLMs.
openAI/AnthropicOutput:{...}
llmGatewayOutput: {
type: 'text' | 'tool_calls';
content: string; - content for text output
tool_name: string; - name of the tool for tool_calls
arguments: string - arguments for the tool.
}[]
}
- Easy Model Switching: Change between OpenAI, Anthropic, and Azure models with a simple configuration change.
Contribute, fork, or raise issues— so we can make it better together.
Starring this repo helps other developers discover the LLM Gateway! ⭐
Installation
To install the library, use npm or yarn:
pip install llmgateway
Usage
Here's a basic example of how to use the LLM Gateway library:
from src.llmgateway import LLMGateway
from src.types import ChatCompletionParams, EnumLLMProvider, LLMGatewayParams, Message
gateway = LLMGateway(
LLMGatewayParams(
provider=EnumLLMProvider.OPENAI,
api_key='your-api-key'
)
)
response = gateway.chat_completion(
ChatCompletionParams(
messages=[
Message(role="user", content="Write a story about a cat.")
],
model="gpt-4o-mini",
temperature=0.7,
max_completion_tokens=800
)
)
LLM Fallbacks Configuration
The LLM Gateway library supports configuring fallbacks to ensure that if one model fails, another can be used as a backup. This is useful for maintaining service availability and reliability.
Example Configuration
from src.llmgateway import LLMGateway
from src.types import ChatCompletionParams, EnumLLMProvider, LLMGatewayConfig, LLMGatewayParams, Message
gateway = LLMGateway(
LLMGatewayParams(
provider= EnumLLMProvider.ANTHROPIC,
api_key= keys['ANTHROPIC_API_KEY']
)
, LLMGatewayConfig(
fallbacks= {
'fallback_provider':LLMGatewayParams(
provider=EnumLLMProvider.OPENAI,
api_key=keys['OPENAI_KEY_FOR_FREE_DEMO']
) ,
'fallback_model': 'gpt-4o-mini'
}
)
)
response = gateway.chat_completion(
ChatCompletionParams(
messages=[
Message(role="user", content="Write a story about a cat.")
],
model="claude-3-5-sonnet-latest",
temperature=0.7,
)
)
print(response)
Streaming Responses
The LLM Gateway supports streaming responses from all providers, with a unified interface that works consistently across OpenAI, Anthropic, and Azure.
Basic Streaming Example
from src.llmgateway import LLMGateway
from src.types import ChatCompletionParams, EnumLLMProvider, LLMGatewayParams, Message
gateway = LLMGateway(
LLMGatewayParams(
provider=EnumLLMProvider.OPENAI,
api_key='your-api-key'
)
)
stream = gateway.chat_completion_stream(
ChatCompletionParams(
messages=[
Message(role="user", content="Write a story about a cat.")
],
model="gpt-4o-mini",
temperature=0.7,
max_tokens=800
)
)
for chunk in stream:
print(chunk)
All streaming examples work consistently across different providers (OpenAI, Anthropic, Azure) and automatically handle format conversion when falling back to a different provider.
Configuration
- apiKey: Your API key for the chosen LLM provider.
- modelType: The type of LLM provider you want to use (
OPENAI,ANTHROPIC,AZUREOPENAI). - endpoint: (Optional) The endpoint for OpenAI models.
- deployment: (Optional) The deployment name for Azure models.
- apiVersion: (Optional) The API version for Azure models.
Contributing
Contributions are welcome! Please feel free to submit a pull request or open an issue.
License
This project is licensed under the MIT License.
Metadata
Release files for open-llm-gateway 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| open_llm_gateway-0.1.3.tar.gz | 10.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| open_llm_gateway-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.1 kB
Release files / open_llm_gateway-0.1.3.tar.gz
| Download URL | open_llm_gateway-0.1.3.tar.gz |
|---|---|
| Size | 10.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ba93481c8166e0ed5284a8850bdbf3c1add7ae338eaf4032a3e7732e33631d0b
|
|
BLAKE2b-256 checksum How to use checksums |
d881363316b4852a9e76dab4e1b3ce440c27c5d6764993cc4abadb70a91d9834
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.6
|
Release files / open_llm_gateway-0.1.3-py3-none-any.whl
| Download URL | open_llm_gateway-0.1.3-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c630ac5facb8ea05844bee404d37d82c1585a87cdfff6cde86aaf45715b34e88
|
|
BLAKE2b-256 checksum How to use checksums |
f44bcb032b83c43c042b403d6992be421ac8c46e19c474ef8c71a242dac4e9a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.6
|
Security for open-llm-gateway 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.