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, 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_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.
    • 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

  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/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

xlitellm-0.2.0.tar.gz (4.1 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.2.0-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

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

Hashes for xlitellm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 60aa26cbebad6e3ff72f66db41635bdf2008ee9f970a06f702145330b9fdfb5f
MD5 2100ddb8aaf573751891224001296239
BLAKE2b-256 609c0ed3bca8351d9e94f1aadf0a67dd67f17ca895dddabcc6930512c58fe5f6

See more details on using hashes here.

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

Hashes for xlitellm-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 665c7e521af2bc16a467570d47a411e67a4017c6e4445235b770f1b8155531d8
MD5 1601cdae26552f5fe293bed4901d182a
BLAKE2b-256 abf68062ce23b08df3f7732f1225320262a7afef3714f238aa3e80ea747395e1

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