Python
- 基础
-
库
- 其他
- argparse命令行参数解析
- asyncio自带异步编程库
- aiofiles异步文件读写库
- beautifulsoup4_HTML_XML解析库
- colorama_在终端输出漂亮的字
- datasets数据集处理
- html2text
- httpx_HTTP请求库
- litellm
- loguru日志库
- numpy科学计算基础库
- pillow图像处理
- pydantic数据验证
- pyyaml
- requests_HTTP请求库
- tenacity重试
- tiktoken计算Token量
- torch机器学习_深度学习框架
- tomli TOML文件解析库
- tomllib 自带TOML文件解析库
- unidiff_文本_文件差异对比
- uvicorn_Web服务器
- langchain
**LiteLLM** 是一个 **Python 库**,用于**简化对多种大语言模型(LLM,如 OpenAI、Azure OpenAI、Claude、Gemini、Mistral、LLaMA、ChatGLM 等)的调用和统一管理**。
---
## 一、LiteLLM 是什么?(简单理解)
- LiteLLM 是一个**统一的 API 调用层**,让你可以用**相同的代码风格和接口**,调用**不同的 AI 模型服务提供商**(比如 OpenAI、Azure、Cohere、Mistral、Anthropic、Google Gemini、腾讯混元、字节跳动、月之暗面等)。
- 它**封装了不同模型的 API 调用方式**,让你不用为每个模型写不同的代码,提高开发效率,也便于切换和对接多个模型。
- 常用于 **AI 应用开发、模型路由、成本控制、请求转发、API Key 管理、监控等场景**。
---
## 二、LiteLLM 解决了什么问题?
在使用不同的大模型 API 时,你可能会遇到这些问题:
| 问题 | 说明 |
|------|------|
| **API 调用方式不统一** | 每个模型服务商(如 OpenAI、Claude、Gemini)的 SDK 和参数格式都不一样 |
| **切换模型麻烦** | 换一个模型就要改一堆代码,难以灵活适配 |
| **想同时用多个模型** | 比如主模型用 GPT,备选用 Claude 或本地模型,管理复杂 |
| **想对接自托管模型(如 LLM 推理服务)** | 比如对接 Ollama、vLLM、TGI、LM Studio 等本地或私有化部署的服务 |
| **想做模型路由、负载均衡、成本控制** | 比如根据请求类型自动选择便宜或快速的模型 |
👉 **LiteLLM 就是为了解决这些问题而生的!**
---
## 三、LiteLLM 的主要功能
| 功能 | 说明 |
|------|------|
| **统一调用接口** | 用类似 OpenAI 的 `completion()` 或 `chat.completions.create()` 方法,即可调用不同模型 |
| **支持超多模型服务商** | 包括 OpenAI、Azure、Cohere、Anthropic(Claude)、Google(Gemini)、Mistral、LLaMA、ChatGLM、腾讯、字节、Ollama、vLLM、Together AI 等 |
| **支持自托管模型** | 可对接本地模型服务,如 Ollama、vLLM、TGI、LM Studio、FastChat 等 |
| **模型路由与转发** | 可配置路由规则,比如根据问题类型自动选择不同模型 |
| **API Key 管理** | 支持多 key 轮询、代理、权限控制等 |
| **请求日志与监控** | 可记录谁调用了什么模型、花了多少 tokens、多少钱等 |
| **成本控制与预算** | 可设置预算、限制调用频率等 |
| **兼容 LangChain / LlamaIndex** | 常与这些框架配合使用,增强 AI 应用能力 |
---
## 四、安装 LiteLLM
使用 pip 安装:
```bash
pip install litellm
```
---
## 五、简单使用示例
### 示例 1:调用 OpenAI(用法和官方 SDK 几乎一样)
```python
from litellm import completion
response = completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "你好,你是谁?"}]
)
print(response["choices"][0]["message"]["content"])
```
### 示例 2:调用其他模型(比如 Claude、Mistral、Gemini、腾讯混元等)
只需修改 `model` 参数为对应模型名称,比如:
```python
# 调用 Claude
response = completion(model="claude-3-opus-20240229", messages=[...])
# 调用 Mistral
response = completion(model="mistral-medium", messages=[...])
# 调用 Gemini
response = completion(model="gemini-pro", messages=[...])
# 调用腾讯混元(需配置 API)
response = completion(model="hunyuan", messages=[...])
```
🔧 **前提是你已经配置好了对应平台的 API Key 或访问方式。**
---
## 六、LiteLLM 如何支持自托管模型(如 Ollama / vLLM)?
你可以通过配置将 LiteLLM 指向**自己本地的模型推理服务**,比如:
- **Ollama**(本地运行 LLM,如 llama2、mistral)
- **vLLM**(高性能推理服务)
- **TGI(Text Generation Inference,Hugging Face 推出的服务)**
- **LM Studio(Mac/Windows 本地运行)**
- **FastChat、LLM Gateway 等**
只需要在调用时设置对应的 API 地址,比如:
```python
response = completion(model="ollama/llama2", messages=[...])
```
LiteLLM 会自动将请求转发到本地或远程的推理服务,**无需关心底层差异**。
---
## 七、总结(中文)
> **LiteLLM 是一个强大的 Python 工具库,用于统一、简化地调用各种大语言模型(无论是云端还是本地),支持多模型、多厂商、自托管模型,并提供路由、监控、日志等高级功能。**
>
> 它让开发者可以用一致的代码风格调用不同的 AI 模型,极大提升了 AI 应用的灵活性、可扩展性和管理效率,是构建多模型 AI 应用的利器。
---
✅ **如果你在开发多模型支持的 AI 应用、想接入不同厂商的大模型、或者有自托管模型需求,LiteLLM 是非常值得使用的工具。**
在 **LiteLLM** 中配置对应平台的 **API Key 或访问方式**,主要是通过以下几种方法实现,具体取决于你要调用的模型服务(比如 OpenAI、Azure、Claude、Gemini、自托管模型等)。
---
## 一、🔐 1. 设置环境变量(推荐方式)
LiteLLM **默认会从环境变量中读取 API Key**,这是**最安全、最推荐的方式**。
### 步骤:
1. **设置环境变量**
不同模型服务商的 API Key 环境变量名通常是固定的,比如:
| 模型平台 | 环境变量名 | 说明 |
|------------------|------------------------|--------------------------|
| OpenAI | `OPENAI_API_KEY` | 用于调用 `gpt-3.5-turbo` 等 |
| Azure OpenAI | `AZURE_API_KEY`
`AZURE_ENDPOINT` | 还需要设置 endpoint | | Anthropic (Claude) | `ANTHROPIC_API_KEY` | 用于调用 Claude 模型 | | Google (Gemini) | `GOOGLE_API_KEY` | 用于调用 Gemini Pro 等 | | Cohere | `COHERE_API_KEY` | 用于调用 Cohere 模型 | | Mistral | `MISTRAL_API_KEY` | 用于调用 Mistral API | | 腾讯混元 (Hunyuan) | 通常自定义(见下文) | 需要配置 API Base 和 Key | | 自托管模型(如 Ollama) | 一般不需要 API Key,只需配置 API 地址 | 见下文 | 2. **在终端中设置环境变量(以 Linux/macOS 为例)** ```bash export OPENAI_API_KEY='sk-你的openai_key' export ANTHROPIC_API_KEY='sk-ant-你的claude_key' ``` Windows(CMD): ```cmd set OPENAI_API_KEY=sk-你的openai_key ``` Windows(PowerShell): ```powershell $env:OPENAI_API_KEY="sk-你的openai_key" ``` 3. **然后在 Python 代码中直接调用,无需硬编码 key** ```python from litellm import completion response = completion(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "你好"}]) print(response["choices"][0]["message"]["content"]) ``` ✅ LiteLLM 会自动从环境变量中读取对应的 API Key。 --- ## 二、⚙️ 2. 在代码中直接传入 API Key(适合快速测试,但不推荐生产环境) 你也可以在调用 `completion()` 或 `embedding()` 时,通过 `api_key=` 参数直接传入: ```python from litellm import completion response = completion( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "你好"}], api_key="sk-你的key" # 直接传入(不推荐,明文暴露) ) ``` ⚠️ **注意:这种方式会把 API Key 暴露在代码里,不建议用在正式项目或生产环境中。推荐使用环境变量或密钥管理服务。** --- ## 三、🌐 3. 配置自定义模型(如自托管模型 / 第三方 API) 如果你要调用 **自托管模型(如 Ollama、vLLM、TGI、LM Studio)** 或某些**非主流平台 / 私有 API**,通常需要设置: - `model` 参数(指定模型标识,比如 `"ollama/llama2"`) - `api_base`(API 的访问地址,比如 http://localhost:11434/v1/chat/completions) - 可选:`api_key`(如果需要鉴权) ### 示例 1:调用 Ollama 本地模型(如 llama2) ```python from litellm import completion response = completion( model="ollama/llama2", # 模型标识 messages=[{"role": "user", "content": "你好,Ollama"}], # 如果 Ollama 有 API 鉴权,可以加 api_key # api_key="xxx", # api_base 默认是 http://localhost:11434/v1/chat/completions,一般不用填 ) print(response["choices"][0]["message"]["content"]) ``` 🔧 **默认情况下,`model="ollama/模型名"` 会访问 `http://localhost:11434/v1/chat/completions`,无需额外配置。** --- ### 示例 2:调用其他自建或第三方 API(如 vLLM / TGI / 自研服务) ```python response = completion( model="my-custom-model", # 你可以自定义这个 model 名称 api_base="http://your-api-server:8000/v1/chat/completions", # 你的 API 地址 api_key="your-custom-api-key", # 如果有鉴权的话 messages=[{"role": "user", "content": "你好"}] ) ``` 📌 **关键点:** - `api_base`: 指定该模型对应的 API 服务地址 - `model`: 你可以随便命名,但建议和实际后端模型对应,便于管理 - LiteLLM 会将请求按照 OpenAI 格式(或兼容格式)转发到 `api_base`,非常灵活 --- ## 四、🔧 4. 高级配置:通过 `litellm.init()` 全局设置 你可以在程序启动时,通过 `litellm.init()` 设置**全局默认参数**,比如: - 默认 API Key(不推荐) - 默认 API Base - 日志、缓存、超时、回调等高级配置 ```python import litellm litellm.init( api_key="sk-你的key", # 全局默认 key(不推荐) api_base="https://api.custom.com", # 全局默认 API 地址 timeout=10, # 超时时间 ) ``` 之后你调用 `completion()` 时,如果不传相应参数,就会使用这里的全局默认值。 --- ## 五、📌 常见平台 API Key / 配置对照表 | 平台 | 必要配置项 | 说明 | |-----------------|----------------------------|------| | **OpenAI** | `OPENAI_API_KEY` | 标准 OpenAI API | | **Azure OpenAI**| `AZURE_API_KEY`
`AZURE_ENDPOINT`
`AZURE_API_VERSION` | 还需要指定 endpoint 和版本 | | **Claude** | `ANTHROPIC_API_KEY` | 来自 Anthropic | | **Gemini** | `GOOGLE_API_KEY` | Google Cloud API Key | | **Mistral** | `MISTRAL_API_KEY` | Mistral AI API | | **Ollama** | 无 API Key(通常)
`api_base` 可选 | 本地模型,如 http://localhost:11434 | | **自定义 API** | `api_base` + 可选 `api_key` | 指定你的模型服务地址 | --- ## 六、总结(中文) > **LiteLLM 配置 API Key 或访问方式,最推荐使用 环境变量(如 OPENAI_API_KEY),既安全又方便。对于自托管模型(如 Ollama),通常只需设置 model="ollama/模型名",或额外指定 api_base。你也可以在代码中传递 api_key 或通过 litellm.init() 全局配置。** --- ✅ **简单来说:** - 大部分平台 → **设环境变量(如 OPENAI_API_KEY)即可** - Ollama / 本地模型 → **model="ollama/模型名",无需 Key** - 自建 API / 私有模型 → **设置 api_base 和可选 api_key** - 生产环境避免把 Key 写死在代码里,推荐用环境变量或密钥管理工具。
`AZURE_ENDPOINT` | 还需要设置 endpoint | | Anthropic (Claude) | `ANTHROPIC_API_KEY` | 用于调用 Claude 模型 | | Google (Gemini) | `GOOGLE_API_KEY` | 用于调用 Gemini Pro 等 | | Cohere | `COHERE_API_KEY` | 用于调用 Cohere 模型 | | Mistral | `MISTRAL_API_KEY` | 用于调用 Mistral API | | 腾讯混元 (Hunyuan) | 通常自定义(见下文) | 需要配置 API Base 和 Key | | 自托管模型(如 Ollama) | 一般不需要 API Key,只需配置 API 地址 | 见下文 | 2. **在终端中设置环境变量(以 Linux/macOS 为例)** ```bash export OPENAI_API_KEY='sk-你的openai_key' export ANTHROPIC_API_KEY='sk-ant-你的claude_key' ``` Windows(CMD): ```cmd set OPENAI_API_KEY=sk-你的openai_key ``` Windows(PowerShell): ```powershell $env:OPENAI_API_KEY="sk-你的openai_key" ``` 3. **然后在 Python 代码中直接调用,无需硬编码 key** ```python from litellm import completion response = completion(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "你好"}]) print(response["choices"][0]["message"]["content"]) ``` ✅ LiteLLM 会自动从环境变量中读取对应的 API Key。 --- ## 二、⚙️ 2. 在代码中直接传入 API Key(适合快速测试,但不推荐生产环境) 你也可以在调用 `completion()` 或 `embedding()` 时,通过 `api_key=` 参数直接传入: ```python from litellm import completion response = completion( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "你好"}], api_key="sk-你的key" # 直接传入(不推荐,明文暴露) ) ``` ⚠️ **注意:这种方式会把 API Key 暴露在代码里,不建议用在正式项目或生产环境中。推荐使用环境变量或密钥管理服务。** --- ## 三、🌐 3. 配置自定义模型(如自托管模型 / 第三方 API) 如果你要调用 **自托管模型(如 Ollama、vLLM、TGI、LM Studio)** 或某些**非主流平台 / 私有 API**,通常需要设置: - `model` 参数(指定模型标识,比如 `"ollama/llama2"`) - `api_base`(API 的访问地址,比如 http://localhost:11434/v1/chat/completions) - 可选:`api_key`(如果需要鉴权) ### 示例 1:调用 Ollama 本地模型(如 llama2) ```python from litellm import completion response = completion( model="ollama/llama2", # 模型标识 messages=[{"role": "user", "content": "你好,Ollama"}], # 如果 Ollama 有 API 鉴权,可以加 api_key # api_key="xxx", # api_base 默认是 http://localhost:11434/v1/chat/completions,一般不用填 ) print(response["choices"][0]["message"]["content"]) ``` 🔧 **默认情况下,`model="ollama/模型名"` 会访问 `http://localhost:11434/v1/chat/completions`,无需额外配置。** --- ### 示例 2:调用其他自建或第三方 API(如 vLLM / TGI / 自研服务) ```python response = completion( model="my-custom-model", # 你可以自定义这个 model 名称 api_base="http://your-api-server:8000/v1/chat/completions", # 你的 API 地址 api_key="your-custom-api-key", # 如果有鉴权的话 messages=[{"role": "user", "content": "你好"}] ) ``` 📌 **关键点:** - `api_base`: 指定该模型对应的 API 服务地址 - `model`: 你可以随便命名,但建议和实际后端模型对应,便于管理 - LiteLLM 会将请求按照 OpenAI 格式(或兼容格式)转发到 `api_base`,非常灵活 --- ## 四、🔧 4. 高级配置:通过 `litellm.init()` 全局设置 你可以在程序启动时,通过 `litellm.init()` 设置**全局默认参数**,比如: - 默认 API Key(不推荐) - 默认 API Base - 日志、缓存、超时、回调等高级配置 ```python import litellm litellm.init( api_key="sk-你的key", # 全局默认 key(不推荐) api_base="https://api.custom.com", # 全局默认 API 地址 timeout=10, # 超时时间 ) ``` 之后你调用 `completion()` 时,如果不传相应参数,就会使用这里的全局默认值。 --- ## 五、📌 常见平台 API Key / 配置对照表 | 平台 | 必要配置项 | 说明 | |-----------------|----------------------------|------| | **OpenAI** | `OPENAI_API_KEY` | 标准 OpenAI API | | **Azure OpenAI**| `AZURE_API_KEY`
`AZURE_ENDPOINT`
`AZURE_API_VERSION` | 还需要指定 endpoint 和版本 | | **Claude** | `ANTHROPIC_API_KEY` | 来自 Anthropic | | **Gemini** | `GOOGLE_API_KEY` | Google Cloud API Key | | **Mistral** | `MISTRAL_API_KEY` | Mistral AI API | | **Ollama** | 无 API Key(通常)
`api_base` 可选 | 本地模型,如 http://localhost:11434 | | **自定义 API** | `api_base` + 可选 `api_key` | 指定你的模型服务地址 | --- ## 六、总结(中文) > **LiteLLM 配置 API Key 或访问方式,最推荐使用 环境变量(如 OPENAI_API_KEY),既安全又方便。对于自托管模型(如 Ollama),通常只需设置 model="ollama/模型名",或额外指定 api_base。你也可以在代码中传递 api_key 或通过 litellm.init() 全局配置。** --- ✅ **简单来说:** - 大部分平台 → **设环境变量(如 OPENAI_API_KEY)即可** - Ollama / 本地模型 → **model="ollama/模型名",无需 Key** - 自建 API / 私有模型 → **设置 api_base 和可选 api_key** - 生产环境避免把 Key 写死在代码里,推荐用环境变量或密钥管理工具。