FDE W7D5 学习手册 · LiteLLM 集成与 Build vs Buy ADR
W7 Day5 · B/C 级(企业平台与架构决策核心)· 4h · 学完能讲清"企业级模型网关选型 + 自研 vs 购买决策 + ADR 写作"
一、LiteLLM 是什么与定位
1.1 一句话定位
LiteLLM 是一个轻量级 LLM 网关 / 统一调用层 ,核心解决两件事:① 用统一的 OpenAI 格式 API 调用 100+ 家模型(OpenAI / Anthropic / Gemini / 本地 vLLM 等);② 提供企业级治理能力 ——虚拟 Key、预算、配额、多租户、项目级成本、管理界面。
1.2 两个最常用的形态
Python SDK(litellm) :代码里直接 litellm.completion(model=..., messages=...),统一各家调用格式,适合把"调不同厂商"这件事收口。
Proxy Server(litellm-proxy) :起一个 HTTP 网关服务,对外暴露 /v1/chat/completions,背后接各家模型;治理(Key/预算/租户)主要在这里做。
对企业 Java 平台而言,LiteLLM 通常作为"模型网关中间层":Spring AI 调 LiteLLM 的代理地址,而不是直接调各家。这样 Java 侧只认一个 OpenAI 兼容地址,模型厂商切换、Key 轮换、成本治理全在网关层做,对业务透明。
LiteLLM = 统一调用层 + 企业治理层。统一各家 API 格式,并把虚拟 Key、预算、多租户、成本统计这些"企业才需要"的能力收口在网关。对 Java 平台,它通常是 Spring AI 后面的那一层代理。
① LiteLLM 不是模型、不是向量库,它是网关/代理 ,本身不产生 token,只转发。② SDK 和 Proxy 是两种用法:SDK 是代码内调用,Proxy 是独立服务——治理能力(虚拟 Key/预算)主要在 Proxy 模式才有。③ 别把"统一格式"和"治理"混为一谈:格式统一是 SDK 就能做,预算/租户治理必须上 Proxy。
二、虚拟 Key(Virtual Key)机制
2.1 原理
LiteLLM 对外给用户/应用发的是虚拟 Key(也叫 Consumer Key / Token) ,用户用这个 Key 调 Proxy;Proxy 内部再拿真正的"厂商 Master Key"去调模型。真实厂商 Key 不暴露在业务侧。
业务应用 ──(虚拟 Key)──▶ LiteLLM Proxy ──(Master Key)──▶ 厂商模型
2.2 虚拟 Key 能做什么
能力 说明 企业价值
密钥隔离 业务侧只持有虚拟 Key,厂商 Key 集中保管 降低泄露面,轮换厂商 Key 不影响业务
按 Key 计费/配额 每个 Key 可设预算、速率、模型白名单 谁调了多少花了多少一目了然
按团队/应用发放 不同业务线/环境发不同 Key 隔离故障与成本,出了事能定位到 Key
随时吊销 Key 泄露或越权可即时吊销 不波及厂商 Key
对保险这类多系统共用 AI 能力的企业,虚拟 Key 是"最小授权 + 可追溯"的基础:核心系统、报表系统、客服系统各发一个 Key,互不串,成本也能按 Key 拆。厂商 Master Key 只放在网关的 Secret 里。
虚拟 Key 是"给用户用的假 Key",背后映射真实厂商 Key。作用是密钥隔离、按 Key 计费和配额、按团队发放、可随时吊销——让厂商 Key 不落业务侧,泄露了也只吊销虚拟 Key。
① 虚拟 Key 不是"多一层加密",它不提高模型效果 ,只是治理手段。② 如果所有业务都用同一个虚拟 Key,就丧失了"按 Key 拆分成本/定位问题"的价值——要按团队/应用粒度发。③ 吊销虚拟 Key 不会吊销厂商 Key,但吊销厂商 Key 会让所有虚拟 Key 失效。
三、预算(Budget)与配额(Quota / Rate Limit)
3.1 预算
预算是钱/Token 的上限 ,可设在不同粒度:
Key 预算 :单个虚拟 Key 的总额度(如每月 $50)。
用户/团队预算 :某团队一个月能花多少。
项目预算 :某项目周期内额度(见 3.4)。
预算超限后,请求被拒(返回 429 / budget exceeded),避免"一个失控的调用把整月额度刷爆"。
3.2 速率配额(Rate Limit / RPM-TPM)
RPM (Requests Per Minute):每分钟请求数上限。
TPM (Tokens Per Minute):每分钟 Token 数上限。
可防止单一 Key 把厂商限速打满,影响其他业务。
3.3 模型级白名单
每个虚拟 Key 可限制只能用哪些模型(如只准用便宜的 gpt-4o-mini,不准用贵的 o1)。这是"成本护栏"的控制点。
保险企业最怕"一个新人写错循环,半夜把调用量跑飞"。预算 + RPM/TPM + 模型白名单三件套,能让平台方把爆炸半径控制在单个 Key 内。配合告警(预算用到 80% 就报警),是交付时的硬性要求。
预算管"花多少钱/多少 Token"的上限,配额管理"每分钟请求/Token 数"。两者配合模型白名单,构成成本护栏。超限直接拒,避免单点失控拖垮全局额度。
① 预算是累计/周期 概念,限速是瞬时 概念,别混。② 预算建议设多级:Key 级 + 团队级,单层容易被"合谋刷爆"。③ 默认不报警只拒绝,业务侧会"莫名其妙失败",一定要配预算水位告警。
四、多租户(Multi-tenant)与项目级成本
4.1 多租户模型
LiteLLM 用 team / organization 维度组织租户。不同团队是不同租户,各自有 Key、预算、模型权限;平台方在后台统一看总成本和各租户分布。
4.2 项目级成本(Project / Tag)
每次请求可带 metadata={"project":"claims-extract"} 等标签。
Proxy 按标签聚合成项目级成本报表 :哪个项目花了多少、调了哪些模型。
这是"AI 成本内部结算/Chargeback"的基础——IT 部门能跟业务线算账。
4.3 成本数据从哪里来
Proxy 把每次调用的 token 用量、模型、耗时、Key/团队/项目写到数据库(Postgres/MySQL)或日志/BI 。LiteLLM 提供 /spend 接口和 Daily Spend 报表做查询。
对医疗保险公司,多租户很自然:理赔、核保、客服是不同的"租户团队",要分别看 AI 支出、分别设预算。项目级成本让 CFO 能看到"理赔自动化这个 AI 项目本月花 ¥X,带来 ¥Y 节省"——这是说服管理层持续投入的关键证据。
多租户=按 team/organization 隔离不同团队;项目级成本=给每次请求打 project 标签,后端聚合成报表。两者让成本可拆分、可结算。成本数据来自 Proxy 落库 + Spend 报表。
① 多租户隔离是逻辑隔离 (同库不同行),不是物理隔离;要严格隔离得上独立部署/独立库。② 项目标签是调用方自己传的 ,可被伪造——结算前要做可信来源校验。③ 成本聚合依赖 Proxy 落库,数据库挂了成本数据就没了,要配持久化和备份。
五、管理界面(Proxy UI / Spend Dashboard)
5.1 提供什么
Key 管理 UI :可视创建/吊销虚拟 Key、设预算。
Daily Spend 报表 :按天、按 Key、按模型看花费。
请求日志 :看每次调用谁、用什么模型、花多少、成功失败。
User / Team 管理 :在多租户场景分配角色。
5.2 工程价值
没有 UI 时,运营/财务查成本得登数据库跑 SQL;有 UI 后,非技术人员也能自助看。交付企业平台时,这直接关系到"甲方能不能自己用起来"。
交付保险客户时,对方运营不会写 SQL。一个能自助看"本月 AI 花费 Top 5 业务线"的界面,比十页技术文档更能证明平台价值。UI 不是锦上添花,是交付验收项。
LiteLLM 的管理界面提供 Key 管理、成本报表、请求日志、租户管理,让非技术人员也能自助运营。对企业交付,UI 是验收项,不是可有可无。
① UI 的访问权限要单独管控(它本身也是敏感入口),别让所有人都能吊销 Key。② 报表数据来自 Proxy 落库,库延迟/故障会让 UI 显示不准,要理解"UI 只是数据库的视图"。
六、LiteLLM Proxy 的部署形态
6.1 部署方式
方式 适用 注意
Docker 单容器 起步、PoC、小团队 配置用 env / yaml,状态落库
Docker Compose 代理 + 数据库一起起 适合单机演示
K8s(Helm) 生产多副本、高可用 网关本身要无状态 + 水平扩展(D7 讲)
6.2 配置要点
config.yaml :配置模型列表、路由、默认参数。
环境变量 / Secret :厂商 Master Key、数据库密码放 Secret,不放明文。
数据库 :用 Postgres 存 Key、预算、Spend(生产建议独立、有备)。
回调(Callbacks) :把日志/成本推到 Kafka / Datadog / 自研平台。
网关是"所有 AI 流量咽喉",必须高可用:K8s 多副本 + 无状态 + 数据库独立。单点部署网关一旦挂,全公司 AI 能力全瘫。这一点在 D6/D7 的部署设计里要体现。
Proxy 可 Docker 单容器、Compose、或 K8s(Helm) 部署。生产要 K8s 多副本无状态 + 独立数据库。配置用 yaml,密钥用 Secret,日志靠回调外推。
① 网关必须高可用 ,它是单点咽喉,挂了全公司 AI 停。单机 Docker 只适合 PoC。② 数据库是网关的"记忆",Key/预算都在里面,库没了治理就没了,要独立部署 + 备份。③ 网关本身无状态才好水平扩展,别把会话状态存在网关本地。
七、与 Spring AI 的集成方式
7.1 集成思路
Spring AI 的 OpenAiChatModel(或兼容 OpenAI 的客户端)只要把 base-url 指向 LiteLLM Proxy 地址、把 api-key 填成虚拟 Key,就能无缝调用。对 Java 业务代码而言,背后是 LiteLLM 还是真 OpenAI 完全透明。
# Spring AI 配置示例(application.yml)
spring:
ai:
openai:
base-url: http://litellm-proxy:4000/v1 # 指向 LiteLLM 代理
api-key: sk-virtual-xxxx # 虚拟 Key
chat:
options:
model: gpt-4o-mini
7.2 分层职责
层 职责
Java 业务 / Spring AI 业务编排、Prompt、工具调用、重试
LiteLLM Proxy 统一格式、虚拟 Key、预算、多租户、成本
厂商模型 实际推理
这是 Java 候选人最该讲清的:LiteLLM 是"平台基础设施层",Spring AI 是"应用开发框架层"。治理放网关、业务放应用,职责清晰,出问题各自负责。不要为了"显得自研"把预算逻辑写进 Java 代码——那是反模式。
Spring AI 把 base-url 指向 LiteLLM Proxy、api-key 填虚拟 Key 即可。分层:Java 管业务,LiteLLM 管治理,厂商管推理。治理别写进业务代码。
① 不要把预算/Key 校验逻辑写进 Spring AI 业务代码——那是网关该干的,重复实现易不一致。② 如果 Proxy 挂了,Spring AI 的所有调用都失败,要在应用层配降级(换直连/兜底模型/人工),不能让业务卡死。③ 两个 OpenAI 兼容层叠在一起,报错栈会变长,要统一日志链路追踪。
八、Build vs Buy 决策框架总览
8.1 本质问题
"自研 Gateway(D4 讲的那种)还是直接用 LiteLLM(买/用开源)?"这是一个经典的 Build vs Buy 决策。框架不是二选一,而是用一组维度打分。
8.2 评估维度
维度 自研(Build) 直接用 LiteLLM(Buy)
启动速度 慢(从零造) 快(开箱即用)
定制深度 任意定制(内部鉴权/特殊路由) 受限于其扩展点
维护成本 自己养团队 社区维护,跟版本
可控性/合规 完全可控,数据不出内网 需评估开源协议与数据流向
企业治理能力 要自己实现 Key/预算/租户 原生提供
决策要落到"我们的情况"。保险金融客户往往要求:① 数据不出内网(LiteLLM 可私有部署,满足);② 特殊合规审计(可能要自研补一层);③ 已有 K8s/Java 体系(LiteLLM 是 Python,要评估团队能否运维)。不要背结论,要背"按维度评估"的框架。
Build vs Buy 不是站队,是按维度(速度/定制/维护/合规/治理能力)打分。金融场景重点看数据不出网、合规审计、团队能否运维 Python 网关。结论要可辩护。
① 别一上来就说"肯定自研"或"肯定买"——面试官要的是决策过程 ,不是立场。② "Buy 不用维护"是误区:开源也要跟版本、要安全更新、要会排障。③ 合规不是"开源就不合规",LiteLLM 私有部署 + 代码审计可过金融合规,关键是评估动作要做到位。
九、何时选择自研 Gateway(D4 场景)
9.1 适合自研的信号
深度定制路由 :需要按业务语义做复杂路由(如"理赔类走私有模型、营销类走公有模型"的自定义策略),LiteLLM 的路由规则表达不了。
已有统一治理底座 :公司已有 Java 微服务治理体系(Spring Cloud 网关、自研鉴权),再塞个 Python Proxy 反而割裂。
特殊合规/审计 :监管要求调用链路、留痕格式完全自定义,开源产品改不动。
团队能力差补 :核心能力(如私有模型调度)是竞争力,不愿依赖外部。
9.2 自研的成本(要诚实说)
自研意味着你要自己实现:虚拟 Key、预算扣减、配额、多租户、成本落库、UI、高可用——这些 LiteLLM 白送的,你都得造。D4 讲的"自研 Gateway 最小集"就是这部分。
对 Java 老手,自研的诱惑是"我们最熟 Java"。但要算清楚账:LiteLLM 已覆盖的治理能力,自研至少 1-2 人月,且要长期维护。除非有上面那些"LiteLLM 真做不到"的点,否则自研是重复造轮子。
自研适合:深度定制路由、已有 Java 治理底座不想割裂、特殊合规审计、核心能力不愿外包。但要承认成本——Key/预算/租户/UI/高可用都得自己造,和 LiteLLM 重复。
① "我们团队只会 Java"不是自研的好理由——运维一个 Python 网关的门槛远低于自研一套治理的工程量。② 自研很容易"做着做着变成 LiteLLM 山寨版",功能重合度高时要警惕是不是在重复造轮子。③ 自研后没人维护 = 技术债,决策时要写清 ownership。
十、何时选择直接用 LiteLLM
10.1 适合直接用的信号
要快速拿到企业治理能力 :虚拟 Key、预算、多租户、成本报表开箱即用,正是 D5 讲的能力。
模型厂商多、切换频繁 :LiteLLM 统一格式,换厂商不改业务代码(Spring AI 只认一个地址)。
团队小/交付急 :没有余力养一套自研网关。
需求在 LiteLLM 能力边界内 :路由/预算/租户都用标准功能即可满足。
10.2 什么情况会"卡脖子"
若需要 LiteLLM 没有的扩展(如特定内部鉴权协议、私有模型特殊调度),要么用它的 callback/hook 扩展点,要么在它外面再包一层薄适配——而不是推翻重造。
对保险交付项目,90% 的场景 LiteLLM 够用:多租户(理赔/核保/客服)、预算护栏、成本结算、Spring AI 集成都覆盖了。先做"直接用 + 必要扩展",只有真遇到标准能力解决不了的点,才评估局部自研。
直接用适合:要快速拿到治理能力、模型厂商多切换频繁、团队小交付急、需求在 LiteLLM 能力内。遇扩展需求先用它的 hook/callback,别动辄推翻重造。
① "直接用"不等于"零成本"——要会部署、运维、跟版本、读源码排障,团队要有这能力。② 别因为"想显得技术强"而自研,企业交付看的是稳定交付而非炫技。③ 扩展点(callback/hook)能力有限,超出部分要清楚边界,别硬塞。
十一、ADR(架构决策记录)怎么写
11.1 ADR 是什么
ADR(Architecture Decision Record)是记录"为什么做这个架构决策"的轻文档 。它不描述系统怎么搭,而是记录"在 X 背景下,我们决定做 Y,权衡了 Z,后果是 W"。目的是让后人(包括 6 个月后的自己)理解"当时为什么这么选"。
11.2 标准四段结构
段落 回答什么 关键
背景(Context) 面临什么问题 / 约束是什么 写清驱动力:业务、合规、团队、时间
决策(Decision) 我们决定怎么做 一句话结论 + 范围
权衡(Options / Trade-offs) 还考虑过哪些,为什么没选 体现你比较过,不是拍脑袋
后果(Consequences) 选了之后带来什么 正面 + 负面 + 后续动作
ADR 是企业架构师的"基本功"。面试官看你写 ADR,实际在考:你能不能把"自研 vs 用 LiteLLM"这种决策,用可复盘的书面形式讲清楚、讲 defendable。保险/金融客户特别吃这套——他们要审计留痕。
ADR 记"为什么这么选",不是记"系统长啥样"。四段:背景(问题/约束)→ 决策(怎么做)→ 权衡(还考虑过啥、为啥不选)→ 后果(正负影响+后续)。让决策可复盘、可审计。
① ADR 不是设计文档,不写实现细节 ,只写决策与理由。② 漏掉"权衡"段最致命——显得没想过别的方案,决策像拍脑袋。③ "后果"要写负面(技术债/维护成本),只写好处显得不诚实,也利于后人判断是否要推翻。
十二、示例 ADR:是否引入 LiteLLM 作为模型网关
12.1 模板示例
ADR-007 引入 LiteLLM 作为企业模型网关
【背景】
W7 要落地企业 Agent 平台,需统一调用多家模型,并具备虚拟 Key、
预算、多租户与成本结算能力。团队以 Java 为主,交付窗口 2 个月。
【决策】
采用 LiteLLM Proxy 作为模型网关层;Spring AI 通过 OpenAI 兼容
接口对接;厂商 Master Key 存 Secret,业务侧只持虚拟 Key。
【权衡】
- 自研 Gateway:可控性高,但要 1-2 人月并实现全套治理能力,超限。
- 直接用 LiteLLM:开箱治理能力,私有部署满足数据不出网;不足处
用 callback 扩展,不推翻重造。 → 选此项。
- 直连厂商不使用网关:最简单,但无预算/租户/成本,否决。
【后果】
+ 2 周内具备企业治理能力,Spring AI 零改造接多模型。
+ 成本可按团队/项目结算,支撑内部 Chargeback。
- 引入 Python 组件,需建立运维与版本跟进能力。
- 后续若遇标准能力外的定制,需评估 hook 扩展或薄适配层。
写 ADR 时"背景"要落到具体约束(时间/团队/合规),"决策"要可验证,"权衡"要体现你真的比较过自研,"后果"要诚实列负面。这样评审会上没人能一句话推翻你。
示例 ADR 把背景(2 个月窗口、Java 团队)、决策(用 Proxy、Spring AI 对接)、权衡(自研太贵/直连无治理否决)、后果(快但引入 Python 运维)都写清。结构完整、可被挑战。
① 示例里的"2 周/1-2 人月"要基于真实评估,别瞎编数字——评审会被追问。② "后果"里写"引入 Python 运维"是诚实点,漏了会被问"你考虑过运维吗"。③ ADR 要有人审、有版本、能检索,写成一次性 Word 塞网盘就失去意义。
十三、面试达标线①:讲清 LiteLLM 的企业能力
能力 一句话 企业价值
虚拟 Key 给用户假 Key,映射真实厂商 Key 密钥隔离、可吊销、按 Key 拆分
预算 Key/团队/项目级花费上限 防失控刷爆,成本护栏
配额(RPM/TPM) 每分钟请求/Token 限速 防打满厂商限速、互相影响
多租户 team/org 隔离不同团队 理赔/核保/客服分别管控
项目级成本 请求打标签聚合成报表 内部结算 Chargeback、CFO 可见
管理界面 Key/成本/日志可视 非技术人员自助运营、交付验收
核心:LiteLLM 用"虚拟 Key + 预算 + 配额 + 多租户 + 项目成本 + 管理界面"把企业治理能力收口在网关层。对 Java 平台,它是 Spring AI 后面的代理,业务只认一个 OpenAI 兼容地址。
十四、面试达标线②:Build vs Buy 框架 + ADR 结构
Build vs Buy:按 速度/定制/维护/合规/治理能力 维度打分 → 选"直接用 LiteLLM"或"自研 Gateway(D4)"
ADR 四段:背景(Context) → 决策(Decision) → 权衡(Options/Trade-offs) → 后果(Consequences)
Build vs Buy :不是站队,是按维度评估;金融场景重点看数据不出网、合规审计、团队能否运维 Python。
自研信号 :深度定制路由、已有 Java 治理底座、特殊合规、核心能力不愿外包。
直接用信号 :要快速拿治理能力、厂商多切换勤、团队小、需求在能力边界内。
ADR 背景 :写清业务/合规/团队/时间约束,让决策有根。
ADR 决策 :一句话结论 + 范围,可验证。
ADR 权衡 :列出备选方案及否决理由,证明比较过。
ADR 后果 :正面 + 负面 + 后续动作,诚实列技术债。
十五、W7D5 自测清单
能说清 LiteLLM 的两个形态(SDK / Proxy)及各自适用与能力边界。
能讲清虚拟 Key 的原理与企业价值(隔离/配额/可吊销),以及它不提高模型效果。
能区分预算(累计/周期)与配额 RPM/TPM(瞬时),说出三件套成本护栏。
能解释多租户(team/org)与项目级成本(标签聚合)如何支撑内部结算。
能说明管理界面的组成与"为什么 UI 是交付验收项"。
能讲清 LiteLLM Proxy 的部署形态与生产高可用要点(无状态/独立库)。
能写出 Spring AI 对接 LiteLLM 的配置思路(base-url + 虚拟 Key)与分层职责。
能说出 Build vs Buy 的评估维度,且不站队、讲过程。
能区分"何时自研 Gateway(D4)"与"何时直接用 LiteLLM"的信号。
能默写 ADR 四段结构(背景/决策/权衡/后果)并讲清每段关键。
能写出一个完整的"是否引入 LiteLLM"的 ADR 示例要点。
能讲清 Java 候选人在其中如何定位(平台层 vs 应用层职责)。
十六、高频面试题速记卡
Q:LiteLLM 是模型吗?它解决什么问题?
不是模型,是 LLM 网关。统一各家 API 格式 + 提供企业治理(虚拟 Key/预算/多租户/成本)。
Q:虚拟 Key 和厂商 Key 什么关系?
用户持虚拟 Key 调 Proxy,Proxy 用真实 Master Key 调厂商。厂商 Key 不落业务侧,泄露只吊销虚拟 Key。
Q:预算和限速(RPM/TPM)区别?
预算是累计/周期花费上限,限速是每分钟请求/Token 瞬时上限。两者配合模型白名单构成成本护栏。
Q:项目级成本怎么来的?
请求带 project 标签,Proxy 落库后聚合成报表,支撑内部 Chargeback 结算。
Q:Spring AI 怎么接 LiteLLM?
base-url 指向 Proxy 地址、api-key 填虚拟 Key。治理在网关,业务在应用,职责分离。
Q:什么时候该自研 Gateway 而不是用 LiteLLM?
深度定制路由、已有 Java 治理底座不想割裂、特殊合规审计、核心能力不愿外包时。
Q:Build vs Buy 决策该站哪边?
不站队,按速度/定制/维护/合规/治理能力维度评估,结论要可辩护。
Q:ADR 四段是什么?
背景(Context) → 决策(Decision) → 权衡(Options) → 后果(Consequences)。记决策与理由,不是实现细节。
Q:ADR 最容易漏哪段?
"权衡"段——漏了显得拍脑袋没比较;以及"后果"里的负面要诚实写。
Q:网关部署为什么必须高可用?
它是所有 AI 流量咽喉,单点挂了全公司 AI 停。要 K8s 多副本无状态 + 独立数据库。
FDE W7D5 学习手册 · LiteLLM 集成与 Build vs Buy ADR(面试级)· 配合《FDE-W7D5-评测题.md》自测
📌 待查 ★ 重要
★0
📌0