Skip to main content

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 and system 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 and system 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_llm and call_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=
  1. Duplicate the .env.example file and rename it to .env:

    cp examples/.env.example examples/.env
    
  2. Populate the .env file 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.
    • 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

  1. Navigate to the examples folder:

    cd examples
    
  2. Ensure you have created and populated the .env file as described above.

  3. Run the synchronous and asynchronous examples:

    python example_usage.py
    

Last updated: 2024/12/04

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

xlitellm-0.1.1.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

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

xlitellm-0.1.1-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file xlitellm-0.1.1.tar.gz.

File metadata

  • Download URL: xlitellm-0.1.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for xlitellm-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0b83c2ac2ad876192532b562dadb5c889069dbcc25a30ad21eda076ce4b78135
MD5 fff31d478f69ebcee6f1605806503127
BLAKE2b-256 986511f9ef2545ee65b387302175a0161e547f72d66a9dadc333e1f7ca83baa7

See more details on using hashes here.

File details

Details for the file xlitellm-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: xlitellm-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for xlitellm-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 db88b03978d1224a36468a48d1d27785c609c1724983dee619b171b709db0741
MD5 c00ecb3cf46e95263678b03b252daf84
BLAKE2b-256 7a4ca35baa6a7fd527019e4353179623a030107daebfbdb37eb12be169f7c020

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