内部用户自助服务
允许用户在代理 UI上创建自己的密钥。
- 将具有权限的用户添加到代理上的团队
- UI
- API
转到内部用户
-> +新用户
在 LiteLLM 上创建一个新的内部用户,并为他们分配角色internal_user
。
curl -X POST '<PROXY_BASE_URL>/user/new' \
-H 'Authorization: Bearer <PROXY_MASTER_KEY>' \
-H 'Content-Type: application/json' \
-D '{
"user_email": "krrishdholakia@gmail.com",
"user_role": "internal_user" # 👈 THIS ALLOWS USER TO CREATE/VIEW/DELETE THEIR OWN KEYS + SEE THEIR SPEND
}'
预期响应
{
"user_id": "e9d45c7c-b20b-4ff8-ae76-3f479a7b1d7d", 👈 USE IN STEP 2
"user_email": "<YOUR_USERS_EMAIL>",
"user_role": "internal_user",
...
}
以下是 LiteLLM 内部用户可用的 UI 角色
管理员角色
proxy_admin
: 平台管理员proxy_admin_viewer
: 可以登录,查看所有密钥,查看所有支出。无法创建/删除密钥,添加新用户。
内部用户角色
internal_user
: 可以登录,查看/创建/删除自己的密钥,查看自己的支出。无法添加新用户。internal_user_viewer
: 可以登录,查看自己的密钥,查看自己的支出。无法创建/删除密钥,添加新用户。
- 与用户分享邀请链接
- UI
- API
将邀请链接复制给用户
curl -X POST '<PROXY_BASE_URL>/invitation/new' \
-H 'Authorization: Bearer <PROXY_MASTER_KEY>' \
-H 'Content-Type: application/json' \
-D '{
"user_id": "e9d45c7c-b20b..." # 👈 USER ID FROM STEP 1
}'
预期响应
{
"id": "a2f0918f-43b0-4770-a664-96ddd192966e",
"user_id": "e9d45c7c-b20b..",
"is_accepted": false,
"accepted_at": null,
"expires_at": "2024-06-13T00:02:16.454000Z", # 👈 VALID FOR 7d
"created_at": "2024-06-06T00:02:16.454000Z",
"created_by": "116544810872468347480",
"updated_at": "2024-06-06T00:02:16.454000Z",
"updated_by": "116544810872468347480"
}
邀请链接
http://0.0.0.0:4000/ui/onboarding?id=a2f0918f-43b0-4770-a664-96ddd192966e
# <YOUR_PROXY_BASE_URL>/ui/onboarding?id=<id>
使用电子邮件通知向用户发送入职链接
- 用户通过电子邮件 + 密码进行认证登录
LiteLLM 企业版:启用SSO 登录
- 用户现在可以创建自己的密钥了
允许用户查看使用情况、缓存分析
- 转到内部用户 -> +邀请用户
将他们的角色设置为Admin Viewer
- 这意味着他们只能查看使用情况、缓存分析
- 与用户分享邀请链接
- 用户通过电子邮件 + 密码进行认证登录
- 用户现在可以查看使用情况、缓存分析了
可用角色
以下是 LiteLLM 内部用户可用的 UI 角色
管理员角色
proxy_admin
: 平台管理员proxy_admin_viewer
: 可以登录,查看所有密钥,查看所有支出。无法创建/删除密钥,添加新用户。
内部用户角色
internal_user
: 可以登录,查看/创建/删除自己的密钥,查看自己的支出。无法添加新用户。internal_user_viewer
: 可以登录,查看自己的密钥,查看自己的支出。无法创建/删除密钥,添加新用户。
自动将 SSO 用户添加到团队
这将指导您设置 Okta、Google SSO 的 SSO 自动添加
Okta、Google SSO
- 指定包含用户所属团队 ID 的 JWT 字段。
general_settings:
master_key: sk-1234
litellm_jwtauth:
team_ids_jwt_field: "groups" # 👈 CAN BE ANY FIELD
这是假设您的 SSO 令牌看起来像这样。如果您需要检查 LiteLLM 从 SSO 提供商接收到的 JWT 字段,请按照此处的说明进行操作
{
...,
"groups": ["team_id_1", "team_id_2"]
}
- 在 LiteLLM 上创建团队
curl -X POST '<PROXY_BASE_URL>/team/new' \
-H 'Authorization: Bearer <PROXY_MASTER_KEY>' \
-H 'Content-Type: application/json' \
-D '{
"team_alias": "team_1",
"team_id": "team_id_1" # 👈 MUST BE THE SAME AS THE SSO GROUP ID
}'
- 测试 SSO 流程
这是工作原理的演练
Microsoft Entra ID SSO 组分配
请遵循此教程,了解如何使用 Microsoft Entra ID 自动将 SSO 用户添加到团队
调试 SSO JWT 字段
如果您需要检查 LiteLLM 从 SSO 提供商接收到的 JWT 字段,请按照这些说明进行操作。本指南将指导您设置调试回调,以便在 SSO 过程中查看 JWT 数据。
在您的 SSO 提供商中添加
/sso/debug/callback
作为重定向 URL在您的 SSO 提供商设置中,添加以下 URL 作为新的重定向(回调)URL
重定向 URLhttp://<proxy_base_url>/sso/debug/callback
在您的浏览器上导航到调试登录页面
在您的浏览器上导航到以下 URL
要导航到的 URLhttps://<proxy_base_url>/sso/debug/login
这将启动标准的 SSO 流程。您将被重定向到您的 SSO 提供商登录屏幕,成功认证后,您将被重定向回 LiteLLM 的调试回调路由。
- 查看 JWT 字段
重定向后,您应该会看到一个名为“SSO 调试信息”的页面。该页面显示 LiteLLM 从您的 SSO 提供商接收到的 JWT 字段(如上图所示)
高级
设置自定义退出登录 URL
如果您希望用户在点击退出登录时被重定向到特定 URL,请在您的 .env 中设置PROXY_LOGOUT_URL
。
export PROXY_LOGOUT_URL="https://www.google.com"
设置内部用户的最大预算
在内部用户注册时自动为其应用预算。默认情况下,每隔 10 分钟检查一次表格,以便用户重置。要修改此设置,请参见此处
litellm_settings:
max_internal_user_budget: 10
internal_user_budget_duration: "1mo" # reset every month
这为内部用户注册时设置了 10 美元的最大预算。
此预算仅适用于该用户创建的个人密钥 - 在 UI 的默认团队
下可见。
此预算不适用于非默认团队下创建的密钥。
设置团队的最大预算
为新团队设置默认参数
当您将 litellm 连接到您的 SSO 提供商时,litellm 可以自动创建团队。使用此设置来为这些自动创建的团队设置默认的models
、max_budget
、budget_duration
。
工作原理
- 当 litellm 从您的 SSO 提供商获取
groups
时,它会检查相应的 group_id 是否作为team_id
存在于 litellm 中。 - 如果 team_id 不存在,litellm 将使用您设置的默认参数自动创建一个团队。
- 如果 team_id 已存在,litellm 不会对该团队应用任何设置。
用法
litellm_settings:
default_team_params: # Default Params to apply when litellm auto creates a team from SSO IDP provider
max_budget: 100 # Optional[float], optional): $100 budget for the team
budget_duration: 30d # Optional[str], optional): 30 days budget_duration for the team
models: ["gpt-3.5-turbo"] # Optional[List[str]], optional): models to be used by the team
限制用户创建个人密钥
如果您只想让用户在特定团队下创建密钥,这将很有用。
这也将阻止用户在测试密钥聊天面板上使用他们的会话令牌。
👉 请参见此处
自助服务 / SSO 流程的所有设置
litellm_settings:
max_internal_user_budget: 10 # max budget for internal users
internal_user_budget_duration: "1mo" # reset every month
default_internal_user_params: # Default Params used when a new user signs in Via SSO
user_role: "internal_user" # one of "internal_user", "internal_user_viewer", "proxy_admin", "proxy_admin_viewer". New SSO users not in litellm will be created as this user
max_budget: 100 # Optional[float], optional): $100 budget for a new SSO sign in user
budget_duration: 30d # Optional[str], optional): 30 days budget_duration for a new SSO sign in user
models: ["gpt-3.5-turbo"] # Optional[List[str]], optional): models to be used by a new SSO sign in user
default_team_params: # Default Params to apply when litellm auto creates a team from SSO IDP provider
max_budget: 100 # Optional[float], optional): $100 budget for the team
budget_duration: 30d # Optional[str], optional): 30 days budget_duration for the team
models: ["gpt-3.5-turbo"] # Optional[List[str]], optional): models to be used by the team
upperbound_key_generate_params: # Upperbound for /key/generate requests when self-serve flow is on
max_budget: 100 # Optional[float], optional): upperbound of $100, for all /key/generate requests
budget_duration: "10d" # Optional[str], optional): upperbound of 10 days for budget_duration values
duration: "30d" # Optional[str], optional): upperbound of 30 days for all /key/generate requests
max_parallel_requests: 1000 # (Optional[int], optional): Max number of requests that can be made in parallel. Defaults to None.
tpm_limit: 1000 #(Optional[int], optional): Tpm limit. Defaults to None.
rpm_limit: 1000 #(Optional[int], optional): Rpm limit. Defaults to None.
key_generation_settings: # Restricts who can generate keys. [Further docs](./virtual_keys.md#restricting-key-generation)
team_key_generation:
allowed_team_member_roles: ["admin"]
personal_key_generation: # maps to 'Default Team' on UI
allowed_user_roles: ["proxy_admin"]