溪客(编程代码) 溪客(编程代码)

  • 今天是2025年08月20日 Wednesday
  • 首页
  • 知识
  • 网址
  • AI助手

Python

首页 / 知识 / Python
  • 基础
    • Conda
    • Jupyter
    • dump
    • CSharp2Python
    • 关于模块导入
    • 关于推导式
    • 关于元组
    • set和数组的区别
    • 关于Literal
    • 关于iter
    • 关于setup.py
    • 路径拼接
    • 方法命名约定
  • 库
    • 其他
    • 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
    • langchain-chatchat
    • langchain-qianfan
**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 写死在代码里,推荐用环境变量或密钥管理工具。
© 2022 - 溪客(编程代码) - 粤ICP备10217501号 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)