# LiteLLM Proxy Client A Python client library for interacting with the LiteLLM proxy server. This client provides a clean, typed interface for managing models, keys, credentials, and making chat completions. ## Installation ```bash pip install litellm ``` ## Quick Start ```python from litellm.proxy.client import Client # Initialize the client client = Client( base_url="http://localhost:4000", # Your LiteLLM proxy server URL api_key="sk-api-key" # Optional: API key for authentication ) # Make a chat completion request response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": "Hello, how are you?"} ] ) print(response.choices[0].message.content) ``` ## Features The client is organized into several resource clients for different functionality: - `chat`: Chat completions - `models`: Model management - `model_groups`: Model group management - `keys`: API key management - `credentials`: Credential management ## Chat Completions Make chat completion requests to your LiteLLM proxy: ```python # Basic chat completion response = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What's the capital of France?"} ] ) # Stream responses for chunk in client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "Tell me a story"}], stream=True ): print(chunk.choices[0].delta.content or "", end="") ``` ## Model Management Manage available models on your proxy: ```python # List available models models = client.models.list() # Add a new model client.models.add( model_name="gpt-4", litellm_params={ "api_key": "your-openai-key", "api_base": "https://api.openai.com/v1" } ) # Delete a model client.models.delete(model_name="gpt-4") ``` ## API Key Management Manage virtual API keys: ```python # Generate a new API key key = client.keys.generate( models=["gpt-4", "gpt-3.5-turbo"], aliases={"gpt4": "gpt-4"}, duration="24h", key_alias="my-key", team_id="team123" ) # List all keys keys = client.keys.list( page=1, size=10, return_full_object=True ) # Delete keys client.keys.delete( keys=["sk-key1", "sk-key2"], key_aliases=["alias1", "alias2"] ) ``` ## Credential Management Manage model credentials: ```python # Create new credentials client.credentials.create( credential_name="azure1", credential_info={"api_type": "azure"}, credential_values={ "api_key": "your-azure-key", "api_base": "https://example.azure.openai.com" } ) # List all credentials credentials = client.credentials.list() # Get a specific credential credential = client.credentials.get(credential_name="azure1") # Delete credentials client.credentials.delete(credential_name="azure1") ``` ## Model Groups Manage model groups for load balancing and fallbacks: ```python # Create a model group client.model_groups.create( name="gpt4-group", models=[ {"model_name": "gpt-4", "litellm_params": {"api_key": "key1"}}, {"model_name": "gpt-4-backup", "litellm_params": {"api_key": "key2"}} ] ) # List model groups groups = client.model_groups.list() # Delete a model group client.model_groups.delete(name="gpt4-group") ``` ## Low-Level HTTP Client The client provides access to a low-level HTTP client for making direct requests to the LiteLLM proxy server. This is useful when you need more control or when working with endpoints that don't yet have a high-level interface. ```python # Access the HTTP client client = Client( base_url="http://localhost:4000", api_key="sk-api-key" ) # Make a custom request response = client.http.request( method="POST", uri="/health/test_connection", json={ "litellm_params": { "model": "gpt-4", "api_key": "your-api-key", "api_base": "https://api.openai.com/v1" }, "mode": "chat" } ) # The response is automatically parsed from JSON print(response) ``` ### HTTP Client Features - Automatic URL handling (handles trailing/leading slashes) - Built-in authentication (adds Bearer token if `api_key` is provided) - JSON request/response handling - Configurable timeout (default: 30 seconds) - Comprehensive error handling - Support for custom headers and request parameters ### HTTP Client `request` method parameters - `method`: HTTP method (GET, POST, PUT, DELETE, etc.) - `uri`: URI path (will be appended to base_url) - `data`: (optional) Data to send in the request body - `json`: (optional) JSON data to send in the request body - `headers`: (optional) Custom HTTP headers - Additional keyword arguments are passed to the underlying requests library ## Error Handling The client provides clear error handling with custom exceptions: ```python from litellm.proxy.client.exceptions import UnauthorizedError try: response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "Hello"}] ) except UnauthorizedError as e: print("Authentication failed:", e) except Exception as e: print("Request failed:", e) ``` ## Advanced Usage ### Request Customization All methods support returning the raw request object for inspection or modification: ```python # Get the prepared request without sending it request = client.models.list(return_request=True) print(request.method) # GET print(request.url) # http://localhost:8000/models print(request.headers) # {'Content-Type': 'application/json', ...} ``` ### Pagination Methods that return lists support pagination: ```python # Get the first page of keys page1 = client.keys.list(page=1, size=10) # Get the second page page2 = client.keys.list(page=2, size=10) ``` ### Filtering Many list methods support filtering: ```python # Filter keys by user and team keys = client.keys.list( user_id="user123", team_id="team456", include_team_keys=True ) ``` ## Contributing Contributions are welcome! Please check out our [contributing guidelines](../../CONTRIBUTING.md) for details. ## License This project is licensed under the MIT License - see the [LICENSE](../../LICENSE) file for details.