A client library for making requests to various LLMs through a unified interface
Project description
XLiteLLM: A Lightweight Wrapper for LLM API Calls
XLiteLLM is a Python library designed to simplify interaction with Large Language Models (LLMs). It provides both synchronous and asynchronous interfaces for making requests to LLMs, with built-in support for retries, JSON response handling, and logging. XLiteLLM supports passing user, system, assistant prompts, optional images, and various configuration options for controlling model behavior.
Features
- Synchronous and Asynchronous API Calls: Support for both blocking and non-blocking interaction with LLMs.
- Flexible Prompt Construction: Combine user, system, assistant prompts, with optional image inputs.
- JSON Response Processing: Easily extract structured data from model responses.
- Retry Mechanism: Automatically retry failed requests up to a configurable limit.
- Configurable Parameters: Customize model settings such as temperature, token limits, and timeout.
- Logging Integration: Built-in logging for monitoring requests, responses, and errors.
Repository Structure
The project is organized as follows:
.
├── README.md # Project documentation
├── examples/
│ ├── example_usage.py # Example usage of the library
│ ├── requirements.txt # Dependencies for running examples
│ └── .env.example # Template for environment variables
├── setup.py # Installation script
├── xlitellm/
│ ├── __init__.py # Module initialization
│ └── client.py # Core functionality for interacting with LLMs
Key Files:
xlitellm/client.py: Contains the core functions (call_llmandcall_llm_async) to interact with LLM APIs.examples/example_usage.py: Demonstrates how to use the library in synchronous and asynchronous contexts.examples/.env.example: A template for the environment variables required to run the examples.
Installation
Requirements
- Python 3.11 or higher
Setup
pip install xlitellm
Configuration
Before running the example scripts, you need to provide values for the required environment variables. Use the .env.example file in the examples/ directory as a starting point:
.env.example:
LOG_LEVEL=
MISTRAL_API_KEY=
OPENAI_API_KEY=
GEMINI_API_KEY=
ANTHROPIC_API_KEY=
GROQ_API_KEY=
-
Duplicate the
.env.examplefile and rename it to.env:cp examples/.env.example examples/.env
-
Populate the
.envfile with appropriate values for your environment.
Usage
Core Functions
call_llm
Synchronous function for making LLM API calls.
-
Parameters:
user_prompt(str): The user's input prompt.system_prompt(str): Optional system message to guide the LLM's behavior.assist_prompt(str): Optional assistant message to guide the LLM's behavior. This works on Mistral, Claude, Gemini, Groq, but not on GPT.images(list[str], optional): List of image URLs or base64 strings for visual context.model(str): Model identifier (e.g.,claude-3-5-sonnet-20241022).temperature(float): Sampling temperature to control response randomness.max_tokens(int): Maximum number of tokens in the response.timeout(int, optional): Time (in seconds) before the request times out.max_retry(int): Maximum number of retries for failed requests.json_mode(bool): Whether to parse the response as JSON.
-
Returns: Response as a string or dictionary.
call_llm_async
Asynchronous version of call_llm, supporting the same parameters and functionality.
Running the Examples
-
Navigate to the
examplesfolder:cd examples
-
Ensure you have created and populated the
.envfile as described above. -
Run the synchronous and asynchronous examples:
python example_usage.py
Last updated: 2024/12/05
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xlitellm-0.2.0.tar.gz.
File metadata
- Download URL: xlitellm-0.2.0.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60aa26cbebad6e3ff72f66db41635bdf2008ee9f970a06f702145330b9fdfb5f
|
|
| MD5 |
2100ddb8aaf573751891224001296239
|
|
| BLAKE2b-256 |
609c0ed3bca8351d9e94f1aadf0a67dd67f17ca895dddabcc6930512c58fe5f6
|
File details
Details for the file xlitellm-0.2.0-py3-none-any.whl.
File metadata
- Download URL: xlitellm-0.2.0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
665c7e521af2bc16a467570d47a411e67a4017c6e4445235b770f1b8155531d8
|
|
| MD5 |
1601cdae26552f5fe293bed4901d182a
|
|
| BLAKE2b-256 |
abf68062ce23b08df3f7732f1225320262a7afef3714f238aa3e80ea747395e1
|