mozilla-ai/any-llm · 上手攻略
- 仓库:mozilla-ai/any-llm
- 链接:https://github.com/mozilla-ai/any-llm
- 分类:llm-infra
- 作者:Tom
- 更新:2026-07-30
一、是什么
any-llm 是 Mozilla AI 团队推出的 Python 库,目标是让你用同一套代码调用任何 LLM 提供商,无需改业务逻辑。
它的核心理念很清晰:LLM 提供商的 API 接口碎片化严重——OpenAI、Anthropic、Azure、Mistral、Ollama……各家参数名、响应格式、错误处理各有差异。any-llm 不重新造轮子,而是封装官方 SDK,提供统一的函数签名,把差异抹平。
对应项目:同团队的
any-agent(自动化 Agent)生产环境已在使用它,说明项目经过了真实场景验证。
二、解决什么问题
LLM 应用开发中,切换模型或提供商是高频需求,但现实很骨感:
- OpenAI 风格不是标准:虽然 OpenAI 的接口事实上成了标准,但各家实现仍有细微差异,参数名不一致,响应格式各异。
- LiteLLM 重新造轮子:LiteLLM 很流行,但它自己实现了各家的适配层,不走官方 SDK,长期维护成本高,容易出现兼容性问题。
- 代理方案增加运维负担:OpenRouter、Portkey 等方案需要额外部署代理服务,增加了基础设施复杂度。
any-llm 的思路是直接调用官方 SDK,保证最大兼容性,同时提供统一的 Python 上层接口。
三、快速安装
# 最简安装(仅基础库,无特定提供商支持)
pip install any-llm-sdk
# 按需安装提供商支持
pip install 'any-llm-sdk[mistral,ollama]' # Mistral + 本地 Ollama
pip install 'any-llm-sdk[openai,anthropic]' # OpenAI + Anthropic
pip install 'any-llm-sdk[all]' # 所有支持提供商
# Python 版本要求:3.11+
安装完成后设置环境变量:
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export MISTRAL_API_KEY="..."
# 其他提供商同理
四、核心用法
4.1 最简调用(推荐方式)
from any_llm import completion
import os
# 确保有对应 API key
assert os.environ.get("MISTRAL_API_KEY")
response = completion(
model="mistral-small-latest",
provider="mistral",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
一行切换提供商:
# 改 provider 参数,立即切换到 Claude
response = completion(
model="claude-sonnet-4-20250514",
provider="anthropic",
messages=[{"role": "user", "content": "Hello!"}]
)
4.2 联合格式(provider:model)
response = completion(
model="openai:gpt-4o-mini", # <provider>:<model>
messages=[{"role": "user", "content": "What is Python?"}]
)
4.3 面向生产:AnyLLM 类(连接池复用)
from any_llm import AnyLLM
llm = AnyLLM.create("mistral", api_key="your-key")
response = llm.completion(
model="mistral-small-latest",
messages=[{"role": "user", "content": "Hello!"}]
)
| 方式 | 适用场景 | 连接处理 |
|---|---|---|
completion() 直接函数 |
脚本、Notebook、单次请求 | 每次新建客户端(无状态) |
AnyLLM.create() 类 |
生产应用、多轮请求 | 复用客户端(连接池) |
4.4 流式输出
# 流式返回示例(AnyLLM 方式)
stream = await session.reply_with_stream(messages, ChatReplyConfig.create())
4.5 OpenAI Responses API 风格
from any_llm import responses
result = responses(
model="gpt-4o-mini",
provider="openai",
input_data=[{"role": "user", "content": [{"type": "text", "text": "Summarize this."}]}]
)
print(result.output_text)
五、典型适用场景
- 快速原型验证:用不同模型快速测试效果,无需改代码,只需改
provider参数。 - 多提供商容灾:同一套代码可以在多个提供商之间切换,主 provider 挂了秒级切到备选。
- 从 LiteLLM 迁移:项目文档有明确的迁移路径,API 格式高度兼容,
any-llm的provider:model格式对应 LiteLLM 的openai/gpt-4o格式。 - 统一 SDK 管理:不想管理五六个不同的 SDK 包,用
any-llm一个入口全部搞定。
六、坑与注意
- Python 3.11+ 强制要求:旧版 Python 无法安装,请先检查版本。
- 官方 SDK 依赖:如果某提供商的官方 SDK 有 bug,
any-llm也跟着受影响,因为它本质上不自己做网络请求。 - 不提供代理/路由功能:如果需要用量统计、密钥管理、多租户等能力,需要配合
otari(Mozilla 团队的另一项目)使用。 - Streaming 接口:流式输出在文档中提及,但示例相对较少,使用前建议阅读 API 文档确认最新接口。
- 模型 ID 直接透传:
model参数值会直接传给提供商,意味着你需要查阅目标提供商的模型名称规范。
七、与同类对比
| 特性 | any-llm | LiteLLM | AISuite |
|---|---|---|---|
| 调用官方 SDK | ✅ | ❌ 自己做适配层 | ✅ |
| 统一异常处理 | ✅ | ✅ | ❌ |
| 活跃维护 | ✅(Mozilla 团队) | ✅ | ⚠️ 维护不活跃 |
| 生产验证 | ✅(any-agent 自用) | ✅ | ❌ |
| 工具/Function Calling | ✅ | ✅ | ❌ |
| 需要代理服务 | ❌ | ❌(本地) | ❌ |
| 多租户/密钥管理 | 需配合 otari | 需 Portkey 等 | ❌ |
八、一句话推荐结论
多提供商 LLM 调用场景下,any-llm 是目前最干净、最省心的选择——官方 SDK 做底层,Mozilla 团队维护,生产验证充足,值得作为统一 AI 接口层的首选。
来源:GitHub README、docs.mozilla.ai/any-llm、PyPI
注意:pip install 示例中的 extras 如
[mistral,ollama]为 2026-07 当前版本写法,如遇安装问题请查阅最新文档。