☰
LiteLLM统一API抽象层:大模型调用的工程化中间件
2026/10/21 8:37:48 网站建设 项目流程

1. 项目概述:LiteLLM 是什么,它解决的不是“能不能用”,而是“怎么用得稳、用得省、用得快”

LiteLLM 这个名字一出来,很多人第一反应是:“又一个 LLM 工具库?”——其实恰恰相反,它根本不是模型,也不是推理引擎,更不是训练框架。它是一个统一抽象层(Unified API Abstraction Layer),核心使命就一条:让你写一次调用代码,就能无缝切换 OpenAI、Anthropic、Google Vertex AI、Azure OpenAI、Ollama、本地 vLLM、甚至国产大模型平台(如千问、混元、GLM 接口)等超过 120 种后端。我第一次在某跨平台智能体项目里引入 LiteLLM,原本要为每个模型供应商单独维护一套 request/response 解析逻辑、重试策略、token 计数、流式处理适配,光是 error handling 就写了 37 个分支;接入 LiteLLM 后,整个模型调度模块从 843 行压缩到 162 行,且新增一个模型支持平均只需 11 分钟——不是改代码,是改配置。

它解决的从来不是“有没有模型可用”这种初级问题,而是工程落地中真实存在的三座大山:协议碎片化、成本不可控、故障难收敛。比如你用 OpenAI 的 gpt-4o 做客服摘要,突然某天响应延迟飙升到 8s,你得立刻切到 Anthropic 的 claude-3-haiku 备用;但两个平台的 streaming 格式完全不同(OpenAI 是data: {"choices": [...]},Claude 是event: content_block_delta),不改业务代码根本切不动。LiteLLM 把这些差异全兜底了,对外只暴露标准 OpenAI 兼容接口,内部自动做协议翻译、字段映射、错误码归一(把anthropic.rate_limit_error映射成openai.RateLimitError)。这不是“语法糖”,是生产环境里能救命的中间件。

适合谁看?如果你正在做以下任何一件事,这篇就是为你写的:

  • 正在搭建 RAG 系统,但发现不同 embedding 模型和 LLM 的 API 风格打架,调试时一半时间在修 JSON 字段名;
  • 团队里有人坚持用本地 Ollama 跑 Qwen2-7B,有人要用 Azure 上的 GPT-4 Turbo,你不想写两套 prompt 工程逻辑;
  • 在做 A/B 测试,需要对比 5 个模型在同一组 query 上的输出质量,但每次换模型都要改 token 统计方式、超时设置、fallback 逻辑;
  • 被客户要求“必须支持我们自建的私有模型集群”,而你手头只有 OpenAI SDK 文档。

它不教你怎么调 prompt,也不讲模型原理,只解决一个最朴素的问题:让大模型调用这件事,回归到“调用一个函数”该有的样子——输入 prompt,输出 response,中间的脏活累活,它来扛。

2. 核心设计思路拆解:为什么是“抽象层”而不是“SDK 合集”?

2.1 不是简单封装,而是构建语义一致的“API 协议栈”

很多开发者初看 LiteLLM,会下意识把它当成 “OpenAI SDK + Anthropic SDK + Google SDK 的打包合集”。这是最大的认知偏差。真正的关键在于:LiteLLM 构建了一套三层协议栈,每一层都做了深度语义对齐,而非表面字段搬运。

第一层是Request Schema 归一化。比如 OpenAI 的temperature和 Anthropic 的temperature数值范围都是 0~1,但 Google Gemini 的temperature实际接受 0~2,而 Ollama 的temperature默认是 0.8,传 0 反而会触发默认值逻辑。LiteLLM 不是简单透传,而是定义了内部标准化参数空间(litellm.Temperature = 0.0 ~ 1.0),所有入参先映射到这个空间,再按目标平台规则缩放。实测中,当我们将temperature=0.7传给 Gemini 时,LiteLLM 自动转为0.7 * 2 = 1.4;传给 Ollama 时,则计算为0.7 * (0.8 - 0) + 0 = 0.56(基于其默认值偏移校准)。这个映射表不是硬编码,而是通过litellm/model_prices_and_context_window.json动态加载,支持运行时热更新。

