更新于 2025年9月25日
6 分钟
# Pythonpip install litellm# Node.jsnpm install litellm# 示例:使用 OpenAI + Anthropic + Mistralexport OPENAI_API_KEY=sk-...export ANTHROPIC_API_KEY=sk-ant-...export MISTRAL_API_KEY=sk-mis-...from litellm import completionresp = completion(model="gpt-4o-mini", # 或 "anthropic/claude-3-5-sonnet", "mistral/mistral-large"messages=.---## 流式传输、工具及 JSON 模式### 流式响应```pythonfrom litellm import completionfor chunk in completion(model="gpt-4o-mini",messages=.### 成本与令牌使用情况LiteLLM 能追踪令牌使用量并估算每次请求、每个模型或项目的成本。代理还能将使用情况导出到日志、仪表盘或费用接收端。当你混合使用不同付费标准的供应商时,这一点尤为重要。---## LiteLLM 代理(LLM 网关)如果你是团队或平台用户,代理无疑是超级利器:它是一个集中式服务,支持路由、认证、限流、日志和可观测性。你可以通过 OpenAI API 接口与它交互,使得应用代码几乎不用改动。### 启动代理```bash# 最简洁的本地运行litellm --port 4000/v1/chat/completions 之类的 OpenAI 兼容端点。将你现有的 OpenAI 客户端指向它即可开箱即用。config.yaml 文件:model_list:- model_name: gpt-4o-minilitellm_params:model: openai/gpt-4o-miniapi_key: ${OPENAI_API_KEY}- model_name: claude-3-5-sonnetlitellm_params:model: anthropic/claude-3-5-sonnetapi_key: ${ANTHROPIC_API_KEY}router:strategy: simple_weightedroutes:- model: gpt-4o-miniweight: 0.6- model: claude-3-5-sonnetweight: 0.4rate_limits:requests_per_minute: 120logging:level: infosink: stdoutauth:api_keys:- key: svc-app-123litellm --config config.yaml --port 4000from openai import OpenAIclient = OpenAI(base_url=" api_key="svc-app-123")resp = client.chat.completions.create(model="gpt-4o-mini",messages=.---## 高级路由:延迟、成本或可靠性你可以实现如下路由策略:- 加权轮询实现模型 A/B 测试- 按地域优先低延迟选择- 针对非关键端点的成本感知路由- 错误回退及跨供应商重试通过路由策略,你可以设定“优先廉价模型,复杂提示时回退到高端模型”。从而实现高可用和可预测预算。---## 安全防护、审查与合规添加前后处理中间件,去除个人身份信息、执行安全过滤或审查输出,然后再返回给客户端。代理可以结合供应商自带的审查功能(如 OpenAI、Google)和你自定义的策略检查。示例:要求 JSON schema 校验,校验不通过时重新提问。---## 可观测性与日志管理- 支持带脱敏功能的请求/响应日志。- 能导出指标至 Prometheus/Grafana 或你的 APM。- 可追踪每个端点及用户的延迟、令牌和成本。借助此功能,原本的“模型轮盘”变成了具备服务等级目标和预算管理的托管服务。---## 真实使用案例1)多供应商容灾- 主用:快速或低价模型;回退:429/5xx 出错时切换高精度模型。- 好处:提升上线率,控制成本,确保质量稳定。2)功能开关式模型升级- 利用路由权重,将新模型先投放 5% 流量,监控指标稳定后逐步放量。3)产品分层- 免费层路由小型模型,专业层路由高端模型。4)提示注册与模板管理- 在代理集中管理提示,服务间共享改进,无需频繁部署。5)团队计费与预算管理- 按 API Key 追踪花费;对团队或产品实行软硬预算限制。---## 安全与合规清单- 将供应商密钥存储在你的秘密管理器,通过环境变量在配置中引用。- 启用请求脱敏与 PII 清理日志。- 代理使用独立服务 API 密钥,并定期轮换。- 设定全组织范围的速率限制和配额。- 对模型和端点配置允许列表与拒绝列表。---## 故障排查:快速修复方案- 代理返回“Unauthorized”:检查 `auth.api_keys` 设置及客户端是否使用正确的 `base_url` 和密钥。- 找不到模型:确保 `model_list` 中有你调用的友好名称。- 超时:增加 `timeout`,或切换到延迟更低的供应商区域。- 输出异常:启用 JSON schema 校验,增加重试与回退机制。- 成本激增:开启缓存,将大流量路由至廉价模型,设定单 key 配额。如需深入学习及获取最新特性,官方文档常更新,非常值得收藏。DataCamp 的教程适合实战演练,初学者速成课视频能帮助你直观理解概念。---## 综合示例:参考应用骨架(Python FastAPI)```python# app.pyfrom fastapi import FastAPIfrom pydantic import BaseModelfrom litellm import completionimport osclass ChatReq(BaseModel):question: strapp = FastAPI()@app.post("/ask")async def ask(req: ChatReq): resp = completion( model=os.getenv("DEFAULT_MODEL", "gpt-4o-mini"), messages=. )### 常见问答Q1:什么是 LiteLLM,为什么用它替代直连供应商 SDK?LiteLLM 是兼容 OpenAI 接口的多模型网关,提供统一 API 和心智模型。它减少供应商锁定,简化路由并增加诸如缓存、重试和成本跟踪的运营功能。Q2:如何用 OpenAI SDK 使用 LiteLLM?将 SDK 的 base_url 指向 LiteLLM 代理,使用代理 API Key。代码无需变更,代理会在后台替换供应商或模型。Q3:LiteLLM 支持流式响应和返回 JSON 吗?支持。设置 `stream=True` 可获得令牌流,使用 JSON schema 的 `response_format` 可实现跨供应商结构化输出。Q4:如何控制不同 LLM 供应商的成本?开启使用日志和成本估算,使用缓存,设置速率限制,通过代理路由大量请求到成本较低模型。通过仪表盘监控预算和服务目标。Q5:LiteLLM 适合生产团队使用吗?