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-llmprovider:model 格式对应 LiteLLM 的 openai/gpt-4o 格式。
  • 统一 SDK 管理:不想管理五六个不同的 SDK 包,用 any-llm 一个入口全部搞定。

六、坑与注意

  1. Python 3.11+ 强制要求:旧版 Python 无法安装,请先检查版本。
  2. 官方 SDK 依赖:如果某提供商的官方 SDK 有 bug,any-llm 也跟着受影响,因为它本质上不自己做网络请求。
  3. 不提供代理/路由功能:如果需要用量统计、密钥管理、多租户等能力,需要配合 otari(Mozilla 团队的另一项目)使用。
  4. Streaming 接口:流式输出在文档中提及,但示例相对较少,使用前建议阅读 API 文档确认最新接口。
  5. 模型 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 当前版本写法,如遇安装问题请查阅最新文档。