mirror of
https://github.com/alibaba/higress.git
synced 2026-04-20 19:47:29 +08:00
70 lines
3.7 KiB
Markdown
70 lines
3.7 KiB
Markdown
---
|
||
title: AI 配额管理
|
||
keywords: [ AI网关, AI配额 ]
|
||
description: AI 配额管理插件配置参考
|
||
---
|
||
|
||
## 功能说明
|
||
|
||
`ai-quota` 插件实现给特定 consumer 根据分配固定的 quota 进行 quota 策略限流,同时支持 quota 管理能力,包括查询 quota 、刷新 quota、增减 quota。
|
||
|
||
`ai-quota` 插件需要配合 认证插件比如 `key-auth`、`jwt-auth` 等插件获取认证身份的 consumer 名称,同时需要配合 `ai-statistics` 插件获取 AI Token 统计信息。
|
||
|
||
## 运行属性
|
||
|
||
插件执行阶段:`默认阶段`
|
||
插件执行优先级:`750`
|
||
|
||
## 配置说明
|
||
|
||
| 名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
|
||
|--------------------|-----------------|--------------------------------------| ---- |--------------------------------------------|
|
||
| `redis_key_prefix` | string | 选填 | chat_quota: | qutoa redis key 前缀 |
|
||
| `admin_consumer` | string | 必填 | | 管理 quota 管理身份的 consumer 名称 |
|
||
| `admin_path` | string | 选填 | /quota | 管理 quota 请求 path 前缀 |
|
||
| `redis` | object | 是 | | redis相关配置 |
|
||
|
||
`redis`中每一项的配置字段说明
|
||
|
||
| 配置项 | 类型 | 必填 | 默认值 | 说明 |
|
||
| ------------ | ------ | ---- | ---------------------------------------------------------- | --------------------------- |
|
||
| service_name | string | 必填 | - | redis 服务名称,带服务类型的完整 FQDN 名称,例如 my-redis.dns、redis.my-ns.svc.cluster.local |
|
||
| service_port | int | 否 | 服务类型为固定地址(static service)默认值为80,其他为6379 | 输入redis服务的服务端口 |
|
||
| username | string | 否 | - | redis用户名 |
|
||
| password | string | 否 | - | redis密码 |
|
||
| timeout | int | 否 | 1000 | redis连接超时时间,单位毫秒 |
|
||
|
||
|
||
|
||
## 配置示例
|
||
|
||
### 识别请求参数 apikey,进行区别限流
|
||
```yaml
|
||
redis_key_prefix: "chat_quota:"
|
||
admin_consumer: consumer3
|
||
admin_path: /quota
|
||
redis:
|
||
service_name: redis-service.default.svc.cluster.local
|
||
service_port: 6379
|
||
timeout: 2000
|
||
```
|
||
|
||
|
||
### 刷新 quota
|
||
|
||
如果当前请求 url 的后缀符合 admin_path,例如插件在 example.com/v1/chat/completions 这个路由上生效,那么更新 quota 可以通过
|
||
curl https://example.com/v1/chat/completions/quota/refresh -H "Authorization: Bearer credential3" -d "consumer=consumer1"a=10000"
|
||
|
||
Redis 中 key 为 chat_quota:consumer1 的值就会被刷新为 10000
|
||
|
||
### 查询 quota
|
||
|
||
查询特定用户的 quota 可以通过 curl https://example.com/v1/chat/completions/quota?consumer=consumer1 -H "Authorization: Bearer credential3"
|
||
将返回: {"quota": 10000, "consumer": "consumer1"}
|
||
|
||
### 增减 quota
|
||
|
||
增减特定用户的 quota 可以通过 curl https://example.com/v1/chat/completions/quota/delta -d "consumer=consumer1&value=100" -H "Authorization: Bearer credential3"
|
||
这样 Redis 中 Key 为 chat_quota:consumer1 的值就会增加100,可以支持负数,则减去对应值。
|
||
|