参数
请参阅 插件通用配置 了解所有插件可用的配置选项。
在 API7 企业版(从 3.8.17 开始)中,你应该配置以下参数集之一,但不能同时配置两者:
ruleslimit和time_window和/或instances的任意组合
rules 尚未在 APISIX 中可用。
limit
integer | string
vaild vaule:
大于 0
指定时间间隔内允许消耗的最大 Token 数量。
在 API7 企业版(从 3.8.17 开始)中,此参数还支持字符串数据类型,并允许使用 以美元符号(
$)为前缀的 内置变量。在 APISIX 中,仅支持整数类型。time_window
integer | string
vaild vaule:
大于 0
对应于速率限制
limit的时间间隔,以秒为单位。在 API7 企业版(从 3.8.17 开始)中,此参数还支持字符串数据类型,并允许使用以美元符号(
$)为前缀的 内置变量。在 APISIX 中,仅支持整数类型。show_limit_quota_header
boolean
default:
true如果为 true,则包含速率限制响应头。具体来说,如果未设置
rules,则请求头为:X-AI-RateLimit-Limit显示总配额。X-AI-RateLimit-Remaining显示剩余配额。X-AI-RateLimit-Reset显示距 离计数器重置的秒数。
当设置了rules时,将在X-AI-之后插入一个前缀(后跟连字符)。有关详细信息,请参阅rules.header_prefix。limit_strategy
string
default:
total_tokensvaild vaule:
total_tokens,prompt_tokens,completion_tokens, orexpression应用速率限制的 Token 类型。
total_tokens、prompt_tokens和completion_tokens值在每个模型响应中返回,其中total_tokens是prompt_tokens和completion_tokens的总和。当设置为
expression时,使用cost_expr中定义的自定义 Lua 算术表达式计算限速成本。从 API7 企业版 3.9.8 版本起可用,尚未在 APISIX 中提供。cost_expr
string
vaild vaule:
任意非空字符串(必须是有效的 Lua 算术表达式)
用于动态 Token 成本计算的 Lua 算术表达式。变量从 LLM 提供者的原始 usage 响应字段注入(如
input_tokens、output_tokens、cache_creation_input_tokens)。缺失的变量默认为0。仅允许 math 函数(abs、ceil、floor、max、min)和算术运算符。表达式语法在配置时校验。当limit_strategy为expression时必填,其他情况下不得设置。示例:
input_tokens + cache_creation_input_tokens根据 Anthropic Claude 的缓存感知 Token 用量计算成本。从 API7 企业版 3.9.8 版本起可用,尚未在 APISIX 中提供。
instances
array[object]
LLM 实例速率限制配置。
name
string
required
LLM 服务实例的名称。
limit
integer | string
required
vaild vaule:
大于 0
指定时间间隔内允许消耗的最大 Token 数量。
在 API7 企业版(从 3.8.17 开始)中,此参数还支持字符串数据类型,并允许使用以美元符号(
$)为前缀的 内置变量。在 APISIX 中,仅支持整数类型。time_window
integer | string
required
vaild vaule:
大于 0
对应于速率限制
limit的时间间隔,以秒为单位。在 API7 企业版(从 3.8.17 开始)中,此参数还支持字符串数据类型,并允许使用以美元符号(
$)为前缀的 内置变量。在 APISIX 中,仅支持整数类型。
rejected_code
integer
default:
503vaild vaule:
between 200 and 599 inclusive
当请求超过配额被拒绝时返回的 HTTP 状态码。
rejected_msg
string
vaild vaule:
any non-empty string
当请求超过配额被拒绝时返回的响应体。
policy
string
required
vaild vaule:
local,redis,redis-cluster, orredis-sentinel速率限制计数器的策略。从 3.8.19 版本开始在 API7 企业版中可用。从早期版本升级时,将其设置为
local;现有配置将继续有效。此选项尚未在 APISIX 中可用。设置为
local以将计数器存储在本地内存中。设置为
redis以将计数器存储在 Redis 实例上。设置为
redis-cluster以将计数器存储在 Redis 集群中。设置为
redis-sentinel以将计数器存储在由 Redis Sentinel 管理的 Redis 主节点上,这通过在故障情况下自动将副本提升为主节点来确保高可用性。Redis Sentinel 在不使用 Redis Cluster 时为 Redis 提供高可用性。redis_host
string
Redis 节点的地址。当
policy为redis时必填。redis_port
integer
default:
6379vaild vaule:
大于或等于 1
当
policy为redis时 Redis 节点的端口。redis_username
string
如果使用 Redis ACL,则为 Redis 用户名。如果你使用传统的认证方法
requirepass,则仅配置redis_password。当policy为redis时使用。redis_password
string
当
policy为redis或redis-cluster时 Redis 节点的密码。redis_database
integer
default:
0vaild vaule:
大于或等于 0
当
policy为redis或redis-sentinel时 Redis 中的数据库编号。redis_ssl
boolean
default:
false如果为 true,则当
policy为redis时使用 SSL 连 接到 Redis。redis_ssl_verify
boolean
default:
false如果为 true,则当
policy为redis时验证服务器 SSL 证书。redis_timeout
integer
default:
1000vaild vaule:
大于或等于 1
当
policy为redis或redis-cluster时 Redis 超时值(以毫秒为单位)。redis_cluster_nodes
array[string]
Redis 集群节点列表,至少包含两个地址。当
policy为redis-cluster时必填。redis_cluster_name
string
Redis 集群的名称。当
policy为redis-cluster时必填。redis_cluster_ssl
boolean
default:
false如果为 true,则当
policy为redis-cluster时使用 SSL 连接到 Redis 集群。redis_cluster_ssl_verify
boolean
default:
false如果为 true,则当
policy为redis-cluster时验证服务器 SSL 证书。redis_sentinels
array[object]
Redis Sentinel 节点(主机和端口)的数组。当
policy为redis-sentinel时必填。redis_master_name
string
Sentinel 监控的 Redis 主组名称。当
policy为redis-sentinel时必填。redis_role
string
default:
mastervaild vaule:
masterorslave要连接的 Redis 节点角色。当
policy为redis-sentinel时可配置。设置为master连接到当前 Redis 主节点,设置为slave连接到 Redis 副本。redis_connect_timeout
integer
default:
1000vaild vaule:
大于或等于 1
建立 Redis 节点连接的超时时间(以毫秒为单位)。当
policy为redis-sentinel时可配置。redis_read_timeout
integer
default:
1000vaild vaule:
大于或等于 1
从 Redis 节点读取数据的超时时间(以毫秒为单位)。当
policy为redis-sentinel时可配置。redis_keepalive_timeout
integer
default:
60000vaild vaule:
大于或等于 1
空闲 Redis 连接在连接池中保持存活的时间(以毫秒为单位)。当
policy为redis-sentinel时可配置。sentinel_username
string
用于 Redis Sentinel 实例认证的用户名。当
policy为redis-sentinel时可配置。sentinel_password
string
用于 Redis Sentinel 实例认证的密码。当
policy为redis-sentinel时可配置。allow_degradation
boolean
default:
false如果为 true,则当插件或其依赖项不可用时,允许网关继续处理请求而不使用该插件。