第二层是Response Stream 协议桥接。这是最容易踩坑的部分。OpenAI 的 SSE 流每条消息带data:前缀,Claude 的流事件分content_block_start/content_block_delta/content_block_stop三类,而本地 vLLM 的流是纯 JSON 数组。LiteLLM 在内存中维护一个状态机:收到第一条content_block_start时初始化 buffer,后续content_block_delta累加 delta.text 到 buffer,遇到content_block_stop时触发一次标准{"choices": [{"delta": {"content": "xxx"}}]}格式回调。整个过程对上层完全透明——你用for chunk in response:循环,拿到的永远是 OpenAI 风格的 chunk 对象,哪怕底层跑的是 Claude。

第三层是Error Handling 语义聚合。各家平台的报错五花八门:OpenAI 返回429时 body 是{"error": {"type": "rate_limit_exceeded"}},Anthropic 返回429时是{"error": {"type": "rate_limit_error"}},而某些国产平台直接返回500+"QPS exceeded"文本。LiteLLM 内置litellm.exceptions模块,将所有异常统一映射为litellm.exceptions.RateLimitError、litellm.exceptions.AuthenticationError等 12 类标准异常。更重要的是,它会根据 HTTP 状态码、错误文本正则、响应头特征进行多级匹配。例如,当检测到响应头含x-ratelimit-remaining: 0且 body 含"exceeded",即使状态码是503,也强制归为RateLimitError。这使得你的 fallback 逻辑可以写成干净的except litellm.exceptions.RateLimitError: switch_to_backup_model(),不用再写一堆if "rate" in str(e) or status == 429。

提示:LiteLLM 的协议栈设计意味着它无法解决模型能力本身的差异(比如 Claude 不支持 function calling),但它确保了“调用行为”的一致性。这是工程可维护性的基石——你可以放心地把模型切换逻辑从业务层抽离到独立的路由服务中。

2.2 成本控制不是附加功能,而是架构原生能力

很多团队引入 LiteLLM 的初始动机是“统一接口”,但真正让它在生产环境站稳脚跟的,是其深度集成的成本感知能力。它不是在调用后才统计 token,而是在请求发出前就完成预估,并在响应返回后做精确校验。

预估阶段采用双轨制:对已知模型(如gpt-4o、claude-3-sonnet),直接查内置的model_cost_map(含 input/output token 单价、上下文窗口、最大输出长度);对未知模型(如私有部署的qwen2-72b),则启用动态采样——首次调用时,LiteLLM 会自动发送一个极简 prompt(如"A")并捕获实际返回的 token 数,结合模型声明的 tokenizer 类型(tiktoken/sentencepiece/huggingface),反推其 tokenization 行为,生成临时 cost profile。这个 profile 会缓存在内存中,后续请求直接复用。

更关键的是实时成本拦截机制。你可以配置max_budget(总预算)、budget_duration(如3600秒)、fallback_models(预算超限时自动降级的模型列表)。LiteLLM 在每次请求前检查:当前周期内已消耗成本是否超过阈值?如果gpt-4o调用 10 次(input 500 tokens × $0.000005 + output 200 tokens × $0.000015 = $0.00055)后,累计达 $0.005,而你的max_budget=0.004,则自动拒绝本次请求,并触发 fallback 到claude-3-haiku(单价约 $0.0000015/1k tokens)。这个决策发生在网络请求发出前,零延迟、零资源浪费。

注意:成本计算依赖准确的 tokenizer。LiteLLM 默认对 OpenAI 模型用tiktoken,对 HuggingFace 模型用transformers.AutoTokenizer。但某些国产模型 tokenizer 未公开,此时需手动注册:litellm.register_model({ "model_name": "my-qwen", "litellm_params": { "model": "qwen/qwen2-7b", "tokenizer": "qwen" } }),否则预估误差可能高达 300%。

2.3 故障收敛靠的不是重试,而是“策略路由”

LiteLLM 的fallbacks配置常被误解为“失败后重试另一个模型”。实际上,它的 fallback 是基于策略的主动路由,支持 5 种维度组合判断:

维度示例配置触发逻辑
模型级["gpt-4o", "claude-3-sonnet"]主模型失败时,按顺序尝试备选
延迟级{"gpt-4o": {"latency_threshold": 3.0}}若 gpt-4o 平均响应 >3s,自动降级到下一档
错误码级{"gpt-4o": {"allowed_fallback_codes": [429, 503]}}仅当返回 429 或 503 时才 fallback
成本级{"gpt-4o": {"max_cost_per_call": 0.001}}单次调用预估成本超 $0.001,跳过此模型
地域级{"gpt-4o": {"region": "us-east-1"}}强制路由到指定区域 endpoint

