LiteLLM 是一个面向 Python 的库,用于通过统一的 OpenAI 风格接口调用 100 多个 LLM API。它提供标准化的异常处理、重试与回退逻辑,以及跨提供商的成本追踪。本技能文档说明其核心用法,并重点覆盖 llamafile 本地服务器集成。
用途 使用本技能的典型场景包括:通过单一接口集成多个 LLM 提供商;使用 OpenAI 兼容端点将请求路由到本地 llamafile 服务器;为 LLM 调用实现重试与回退逻辑;构建需要在不同提供商之间保持一致错误处理的应用;追踪不同提供商的 LLM 使用成本;在提供商特定 API 与 OpenAI 格式之间转换;部署统一配置的 LLM 代理服务器;针对云端与本地 LLM 端点测试应用。
主要能力 LiteLLM 通过一致的 OpenAI 风格 API 支持 100 多个提供商,包括云端提供商(OpenAI、Anthropic、Google、Azure、AWS Bedrock)与本地服务器(llamafile、Ollama、LocalAI、vLLM)。所有请求使用 OpenAI 消息格式,所有提供商错误映射到 OpenAI 异常类型。关键特性:统一 API(所有提供商共用单个 completion() 函数);异常处理(所有异常继承自 OpenAI 类型);重试逻辑(内置可配置次数的重试);流式支持(所有提供商的同步与异步流式输出);成本追踪(自动计算用量与成本);代理模式(部署集中式 LLM 网关)。
安装 使用 pip:pip install litellm 使用 uv:uv add litellm
llamafile 集成 所有 llamafile 模型必须使用 llamafile/ 前缀进行路由,例如 model = "llamafile/mistralai/mistral-7b-instruct-v0.2" 或 model = "llamafile/gemma-3-3b"。api_base 必须指向 llamafile 的 OpenAI 兼容端点,例如 api_base = "http://localhost:8080/v1"。关键要求:包含 /v1 后缀;不要添加 /chat/completions 等端点路径(LiteLLM 会自动添加);llamafile 默认端口为 8080。也可以通过环境变量配置:os.environ["LLAMAFILE_API_BASE"] = "http://localhost:8080/v1"。
使用方式 基本用法包括同步补全(litellm.completion)、异步补全(acompletion)、异步流式输出(stream=True 并异步迭代 chunk)、嵌入(embedding 函数)。异常处理:可从 litellm 直接导入 BadRequestError、AuthenticationError、NotFoundError、Timeout、RateLimitError、APIConnectionError、ServiceUnavailableError 等异常,它们分别对应 400、401、404、408、429、500、503 等状态码并继承自对应的 OpenAI 异常类型;也可从 litellm.exceptions 导入。异常属性包含 status_code、message、llm_provider。可用 litellm._should_retry(e.status_code) 判断是否应重试。重试与回退可通过 completion 的 num_retries 与 timeout 参数配置。代理部署使用 config.yaml,在 model_list 中为模型添加 llamafile/ 前缀和 api_base。
应用集成模式 文档给出连接验证模式(verify_llamafile_connection 函数检查服务是否运行)与异步服务模式(AIService 类封装 acompletion 并生成提交信息)。还列出常见陷阱:缺少 llamafile/ 前缀会无法路由;端口错误(llamafile 默认 8080 而非 8000);缺少 /v1 后缀;错误添加额外路径段;本地 llamafile 不需要 API key(如校验要求可传空字符串或任意值)。配置示例包括 TOML 配置(~/.config/commit-polish/config.toml)与环境变量(LLAMAFILE_API_BASE、LITELLM_LOG)。
适用场景 适合需要统一接入多家 LLM、需要在云端与本地模型间切换、需要统一错误处理与重试、需要成本追踪、以及需要部署 LLM 代理网关的 Python 项目。
限制与依赖 文档标注的参考版本:LiteLLM GitHub 仓库 main 分支(2025-01-15 访问),Python 3.11+,Llamafile 0.9.3+。官方文档、异常映射、GitHub 仓库等参考链接已在原文列出。本文档未提供关于定价、收费、性能基准或平台支持范围的进一步信息。