# INSTRUCTIONS FOR LITELLM This document provides comprehensive instructions for AI agents working in the LiteLLM repository. ## OVERVIEW LiteLLM is a unified interface for 100+ LLMs that: - Translates inputs to provider-specific completion, embedding, and image generation endpoints - Provides consistent OpenAI-format output across all providers - Includes retry/fallback logic across multiple deployments (Router) - Offers a proxy server (LLM Gateway) with budgets, rate limits, and authentication - Supports advanced features like function calling, streaming, caching, and observability ## REPOSITORY STRUCTURE ### Core Components - `litellm/` - Main library code - `llms/` - Provider-specific implementations (OpenAI, Anthropic, Azure, etc.) - `proxy/` - Proxy server implementation (LLM Gateway) - `router_utils/` - Load balancing and fallback logic - `types/` - Type definitions and schemas - `integrations/` - Third-party integrations (observability, caching, etc.) ### Key Directories - `tests/` - Comprehensive test suites - `docs/my-website/` - Documentation website - `ui/litellm-dashboard/` - Admin dashboard UI - `enterprise/` - Enterprise-specific features ## DEVELOPMENT GUIDELINES ### MAKING CODE CHANGES 1. **Provider Implementations**: When adding/modifying LLM providers: - Follow existing patterns in `litellm/llms/{provider}/` - Implement proper transformation classes that inherit from `BaseConfig` - Support both sync and async operations - Handle streaming responses appropriately - Include proper error handling with provider-specific exceptions 2. **Type Safety**: - Use proper type hints throughout - Update type definitions in `litellm/types/` - Ensure compatibility with both Pydantic v1 and v2 3. **Testing**: - Add tests in appropriate `tests/` subdirectories - Include both unit tests and integration tests - Test provider-specific functionality thoroughly - Consider adding load tests for performance-critical changes ### IMPORTANT PATTERNS 1. **Function/Tool Calling**: - LiteLLM standardizes tool calling across providers - OpenAI format is the standard, with transformations for other providers - See `litellm/llms/anthropic/chat/transformation.py` for complex tool handling 2. **Streaming**: - All providers should support streaming where possible - Use consistent chunk formatting across providers - Handle both sync and async streaming 3. **Error Handling**: - Use provider-specific exception classes - Maintain consistent error formats across providers - Include proper retry logic and fallback mechanisms 4. **Configuration**: - Support both environment variables and programmatic configuration - Use `BaseConfig` classes for provider configurations - Allow dynamic parameter passing ## PROXY SERVER (LLM GATEWAY) The proxy server is a critical component that provides: - Authentication and authorization - Rate limiting and budget management - Load balancing across multiple models/deployments - Observability and logging - Admin dashboard UI - Enterprise features Key files: - `litellm/proxy/proxy_server.py` - Main server implementation - `litellm/proxy/auth/` - Authentication logic - `litellm/proxy/management_endpoints/` - Admin API endpoints ## MCP (MODEL CONTEXT PROTOCOL) SUPPORT LiteLLM supports MCP for agent workflows: - MCP server integration for tool calling - Transformation between OpenAI and MCP tool formats - Support for external MCP servers (Zapier, Jira, Linear, etc.) - See `litellm/experimental_mcp_client/` and `litellm/proxy/_experimental/mcp_server/` ## TESTING CONSIDERATIONS 1. **Provider Tests**: Test against real provider APIs when possible 2. **Proxy Tests**: Include authentication, rate limiting, and routing tests 3. **Performance Tests**: Load testing for high-throughput scenarios 4. **Integration Tests**: End-to-end workflows including tool calling ## DOCUMENTATION - Keep documentation in sync with code changes - Update provider documentation when adding new providers - Include code examples for new features - Update changelog and release notes ## SECURITY CONSIDERATIONS - Handle API keys securely - Validate all inputs, especially for proxy endpoints - Consider rate limiting and abuse prevention - Follow security best practices for authentication ## ENTERPRISE FEATURES - Some features are enterprise-only - Check `enterprise/` directory for enterprise-specific code - Maintain compatibility between open-source and enterprise versions ## COMMON PITFALLS TO AVOID 1. **Breaking Changes**: LiteLLM has many users - avoid breaking existing APIs 2. **Provider Specifics**: Each provider has unique quirks - handle them properly 3. **Rate Limits**: Respect provider rate limits in tests 4. **Memory Usage**: Be mindful of memory usage in streaming scenarios 5. **Dependencies**: Keep dependencies minimal and well-justified ## HELPFUL RESOURCES - Main documentation: https://docs.litellm.ai/ - Provider-specific docs in `docs/my-website/docs/providers/` - Admin UI for testing proxy features ## WHEN IN DOUBT - Follow existing patterns in the codebase - Check similar provider implementations - Ensure comprehensive test coverage - Update documentation appropriately - Consider backward compatibility impact