Files
higress/plugins/wasm-go/extensions/ai-quota/README.md
2024-09-12 21:48:40 +08:00

3.7 KiB
Raw Blame History

title, keywords, description
title keywords description
AI 配额管理
AI网关
AI配额
AI 配额管理插件配置参考

功能说明

ai-qutoa 插件实现给特定 consumer 根据分配固定的 quota 进行 quota 策略限流,同时支持 quota 管理能力,包括查询 quota 、刷新 quota、增减 quota。

ai-quota 插件需要配合 认证插件比如 key-authjwt-auth 等插件获取认证身份的 consumer 名称,同时需要配合 ai-statatistics 插件获取 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进行区别限流

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&quota=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可以支持负数则减去对应值。