✨ 企业版
谁适合使用企业版?
适用于大规模运行 LiteLLM 的团队(拥有 100 名以上用户或 10 个以上生产环境 AI 用例),且在开源版本基础上需要 SSO、审计日志、细粒度访问控制和专业支持的团队。不确定是否符合条件?请与我们联系。
为什么选择企业版?
LiteLLM 开源版已经涵盖了基础功能——如 OpenAI 兼容网关、虚拟密钥、支出跟踪、预算管理、故障转移和请求/响应日志记录。企业版则增加了大型组织在确保数百名用户和数十个应用程序安全访问 LLM 时所需的控制能力。
| 开源版 | 企业版 | |
|---|---|---|
| 身份验证 | API 密钥 | SSO + SCIM, OIDC/JWT |
| 密钥管理 | 跨 LLM API、MCP 和智能体的虚拟密钥、用户和团队管理 | 组织、组织/团队管理员、委派管理员角色 |
| 安全性 | — | 密钥轮换,读取/写入 Secret 管理器 |
| 护栏 | 始终在线 / 基于请求1 | 基于密钥和团队的安全防护(Guardrails) |
| 日志记录 | 请求/响应日志记录,Prometheus 指标 | 针对各密钥/团队的路由至 Langfuse、Langsmith、Arize 等。管理操作日志 |
| 部署 | 单区域代理 | 多区域架构控制平面 |
1 开源版防护框架支持自定义防护以及 Presidio(PII 屏蔽)。多个内置回调集成——包括 llmguard_moderations、llamaguard_moderations、hide_secrets、openai_moderations、google_text_moderation、lakera_prompt_injection 和 aporia_prompt_injection——需要 LiteLLM 企业版许可证。
企业版核心功能
安全与访问控制
- 管理界面 SSO – 支持 Okta、Azure AD、Google Workspace 及任何 OIDC/SAML 提供商
- 基于 JWT 的认证 – 使用身份提供商的令牌对请求进行认证
- 带保留策略的审计日志 – 追踪所有管理操作和密钥级变更
- 基于角色的访问控制 – 支持组织、团队和用户角色
- 公共与私有路由控制 – 限制管理路由,缩小受攻击面
- 基于 IP 地址的访问控制列表 – 将代理访问限制在特定的 CIDR 范围内
- 密钥轮换 – 自动化虚拟密钥的轮换
- Secret 管理器 – 支持 AWS KMS、AWS Secrets Manager、Azure Key Vault、Google KMS、Google Secret Manager、HashiCorp Vault、CyberArk 或自定义 Secret 管理器
- AI Hub – 向用户展示可用模型和智能体的品牌化公共页面
治理与成本控制
- 多租户架构 – 组织 → 团队 → 项目 → 密钥
- 项目管理 – 按应用或用例分组密钥,并设置预算、所有者和独立的支出跟踪
- 基于标签的预算 – 按自定义标签进行预算和支出跟踪
- 每个虚拟密钥的特定模型预算 – 为每个模型、每个密钥设置不同的限制
- 临时预算增加 – 有时间限制的额度提升,无需永久性更改
- 预算超支预警邮件 – 在达到硬性限制前向团队发出警告
- 生成支出报告 – 以编程方式获取按密钥/团队/标签/模型分类的支出数据
可观测性与合规性
- 基于团队的日志记录 – 将每个团队的日志路由至其专属的 Langfuse 项目或回调
- 按团队禁用日志记录 – 符合 GDPR 的团队级选择退出功能
- 日志导出至 GCS / Azure Blob – 用于合规性的持久存储
- 基于密钥/团队的防护 – 秘密内容屏蔽、内容审核、关键词封禁
- 强制要求参数 – 拒绝缺少必要元数据的请求
运维与品牌化
- 自定义 Swagger 品牌 – 设置您的标题、描述和过滤后的路由
- 自定义邮件品牌 – 在系统邮件中使用您的 Logo 和配色方案
- 最大请求/响应大小限制 – 防止代理遭受失控载荷的影响
- 团队管理模型 – 允许团队自行配置密钥和微调模型
项目
项目允许您按应用或用例对虚拟密钥进行分组。每个项目都有自己的预算、所有者、速率限制和独立的支出视图——当一个团队运行多个应用并需要按应用独立报告时非常有用。
- 按应用、环境或客户分组密钥
- 每个项目的预算、速率限制和模型白名单
- 专属所有者和支出仪表板
- 适用于组织、团队和标签
部署选项
自托管
在您自己的基础设施上部署我们的 Docker 镜像(或从 pip 包构建)。我们提供一个许可证密钥来解锁上述企业功能,并提供专门的支持渠道。
LITELLM_LICENSE="eyJ..."
数据不会离开您的环境。 可通过 AWS 和 Azure Marketplace 进行采购。
价格取决于您的部署规模——联系我们进行评估。
LiteLLM 云托管
我们运行代理服务;您专注于您的产品。
专业支持
随着 LiteLLM 的发展,现有的专业支持模式已不再适应我们的规模。我们将转向一种新的模式,旨在提供清晰、可预测的沟通机制,明确客户何时可以获得支持和变更通知。以下所描述的模式即将弃用,我们将在未来几周内敲定新系统详情并予以公告。
每个企业版许可证都包含:一个专门的 Slack/Teams 频道,供我们的工程团队提供集成、部署和提供商故障排查支持。
| 严重程度 | 响应 SLA |
|---|---|
| Sev 0 — 100% 生产流量失败 | 1 小时 |
| Sev 1 — 部分生产影响 | 6 小时 |
| Sev 2–3 — 安装问题,非紧急漏洞 | 24 小时(周一至周六,太平洋时间上午 7 点至下午 7 点) |
| 安全补丁 | 72 小时 |
可应要求提供自定义 SLA。
公共 AI Hub
为用户分享包含可用模型、MCP、智能体和技能的公共页面
机密管理器
LiteLLM 企业版可与以下 Secret 管理器集成
- AWS KMS
- AWS Secrets Manager
- Azure Key Vault
- Google KMS
- Google Secret Manager
- HashiCorp Vault
- CyberArk
- 自定义 Secret Manager
查看 Secret 管理器概览 以了解设置。
企业功能参考
本页面的其余部分是完整的功能参考——包含各项企业功能的配置片段和示例。
💸 支出跟踪
查看按标签分类的支出
/spend/tags 请求格式
curl -X GET "http://0.0.0.0:4000/spend/tags" \
-H "Authorization: Bearer sk-1234"
/spend/tags 响应格式
[
{
"individual_request_tag": "model-anthropic-claude-v2.1",
"log_count": 6,
"total_spend": 0.000672
},
{
"individual_request_tag": "app-ishaan-local",
"log_count": 4,
"total_spend": 0.000448
},
{
"individual_request_tag": "app-ishaan-prod",
"log_count": 2,
"total_spend": 0.000224
}
]
如需全面的支出跟踪功能(包括预算、警报和详细分析),请查看 支出跟踪。
封禁网络爬虫
要禁止网络爬虫索引代理服务器端点,请在 litellm_config.yaml 文件中将 block_robots 设置为 true。
general_settings:
block_robots: true
工作原理
启用此功能后,/robots.txt 端点将返回 200 状态码及以下内容
User-agent: *
Disallow: /
LLM 请求的必需参数
当您希望强制所有请求包含特定参数时使用。例如,您要求所有请求必须包含 user 和 ["metadata"]["generation_name"] 参数。
- 在配置中设置
- 在密钥上设置
第 1 步 在 config.yaml 中定义您希望强制执行的所有参数
这意味着 ["user"] 和 ["metadata"]["generation_name"] 在所有发送至 LiteLLM 的 LLM 请求中都是必需的
general_settings:
master_key: sk-1234
enforced_params:
- user
- metadata.generation_name
curl -L -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"enforced_params": ["user", "metadata.generation_name"]
}'
第 2 步 验证是否生效
- 无效请求(未传递 `user`)
- 无效请求(未传递 `metadata`)
- 有效请求
curl --location 'https://:4000/chat/completions' \
--header 'Authorization: Bearer sk-5fmYeaUEbAMpwBNT-QpxyA' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "hi"
}
]
}'
预期响应
{"error":{"message":"Authentication Error, BadRequest please pass param=user in request body. This is a required param","type":"auth_error","param":"None","code":401}}%
curl --location 'https://:4000/chat/completions' \
--header 'Authorization: Bearer sk-5fmYeaUEbAMpwBNT-QpxyA' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"user": "gm",
"messages": [
{
"role": "user",
"content": "hi"
}
],
"metadata": {}
}'
预期响应
{"error":{"message":"Authentication Error, BadRequest please pass param=[metadata][generation_name] in request body. This is a required param","type":"auth_error","param":"None","code":401}}%
curl --location 'https://:4000/chat/completions' \
--header 'Authorization: Bearer sk-5fmYeaUEbAMpwBNT-QpxyA' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"user": "gm",
"messages": [
{
"role": "user",
"content": "hi"
}
],
"metadata": {"generation_name": "prod-app"}
}'
预期响应
{"id":"chatcmpl-9XALnHqkCBMBKrOx7Abg0hURHqYtY","choices":[{"finish_reason":"stop","index":0,"message":{"content":"Hello! How can I assist you today?","role":"assistant"}}],"created":1717691639,"model":"gpt-3.5-turbo-0125","object":"chat.completion","system_fingerprint":null,"usage":{"completion_tokens":9,"prompt_tokens":8,"total_tokens":17}}%
控制可用公共/私有路由
请参阅 控制公共与私有路由 以获取关于配置公共路由、仅限管理员路由、允许路由和通配符模式的详细文档。
防护措施 - 秘密内容检测/屏蔽
❓ 使用此功能可屏蔽(REDACT)发送到 LLM 的请求中的 API 密钥和机密信息。
例如,如果您想在以下请求中屏蔽 OPENAI_API_KEY 的值
传入请求
{
"messages": [
{
"role": "user",
"content": "Hey, how's it going, API_KEY = 'sk_1234567890abcdef'",
}
]
}
审核后的请求
{
"messages": [
{
"role": "user",
"content": "Hey, how's it going, API_KEY = '[REDACTED]'",
}
]
}
用法
第 1 步 将此内容添加到您的 config.yaml 中
litellm_settings:
callbacks: ["hide_secrets"]
第 2 步 使用 --detailed_debug 运行 litellm 代理以查看服务器日志
litellm --config config.yaml --detailed_debug
第 3 步 用请求进行测试
发送此请求
curl --location 'https://:4000/chat/completions' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"model": "llama3",
"messages": [
{
"role": "user",
"content": "what is the value of my open ai key? openai_api_key=sk-1234998222"
}
]
}'
预期在您的 litellm 服务器日志中看到以下警告
LiteLLM Proxy:WARNING: secret_detection.py:88 - Detected and redacted secrets in message: ['Secret Keyword']
您还可以查看从 litellm 发送给 API 提供商的原始请求
POST Request Sent from LiteLLM:
curl -X POST \
https://api.groq.com/openai/v1/ \
-H 'Authorization: Bearer gsk_mySVchjY********************************************' \
-d {
"model": "llama3-8b-8192",
"messages": [
{
"role": "user",
"content": "what is the time today, openai_api_key=[REDACTED]"
}
],
"stream": false,
"extra_body": {}
}
按 API 密钥开关秘密内容检测
❓ 当您需要针对不同 API 密钥开启或关闭防护措施时使用此功能
第 1 步 创建关闭 hide_secrets 的密钥
👉 使用 /key/generate 或 /key/update 设置 "permissions": {"hide_secrets": false}
这意味着对于来自此 API 密钥的所有请求,hide_secrets 防护措施均已关闭
- /key/generate
- /key/update
curl --location 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"permissions": {"hide_secrets": false}
}'
# {"permissions":{"hide_secrets":false},"key":"sk-jNm1Zar7XfNdZXp49Z1kSQ"}
curl --location 'http://0.0.0.0:4000/key/update' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"key": "sk-jNm1Zar7XfNdZXp49Z1kSQ",
"permissions": {"hide_secrets": false}
}'
# {"permissions":{"hide_secrets":false},"key":"sk-jNm1Zar7XfNdZXp49Z1kSQ"}
步骤 2 使用新的 Key 进行测试
curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Authorization: Bearer sk-jNm1Zar7XfNdZXp49Z1kSQ' \
--header 'Content-Type: application/json' \
--data '{
"model": "llama3",
"messages": [
{
"role": "user",
"content": "does my openai key look well formatted OpenAI_API_KEY=sk-1234777"
}
]
}'
预期在您的回调服务器日志中看到 sk-1234777。
此请求未运行 hide_secrets 防护检查,因为 API 密钥 sk-jNm1Zar7XfNdZXp49Z1kSQ 具有 "permissions": {"hide_secrets": false} 配置
内容审核
使用 LLM Guard 进行内容审核
在环境中设置 LLM Guard API 基地址
LLM_GUARD_API_BASE = "http://0.0.0.0:8192" # deployed llm guard api
添加 llmguard_moderations 作为回调
litellm_settings:
callbacks: ["llmguard_moderations"]
现在您可以轻松进行测试
-
进行一次常规的 /chat/completion 调用
-
检查代理日志中是否有任何带有
LLM Guard:的语句
预期结果
LLM Guard: Received response - {"sanitized_prompt": "hello world", "is_valid": true, "scanners": { "Regex": 0.0 }}
按密钥开启/关闭
1. 更新配置
litellm_settings:
callbacks: ["llmguard_moderations"]
llm_guard_mode: "key-specific"
2. 创建新密钥
curl --location 'https://:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"models": ["fake-openai-endpoint"],
"permissions": {
"enable_llm_guard_check": true # 👈 KEY CHANGE
}
}'
# Returns {..'key': 'my-new-key'}
3. 测试它!
curl --location 'http://0.0.0.0:4000/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer my-new-key' \ # 👈 TEST KEY
--data '{"model": "fake-openai-endpoint", "messages": [
{"role": "system", "content": "Be helpful"},
{"role": "user", "content": "What do you know?"}
]
}'
按请求开启/关闭
1. 更新配置
litellm_settings:
callbacks: ["llmguard_moderations"]
llm_guard_mode: "request-specific"
2. 创建新密钥
curl --location 'https://:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"models": ["fake-openai-endpoint"],
}'
# Returns {..'key': 'my-new-key'}
3. 测试它!
- OpenAI Python v1.0.0+
- Curl 请求
import openai
client = openai.OpenAI(
api_key="sk-1234",
base_url="http://0.0.0.0:4000"
)
# request sent to model set on litellm proxy, `litellm --model`
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages = [
{
"role": "user",
"content": "this is a test request, write a short poem"
}
],
extra_body={ # pass in any provider-specific param, if not supported by openai, https://docs.litellm.com.cn/docs/completion/input#provider-specific-params
"metadata": {
"permissions": {
"enable_llm_guard_check": True # 👈 KEY CHANGE
},
}
}
)
print(response)
curl --location 'http://0.0.0.0:4000/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer my-new-key' \ # 👈 TEST KEY
--data '{"model": "fake-openai-endpoint", "messages": [
{"role": "system", "content": "Be helpful"},
{"role": "user", "content": "What do you know?"}
]
}'
使用 LlamaGuard 进行内容审核
目前适用于 Sagemaker 的 LlamaGuard 端点。
如何在 config.yaml 中启用它
litellm_settings:
callbacks: ["llamaguard_moderations"]
llamaguard_model_name: "sagemaker/jumpstart-dft-meta-textgeneration-llama-guard-7b"
确保您的环境中已配置相关密钥,例如:
os.environ["AWS_ACCESS_KEY_ID"] = ""
os.environ["AWS_SECRET_ACCESS_KEY"] = ""
os.environ["AWS_REGION_NAME"] = ""
自定义 LlamaGuard 提示词
要修改 Llama Guard 用于评估的不安全类别,只需创建您自己版本的 类别列表
将您的代理指向它
callbacks: ["llamaguard_moderations"]
llamaguard_model_name: "sagemaker/jumpstart-dft-meta-textgeneration-llama-guard-7b"
llamaguard_unsafe_content_categories: /path/to/llamaguard_prompt.txt
使用 Google 文本审核进行内容审核
要求在您的 .env 中设置 GOOGLE_APPLICATION_CREDENTIALS(与 VertexAI 相同)。
如何在 config.yaml 中启用它
litellm_settings:
callbacks: ["google_text_moderation"]
设置自定义置信度阈值
Google 审核会针对多个类别检查文本。来源
设置全局默认置信度阈值
默认设置为 0.8。但您可以在 config.yaml 中覆盖此设置。
litellm_settings:
google_moderation_confidence_threshold: 0.4
设置特定类别的置信度阈值
在 config.yaml 中设置特定类别的置信度阈值。如果未设置,将使用全局默认值。
litellm_settings:
toxic_confidence_threshold: 0.1
以下是各类别特定值
| 类别 | 设置 |
|---|---|
| "toxic" (毒性) | toxic_confidence_threshold: 0.1 |
| "insult" (侮辱) | insult_confidence_threshold: 0.1 |
| "profanity" (亵渎) | profanity_confidence_threshold: 0.1 |
| "derogatory" (贬损) | derogatory_confidence_threshold: 0.1 |
| "sexual" (性内容) | sexual_confidence_threshold: 0.1 |
| "death_harm_and_tragedy" (死亡、伤害与悲剧) | death_harm_and_tragedy_threshold: 0.1 |
| "violent" (暴力) | violent_threshold: 0.1 |
| "firearms_and_weapons" (枪支与武器) | firearms_and_weapons_threshold: 0.1 |
| "public_safety" (公共安全) | public_safety_threshold: 0.1 |
| "health" (健康) | health_threshold: 0.1 |
| "religion_and_belief" (宗教与信仰) | religion_and_belief_threshold: 0.1 |
| "illicit_drugs" (非法药物) | illicit_drugs_threshold: 0.1 |
| "war_and_conflict" (战争与冲突) | war_and_conflict_threshold: 0.1 |
| "politics" (政治) | politics_threshold: 0.1 |
| "finance" (金融) | finance_threshold: 0.1 |
| "legal" (法律) | legal_threshold: 0.1 |
Swagger 文档 - 自定义路由 + 品牌化
需要 LiteLLM 企业版密钥才能使用。点击此处获取 2 周免费许可证
在您的环境中设置 LiteLLM 密钥
LITELLM_LICENSE=""
自定义标题 + 描述
在您的环境中设置
DOCS_TITLE="TotalGPT"
DOCS_DESCRIPTION="Sample Company Description"
自定义路由
向用户隐藏管理路由。
在您的环境中设置
DOCS_FILTERED="True" # only shows openai routes to user
启用被封禁用户列表
如果使用此用户 ID 向代理发起任何调用,它将被拒绝——如果您想让用户选择退出 AI 功能,请使用此项
litellm_settings:
callbacks: ["blocked_user_check"]
blocked_user_list: ["user_id_1", "user_id_2", ...] # can also be a .txt filepath e.g. `/relative/path/blocked_list.txt`
如何测试
- OpenAI Python v1.0.0+
- Curl 请求
将 user=<user_id> 设置为可能已选择退出的用户的用户 ID。
import openai
client = openai.OpenAI(
api_key="sk-1234",
base_url="http://0.0.0.0:4000"
)
# request sent to model set on litellm proxy, `litellm --model`
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages = [
{
"role": "user",
"content": "this is a test request, write a short poem"
}
],
user="user_id_1"
)
print(response)
curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
],
"user": "user_id_1" # this is also an openai supported param
}
'
通过 API 使用
封禁某客户 ID 的所有调用
curl -X POST "http://0.0.0.0:4000/customer/block" \
-H "Authorization: Bearer sk-1234" \
-D '{
"user_ids": [<user_id>, ...]
}'
解除某用户 ID 的调用封禁
curl -X POST "http://0.0.0.0:4000/user/unblock" \
-H "Authorization: Bearer sk-1234" \
-D '{
"user_ids": [<user_id>, ...]
}'
启用关键词封禁列表
litellm_settings:
callbacks: ["banned_keywords"]
banned_keywords_list: ["hello"] # can also be a .txt file - e.g.: `/relative/path/keywords.txt`
测试此项
curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Hello world!"
}
]
}
'
设置 LiteLLM 代理的最大请求/响应大小
如果您想为代理服务器设置最大请求/响应大小,请使用此项。如果请求大小超过限制,它将被拒绝并触发 Slack 警报
用法
第 1 步。 设置 max_request_size_mb 和 max_response_size_mb
在此示例中,我们为 max_request_size_mb 设置了一个非常低的限制,预期请求会被拒绝
在生产环境中,我们建议将 max_request_size_mb / max_response_size_mb 设置为约 32 MB
model_list:
- model_name: fake-openai-endpoint
litellm_params:
model: openai/fake
api_key: fake-key
api_base: https://exampleopenaiendpoint-production.up.railway.app/
general_settings:
master_key: sk-1234
# Security controls
max_request_size_mb: 0.000000001 # 👈 Key Change - Max Request Size in MB. Set this very low for testing
max_response_size_mb: 100 # 👈 Key Change - Max Response Size in MB
第 2 步。 使用 /chat/completions 请求进行测试
curl https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "fake-openai-endpoint",
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'
来自请求的预期响应 我们预期此请求会失败,因为请求大小超过了 max_request_size_mb
{"error":{"message":"Request size is too large. Request size is 0.0001125335693359375 MB. Max size is 1e-09 MB","type":"bad_request_error","param":"content-length","code":400}}
常见问题 (FAQ)
如何设置并验证企业版许可证?
-
将许可证密钥添加到您的环境中
LITELLM_LICENSE="eyJ..." -
重启 LiteLLM 代理。
-
打开
http://<您的代理主机>:<端口>/— Swagger 页面应在描述中显示 "Enterprise Edition"。如果没有显示,请确认密钥正确且未过期,并确保代理已完全重启。
我在哪里可以阅读更多关于数据安全与合规性的内容?
定价结构如何?
定价基于使用量。联系我们获取为您团队定制的报价。
如何获取新模型的零日支持而无需重启?
使用 自动同步新模型 功能,可按需或按计划从 GitHub 获取最新的定价和上下文窗口数据——无需重启。使用 POST /reload/model_cost_map 触发手动同步,或使用 POST /schedule/model_cost_map_reload?hours=6 安排定期同步。