跳至主要内容

服务账户

如果您想创建不归属于特定用户,而是为生产环境项目创建的虚拟密钥,请使用此功能

为什么要使用服务账户密钥?

  • 防止在删除用户时密钥被删除。
  • 对密钥应用团队限制,而非团队成员限制。

服务账户与常规密钥的区别

功能常规密钥服务账户密钥
user_id可选始终为 null
team_id(团队 ID)可选必需
应用的限制用户 + 团队限制仅限团队限制
用户被删除时是否删除密钥?否 — 保留
元数据中的 service_account_id未设置设置后不可更改
team_member_key_duration继承不继承

预算与限制

服务账户密钥在团队级别应用预算和速率限制,而不是按用户或按密钥成员应用。

  • 在密钥本身上设置 max_budgettpm_limitrpm_limit,或者从团队继承它们。
  • team_member_key_duration(一种控制团队成员密钥有效期的企业功能)适用于服务账户密钥。

用法

使用 /key/service-account/generate 端点生成服务账户密钥。

curl -L -X POST 'https://:4000/key/service-account/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"team_id": "my-unique-team"
}'

service_account_id 字段

您可以选择在 metadata 中提供一个 service_account_id,为密钥赋予一个稳定的、人类可读的标识符

curl -L -X POST 'https://:4000/key/service-account/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"team_id": "my-unique-team",
"metadata": {
"service_account_id": "my-ci-pipeline"
}
}'

不可变性规则 — 一旦设置了 service_account_id,就无法更改

操作结果
覆盖为不同值400 错误
显式设置为 null400 错误
发送 metadata: null(将会清除它)400 错误
在更新时完全省略 metadata安全 — 保留现有值
重新发送相同的值允许(无操作)

示例 - 要求所有服务账户请求包含 user 参数

1. 设置服务账户的配置

如果您想创建仅适用于服务账户密钥的设置,请配置 service_account_settings

general_settings:
service_account_settings:
enforced_params: ["user"] # this means the "user" param is enforced for all requests made through any service account keys

2. 在 LiteLLM Proxy 管理界面创建服务账户密钥

3. 测试服务账户密钥

curl --location 'https://:4000/chat/completions' \
--header 'Authorization: Bearer <sk-your-service-account>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "hello"
}
]
}'

预期响应

{
"error": {
"message": "BadRequest please pass param=user in request body. This is a required param for service account",
"type": "bad_request_error",
"param": "user",
"code": "400"
}
}