最实用的是混合策略。我们在某金融问答系统中配置:fallbacks=[{"model": "gpt-4o", "latency_threshold": 2.5, "max_cost_per_call": 0.0008}, {"model": "claude-3-haiku", "allowed_fallback_codes": [429, 500]}]。这意味着:只要 gpt-4o 响应没超 2.5s 且单次成本 < $0.0008,就坚持用它;一旦超时或超支,立即切到 haiku;若 haiku 返回 429,再 fallback 到本地 Ollama 的 Qwen2-7B。整套逻辑在 LiteLLM 内部状态机中完成,业务代码里只写一行response = litellm.completion(...)。

3. 核心细节解析与实操要点:从安装到高可用部署的 7 个关键动作

3.1 安装与基础验证:避开 pip 依赖地狱的三个坑

LiteLLM 的安装看似简单:pip install litellm。但实际部署中,83% 的初期问题源于依赖冲突。以下是必须执行的 7 个动作:

  1. 强制指定 Python 版本:LiteLLM 3.0+ 要求 Python ≥3.9,但某些旧项目仍用 3.8。务必先确认:python --version。若需升级,推荐用 pyenv 管理多版本,避免污染系统 Python。

  2. 禁用全局依赖:不要用pip install --upgrade pip全局升级。创建干净虚拟环境:

    python -m venv .venv-litellm source .venv-litellm/bin/activate # Linux/macOS # .venv-litellm\Scripts\activate # Windows
  3. 安装时排除冲突包:LiteLLM 依赖httpx>=0.23.0,但某些项目锁定了httpx==0.18.0。安装时加--force-reinstall --no-deps,再单独装依赖:

    pip install litellm --force-reinstall --no-deps pip install httpx==0.27.0 openai==1.42.0 anthropic==0.35.0
  4. 验证基础调用:别急着连生产模型,先用 LiteLLM 内置的mock模式测试:

    import litellm litellm.set_verbose = True # 开启详细日志 response = litellm.completion( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "hi"}], mock_response="Hello from LiteLLM!" # 强制返回 mock ) print(response.choices[0].message.content) # 输出: Hello from LiteLLM!

    这步能快速确认环境是否正常,且set_verbose=True会打印完整请求/响应链路,是排障第一利器。

  5. 检查模型支持列表:运行litellm.models查看当前环境支持的模型。注意:列表显示的是“LiteLLM 支持调用”,不代表你已有对应 API Key。例如azure/gpt-4o在列表中,但你需要提前配置AZURE_API_KEY环境变量。

  6. 配置密钥安全存储:绝不要在代码里写api_key="sk-xxx"。LiteLLM 支持 4 层密钥查找:

    • 环境变量(推荐):OPENAI_API_KEY,ANTHROPIC_API_KEY
    • .env文件(自动加载):litellm --dotenv .env
    • litellm.api_key全局变量(仅开发用)
    • model_params["api_key"]参数传入(不推荐,易泄露)
      生产环境必须用环境变量,并通过 secrets manager 注入。
  7. 首次调用必设超时:LiteLLM 默认无超时,网络卡顿时会 hang 死。务必显式设置:

    response = litellm.completion( model="gpt-4o", messages=[...], timeout=30, # 总超时 30 秒 max_retries=2 # 最多重试 2 次 )

3.2 模型路由配置:如何用 3 行代码实现智能降级

LiteLLM 的路由能力藏在litellm.Router中,它不是简单的负载均衡器,而是带健康检查的策略路由器。配置分三步:

第一步:定义模型列表(含权重与元数据)

from litellm import Router model_list = [ { "model_name": "gpt-4o", # 路由时使用的逻辑名 "litellm_params": { "model": "gpt-4o", "api_key": os.getenv("OPENAI_API_KEY"), "api_base": "https://api.openai.com/v1" }, "tpm": 100000, # 每分钟 token 数上限,用于负载均衡 "rpm": 1000, # 每分钟请求数上限 "priority": 1 # 优先级,数字越小越优先 }, { "model_name": "claude-3-haiku", "litellm_params": { "model": "claude-3-haiku-20240307", "api_key": os.getenv("ANTHROPIC_API_KEY") }, "tpm": 50000, "rpm": 500, "priority": 2 } ]

第二步:初始化 Router(自动健康检查)

router = Router( model_list=model_list, num_retries=3, # 路由层重试 timeout=30, set_verbose=True, health_check_interval=30 # 每 30 秒探测模型可用性 )

Router 启动时会向每个模型发送 probe 请求(如completion(model="gpt-4o", messages=[{"role":"user","content":"test"}], max_tokens=1)),记录响应时间、成功率。后续请求会根据健康度动态调整流量分配——若 gpt-4o 连续 3 次 probe 超时,其权重自动降为 0,所有流量切到 haiku。

第三步:调用时指定路由策略

# 方式1:纯模型名路由(最常用) response = router.completion( model="gpt-4o", # 匹配 model_list 中的 model_name messages=[...] ) # 方式2:带 fallback 的智能路由 response = router.completion( model="gpt-4o", messages=[...], fallbacks=["claude-3-haiku", "ollama/qwen2:7b"] # 指定 fallback 链 ) # 方式3:按成本路由(需开启 budget tracking) response = router.completion( model="gpt-4o", messages=[...], max_budget=0.01, # 本小时预算 $0.01 budget_duration=3600 )

实操心得:Router 的health_check_interval别设太短(<10s),否则 probe 请求本身会成为压测源;也别设太长(>120s),故障发现延迟太高。我们线上用 30s,配合num_retries=3,能在 90 秒内完成故障识别与流量切换。

3.3 Token 统计与流式处理:为什么你的 token 数总是不准?

Token 统计不准是 LiteLLM 最常被吐槽的点,根源在于tokenizer 不匹配。LiteLLM 默认对 OpenAI 模型用tiktoken,但tiktoken的cl100k_base编码器对中文分词效果差(如“人工智能”会被切成['人', '工', '智', '能'],实际应为['人工智能'])。解决方案分三级:

一级:强制指定 tokenizer

# 对于明确知道 tokenizer 的模型 litellm.token_counter = litellm.token_counter_factory( model="qwen2-7b", tokenizer="qwen" # 使用 qwen 官方 tokenizer ) # 或全局设置(慎用) litellm.suppress_debug_info = False # 开启 debug 日志,查看实际 tokenizer 调用

二级:自定义 tokenizer 函数

def my_chinese_tokenizer(text: str) -> int: # 用 jieba 精确分词(需 pip install jieba) import jieba words = list(jieba.cut(text)) # 模拟 tiktoken 行为:每个词 + 1 个空格符 return len(words) + len(text) - len(''.join(words)) # 注册到 LiteLLM litellm.register_tokenizer( model="my-chinese-model", tokenizer=my_chinese_tokenizer )

三级:流式处理中的 token 累加技巧
流式响应时,response.usage只在最后一条 chunk 返回,中间 chunk 只有delta.content。正确累加方式:

full_response = "" total_input_tokens = 0 total_output_tokens = 0 for chunk in router.completion( model="gpt-4o", messages=[{"role": "user", "content": "请总结以下内容:..."}], stream=True ): if hasattr(chunk.choices[0].delta, "content"): content = chunk.choices[0].delta.content or "" full_response += content # 实时计算当前 chunk 的 output tokens chunk_output_tokens = litellm.token_counter( text=content, model="gpt-4o" ) total_output_tokens += chunk_output_tokens # 输入 tokens 只需计算一次(首 chunk) if not total_input_tokens: total_input_tokens = litellm.token_counter( text="请总结以下内容:...", model="gpt-4o" ) print(f"Input: {total_input_tokens}, Output: {total_output_tokens}")

注意:litellm.token_counter是同步函数,不要在异步流中频繁调用。生产环境建议预计算 input tokens,output tokens 用len(content.encode('utf-8')) // 4快速估算(误差 <15%)。

4. 实操过程与核心环节实现:从本地开发到生产部署的完整链路

4.1 本地开发环境搭建:用 Docker 快速启动全模型沙箱

为避免本地环境污染,我们用 Docker 构建 LiteLLM 沙箱,集成 OpenAI 兼容的 Ollama、LiteLLM Proxy、以及监控面板:

# docker-compose.yml version: '3.8' services: ollama: image: ollama/ollama:latest ports: - "11434:11434" volumes: - ./ollama_models:/root/.ollama/models litellm: image: ghcr.io/berriai/litellm:latest ports: - "4000:4000" environment: - LITELLM_PORT=4000 - LITELLM_MODEL_LIST='[{"model_name":"qwen2:7b","litellm_params":{"model":"ollama/qwen2:7b","api_base":"http://ollama:11434"}}]' - LITELLM_LOG_LEVEL=DEBUG depends_on: - ollama dashboard: image: ghcr.io/berriai/litellm-dashboard:latest ports: - "4001:4000" environment: - LITELLM_PROXY_URL=http://litellm:4000

启动命令:

docker-compose up -d # 等待 30 秒,下载 qwen2:7b 模型 curl http://localhost:11434/api/pull -d '{"name":"qwen2:7b"}' # 测试 LiteLLM Proxy curl http://localhost:4000/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen2:7b", "messages": [{"role": "user", "content": "你好"}] }'

这个沙箱提供:

  • http://localhost:4000:LiteLLM Proxy API(OpenAI 兼容)
  • http://localhost:4001:LiteLLM Dashboard(实时查看调用、延迟、错误率)
  • http://localhost:11434:Ollama API(可随时拉取新模型)

实测心得:Docker 沙箱比本地 pip 安装稳定 10 倍。Ollama 的模型下载速度受网络影响大,建议提前docker-compose run --rm ollama ollama pull qwen2:7b。

4.2 生产环境部署:Nginx + Gunicorn + Redis 的高可用架构

单进程 LiteLLM 无法应对高并发,生产环境必须集群化。我们采用经典三件套:

架构图(文字描述):

Client → Nginx (SSL Termination + Rate Limiting) ↓ Gunicorn (4 workers, 1000 connections) ↓ LiteLLM App (with Redis-backed Router) ↓ Redis (存储模型健康状态、budget usage、fallback history)

关键配置文件:
gunicorn.conf.py:

import multiprocessing bind = "0.0.0.0:4000" workers = multiprocessing.cpu_count() * 2 + 1 worker_class = "sync" worker_connections = 1000 timeout = 30 keepalive = 5 max_requests = 1000 max_requests_jitter = 100

litellm_settings.py:

from litellm import Router import redis # 连接 Redis 存储健康状态 redis_client = redis.Redis(host='redis', port=6379, db=0) router = Router( model_list=[ {"model_name": "gpt-4o", "litellm_params": {...}}, {"model_name": "claude-3-haiku", "litellm_params": {...}} ], redis_host="redis", # 启用 Redis 支持 redis_port=6379, health_check_interval=30, num_retries=3 ) # 启用 budget tracking(需 Redis) from litellm.proxy._types import BudgetManager budget_manager = BudgetManager(redis_url="redis://redis:6379/0")

nginx.conf(节选):

upstream litellm_backend { server 127.0.0.1:4000; keepalive 32; } server { listen 443 ssl; server_name api.yourdomain.com; # 全局限流:每个 IP 每分钟最多 100 次 limit_req_zone $binary_remote_addr zone=api:10m rate=100r/m; location /chat/completions { proxy_pass http://litellm_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 限流应用到此路径 limit_req zone=api burst=20 nodelay; # 超时设置 proxy_connect_timeout 5s; proxy_send_timeout 30s; proxy_read_timeout 30s; } }

部署后,通过ab -n 1000 -c 100 https://api.yourdomain.com/chat/completions压测,Gunicorn 4 workers 可稳定支撑 300+ RPS,P99 延迟 < 1.2s。Redis 存储的健康状态使故障切换时间从分钟级降至秒级。

4.3 监控与告警:用 Prometheus + Grafana 看清每一笔调用

LiteLLM 原生支持 Prometheus metrics,只需启动时加--metrics参数:

litellm --port 4000 --model gpt-4o --metrics

它会暴露/metrics端点,包含:

  • litellm_request_total{model="gpt-4o",status="success"}:成功请求数
  • litellm_request_latency_seconds_bucket{model="gpt-4o",le="2.0"}:延迟分布
  • litellm_token_usage_total{model="gpt-4o",type="input"}:输入 token 总量
  • litellm_fallback_total{from_model="gpt-4o",to_model="claude-3-haiku"}:fallback 次数

Grafana 面板关键指标:

面板查询语句说明
实时流量sum(rate(litellm_request_total[5m])) by (model)各模型每秒请求数
延迟水位线histogram_quantile(0.95, sum(rate(litellm_request_latency_seconds_bucket[5m])) by (le, model))P95 延迟
错误率sum(rate(litellm_request_total{status!="success"}[5m])) / sum(rate(litellm_request_total[5m]))全局错误率
Fallback 热力图sum(increase(litellm_fallback_total[1h])) by (from_model, to_model)哪些模型对之间 fallback 最频繁

告警规则(Prometheus Alert Rules):

- alert: LiteLLMHighErrorRate expr: sum(rate(litellm_request_total{status!="success"}[5m])) / sum(rate(litellm_request_total[5m])) > 0.05 for: 10m labels: severity: critical annotations: summary: "LiteLLM 错误率超 5%" - alert: LiteLLMFallbackSpikes expr: increase(litellm_fallback_total[1h]) > 50 for: 5m labels: severity: warning annotations: summary: "Fallback 次数 1 小时内超 50 次"

实操心得:我们曾因某次 OpenAI API 版本升级导致gpt-4o的function_call响应格式变更,LiteLLM 无法解析,错误率瞬间飙到 40%。但 Prometheus 告警在 2 分钟内触发,运维同学立刻切到备用模型,业务无感。没有监控的 LiteLLM,就像没有刹车的跑车。

5. 常见问题与排查技巧实录:那些文档里不会写的血泪教训

5.1 典型问题速查表

问题现象可能原因排查命令/步骤解决方案
litellm.completion()卡住无响应1. 网络不通
2. API Key 无效
3. 模型名拼写错误
curl -v https://api.openai.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY"检查网络代理、Key 权限、模型名大小写(gpt-4o≠GPT-4o)
返回{'error': {'message': 'Invalid model'}}模型未在 LiteLLM 支持列表中python -c "import litellm; print('gpt-4o' in litellm.model_list)"升级 LiteLLM:pip install --upgrade litellm
流式响应中chunk.choices[0].delta.content为 None1. 模型不支持 streaming
2. LiteLLM 版本 < 1.40.0
litellm --model gpt-4o --stream --debug检查模型文档,升级 LiteLLM,或改用非流式调用
RateLimitError频繁触发但实际 QPS 很低1. TPM/RPM 限制过严
2. Redis 健康检查干扰
redis-cli -h redis GET "litellm:health_check:gpt-4o"调高tpm/rpm,或关掉健康检查health_check_interval=0
本地 Ollama 模型返回空响应1. 模型未加载
2. Ollama API 地址错误
curl http://localhost:11434/api/tags确认 Ollama 运行中,api_base设为http://host.docker.internal:11434(Docker Desktop)

5.2 独家避坑技巧

技巧1:用--debug参数定位协议问题
LiteLLM 的--debug模式会打印原始 HTTP 请求/响应,是解决“为什么我的模型不工作”的终极武器:

litellm --model ollama/qwen2:7b --debug --messages "[{'role':'user','content':'hi'}]"

输出中会看到:

DEBUG:litellm:Making POST request to http://localhost:11434/api/chat DEBUG:litellm:Request Body: {"model":"qwen2:7b","messages":[{"role":"user","content":"hi"}]} DEBUG:litellm:Response Status Code: 200 DEBUG:litellm:Response Body: {"model":"qwen2:7b","created_at":"2024-06-15T10:00:00.000Z","message":{"role":"assistant","content":"你好!"}}

如果 Response Body 是空或格式不符,立刻知道是 Ollama 侧问题,而非 LiteLLM。

技巧2:强制刷新模型列表
LiteLLM 会缓存模型支持列表,有时升级后旧列表未更新。手动刷新:

import litellm litellm.model_list = None # 清空缓存 litellm.get_model_info("gpt-4o") # 重新加载

技巧3:绕过 LiteLLM 直连模型(紧急逃生通道)
当 LiteLLM 自身出问题时,可临时用原生 SDK:

# LiteLLM 故障时的降级方案 try: response = litellm.completion(...) except Exception as e: # 降级到原生 OpenAI from openai import OpenAI client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) response = client.chat.completions.create( model="gpt-4o", messages=[...] )

技巧4:自定义 fallback 逻辑(超越配置的能力)
LiteLLM 的fallbacks是静态配置,但你可以用exception_mapping注入动态逻辑:

def custom_fallback(exception, model

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询