在大模型井喷的时代,开发者往往需要同时调用 OpenAI、Anthropic、Gemini、Hugging Face 等多个厂商的 LLM 接口。不同模型的 API 格式差异大、密钥管理混乱、成本统计困难…… 这些痛点让很多团队在 “多模型协同” 的路上举步维艰。
有没有一款工具能让开发者用统一的接口调用所有 LLM,同时解决密钥管理、成本追踪、负载均衡等问题?今天要介绍的LiteLLM,正是这样一款 “多 LLM 调用瑞士军刀”。
一、为什么需要 LiteLLM?开发者的真实痛点
在接触 LiteLLM 之前,我所在的团队曾被多 LLM 调用问题反复 “毒打”:
- API 格式不统一:调用 OpenAI 用messages字段,Anthropic 用prompt;Gemini 需要contents.parts.text,Hugging Face TGI 又要求inputs。每次切换模型都要重写请求结构,效率极低。
- 密钥管理混乱:不同模型的 API Key 分散在环境变量、配置文件甚至代码里,权限管控全靠 “人肉”,安全风险高。
- 成本统计困难:各厂商的计费方式不同(按 token、按请求次数、按模型版本),想统计项目的总 LLM 成本,需要手动拉取多个平台的账单再合并,耗时且易出错。
- 容灾与负载均衡:当某个模型 API 超时或限流时,无法自动切换到备用模型;高并发场景下,无法根据模型负载动态分配请求。
直到遇到 LiteLLM,这些问题才得到系统性解决。作为一款开源的 LLM 调用中间件,LiteLLM 通过统一接口、多模型适配、全链路成本追踪、企业级密钥管理四大核心能力,让开发者只需关注业务逻辑,无需为模型差异和运维问题分心。
二、LiteLLM 核心功能:用 OpenAI 格式调用 100+LLM
LiteLLM 的核心设计理念是 “用 OpenAI 的输入输出格式,调用所有 LLM”。无论你用的是 OpenAI 的 GPT-4、Anthropic 的 Claude、Google 的 Gemini,还是 Hugging Face 的开源模型(如 Llama 3)、AWS Bedrock 的闭源模型,都可以通过统一的completion()方法调用,输出结构也完全符合 OpenAI 规范(choices[0].message.content获取回复)。
1. 支持的 LLM 类型
LiteLLM 覆盖了当前主流的 LLM 类型,包括:
- 云厂商模型:OpenAI(GPT-4/GPT-3.5)、Azure OpenAI、Google Gemini、AWS Bedrock(Anthropic/Claude 等)、Vertex AI(Google 官方模型);
- 开源模型:Hugging Face TGI(Llama 3/StableLM 等)、LM Studio(本地部署模型);
- 新兴厂商模型:Mistral、Together AI、xAI(Grok)、Novita AI 等;
- 企业级服务:支持通过代理调用本地部署的 LLM(如 vLLM)。
截至 目前,LiteLLM 已支持100+LLM,覆盖 90% 以上的主流模型。
2. 核心功能亮点
除了统一接口,LiteLLM 还提供了一系列开发者友好的功能:
- 自动重试与模型回退:当某个模型请求失败(如超时、限流),可自动重试或切换到备用模型(如从 GPT-4 切换到 Claude-2);
- 成本实时追踪:自动统计每次请求的 token 消耗(包含输入 / 输出)和费用(支持自定义模型单价),可通过日志或集成 Athina 等监控平台查看;
- 代理服务(LiteLLM Proxy):启动一个 HTTP 服务,通过统一端点调用所有 LLM,支持与 LangChain、LlamaIndex 等框架无缝集成;
- 企业级密钥管理:支持从 Azure Key Vault、AWS Secrets Manager 等第三方服务读取 API Key,避免密钥硬编码;
- 流量管控:可设置单模型 / 单项目的调用速率限制(QPS)和预算(如每月最多消耗 100 美元),防止超支。
三、实战:用 LiteLLM 调用多 LLM 的 3 种场景
接下来,我们通过 3 个实战场景,演示 LiteLLM 的具体用法。为了让操作更直观,本文将使用 Python SDK 和 Proxy 服务两种方式。
场景 1:用 Python SDK 调用 OpenAI、Anthropic、Gemini
目标:用同一套代码调用 OpenAI 的 GPT-3.5、Anthropic 的 Claude-2、Google 的 Gemini-1.5-Pro,对比不同模型的回复。
步骤 1:安装 LiteLLM
bash
pip install litellm
步骤 2:配置 API Key
将各模型的 API Key 存入环境变量(生产环境建议用密钥管理服务):
bash
export OPENAI_API_KEY="sk-xxxx"
export ANTHROPIC_API_KEY="sk-xxxx"
export GEMINI_API_KEY="AIzaSy-xxxx"
步骤 3:编写统一调用代码
python
运行
from litellm import completion
def call_llm(model: str, message: str):
try:
response = completion(
model=model,
messages=[{"role": "user", "content": message}]
)
return response.choices[0].message.content
except Exception as e:
return f"请求失败:{str(e)}"
# 调用OpenAI GPT-3.5
gpt_response = call_llm("gpt-3.5-turbo", "用一句话解释LiteLLM的作用")
print(f"GPT-3.5 回复:{gpt_response}")
# 调用Anthropic Claude-2
claude_response = call_llm("claude-2", "用一句话解释LiteLLM的作用")
print(f"Claude-2 回复:{claude_response}")
# 调用Google Gemini-1.5-Pro(注意模型名格式)
gemini_response = call_llm("gemini-1.5-pro", "用一句话解释LiteLLM的作用")
print(f"Gemini 回复:{gemini_response}")
效果说明:
无论调用哪个模型,代码结构完全一致。LiteLLM 会自动将 OpenAI 格式的messages参数转换为对应模型的 API 参数(如 Anthropic 需要prompt字段,Gemini 需要contents.parts.text),并将返回结果统一为 OpenAI 格式,开发者只需从response.choices[0].message.content获取回复即可。
场景 2:用 LiteLLM Proxy 搭建统一 LLM 网关
如果你需要在前端或非 Python 服务中调用 LLM,或者希望集中管理所有 LLM 请求,LiteLLM Proxy 是更合适的选择。它本质是一个 HTTP 服务,通过/chat/completions等标准端点接收请求,内部转发到目标模型。
步骤 1:启动 Proxy 服务
bash
# 启动一个代理,默认监听4000端口
litellm --model gpt-3.5-turbo # 也可以不指定模型,通过请求中的model参数动态指定
步骤 2:用 Curl 测试代理
bash
curl http://localhost:4000/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-1.5-pro", # 动态指定模型
"messages": [{"role": "user", "content": "用Python写一个斐波那契数列生成函数"}]
}'
步骤 3:集成 LangChain(以 Python 为例)
LangChain 是流行的 LLM 应用开发框架,通过设置openai_api_base为 LiteLLM Proxy 地址,可以无缝使用所有 LLM:
python
运行
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
# 将OpenAI客户端的base_url指向LiteLLM Proxy
chat = ChatOpenAI(
openai_api_base="http://localhost:4000", # Proxy地址
model="claude-2", # 调用Anthropic Claude-2
temperature=0.5
)
response = chat([HumanMessage(content="推荐5本人工智能领域的经典书籍")])
print(response.content)
效果说明:
通过 Proxy,团队可以搭建一个集中的 LLM 网关,所有服务只需调用网关接口,无需关心具体模型的 API 细节。同时,Proxy 支持日志记录、流量监控、密钥隔离等功能,适合企业级场景。
场景 3:成本追踪与预算控制
在 LLM 应用中,成本控制是关键。LiteLLM 内置了成本计算器,可自动统计每次请求的 token 消耗和费用,还支持设置预算告警。
步骤 1:开启成本追踪
LiteLLM 默认会统计 token 用量,若需计算具体费用,需配置模型单价(支持自定义,默认使用官方定价):
python
运行
from litellm import completion, set_verbose
set_verbose(True) # 开启详细日志,查看成本信息
response = completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "设计一个用户登录的API接口"}]
)
# 打印成本信息(输入token数、输出token数、总费用)
print(f"输入token:{response.usage.prompt_tokens}")
print(f"输出token:{response.usage.completion_tokens}")
print(f"总费用(美元):{response.usage.total_cost}")
步骤 2:设置预算告警
通过BudgetManager可以设置项目的月度预算,当消耗超过阈值时触发告警:
python
运行
from litellm import BudgetManager
# 初始化预算管理器,设置每月预算为100美元
budget_manager = BudgetManager(project_name="my_project", total_budget=100)
# 每次请求后更新预算
response = completion(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "写一段Python代码"}])
budget_manager.update_budget(
model="gpt-3.5-turbo",
prompt_tokens=response.usage.prompt_tokens,
completion_tokens=response.usage.completion_tokens
)
# 检查是否超预算
if budget_manager.get_total_cost() > 90: # 阈值设为90美元(预算的90%)
print("警告:预算已使用90%,请注意控制成本!")
效果说明:
通过成本追踪,开发者可以清晰看到每个模型、每个项目的 LLM 消耗;预算控制则能防止因误操作或流量突增导致的超支,尤其适合企业级场景。
四、高级玩法:模型路由与容灾
对于需要高可用的 LLM 应用,LiteLLM 的 ** 模型路由(Router)** 功能可以实现自动重试和模型回退。例如,优先调用 GPT-4,若失败则切换到 Claude-2,再失败则尝试 Gemini-1.5-Pro。
步骤 1:配置路由策略
python
运行
from litellm import Router
# 定义模型列表(按优先级排序)
model_list = [
{
"model_name": "gpt-4",
"litellm_params": {"model": "gpt-4", "api_key": os.getenv("OPENAI_API_KEY")}
},
{
"model_name": "claude-2",
"litellm_params": {"model": "claude-2", "api_key": os.getenv("ANTHROPIC_API_KEY")}
},
{
"model_name": "gemini-1.5-pro",
"litellm_params": {"model": "gemini-1.5-pro", "api_key": os.getenv("GEMINI_API_KEY")}
}
]
# 初始化路由(支持重试3次,每次切换下一个模型)
router = Router(model_list=model_list, num_retries=3)
步骤 2:通过路由调用 LLM
python
运行
response = router.completion(
messages=[{"role": "user", "content": "分析当前大模型行业的发展趋势"}]
)
print(response.choices[0].message.content)
效果说明:
当第一个模型(GPT-4)请求失败(如超时、限流),路由会自动尝试下一个模型(Claude-2),直到成功或所有模型都失败。这种机制显著提升了 LLM 应用的可用性,尤其适合对稳定性要求高的生产环境。
五、总结:LiteLLM 适合哪些开发者?
经过上述实战,相信你已经感受到 LiteLLM 的强大。它适合以下几类开发者:
- 中小团队开发者:无需为多模型 API 差异头疼,用统一接口快速验证想法;
- 企业 AI 平台团队:通过 Proxy 搭建统一 LLM 网关,集中管理密钥、流量、成本;
- LLM 应用开发者:结合路由、缓存、预算控制等功能,构建高可用、低成本的 LLM 服务;
- 开源模型使用者:轻松调用 Hugging Face、LM Studio 等本地 / 开源模型,无需处理复杂的部署和 API 适配。
在大模型 “百模大战” 的背景下,LiteLLM 通过 “统一接口 + 全链路管理” 的设计,让开发者从繁琐的模型适配中解放,专注于业务创新。无论是个人开发者的小项目,还是企业级的 AI 平台,LiteLLM 都是值得信赖的 “多 LLM 调用助手”
感谢支持【AI 码力】,关注不迷路!