参数
有关所有插件均可使用的配置项,请参阅插件通用配置。
在 API7 企业版 3.8.17 及更高版本和 Apache APISIX 3.16.0 及更高版本中,请配置以下两组参数之一,不要同时配置:
ruleslimit、time_window和/或instances的任意组合
limit
有效值:
大于 0
指定时间间隔内允许消耗的最大 Token 数量。
在 API7 企业版(自 3.8.17 起)和 APISIX(自 3.16.0 起)中,此参数还支持字符串类型,并允许使用以美元符号(
$)为前缀的内置变量。较早的 APISIX 版本仅支持整数类型。time_window
有效值:
大于 0
对应于速率限制
limit的时间间隔,以秒为单位。在 API7 企业版(自 3.8.17 起)和 APISIX(自 3.16.0 起)中,此参数还支持字符串类型,并允许使用以美元符号(
$)为前缀的内置变量。较早的 APISIX 版本仅支持整数类型。show_limit_quota_header
如果为 true,则包含速率限制响应头。具体而言,使用
limit/time_window或instances时,响应头以实例名称作为后缀:X-AI-RateLimit-Limit-{name}显示总配额。X-AI-RateLimit-Remaining-{name}显示剩余配额。X-AI-RateLimit-Reset-{name}显示计数器重置前的剩余秒数。
设置rules后,响应头改用前缀。有关详细信息,请参阅rules.header_prefix。limit_strategy
有效值:
total_tokens、prompt_tokens、completion_tokens或expression应用速率限制的 Token 类型。
total_tokens、prompt_tokens和completion_tokens值在每个模型响应中返回,其中total_tokens是prompt_tokens和completion_tokens的总和。当设置为
expression时,使用cost_expr中定义的自定义 Lua 算术表达式计算限速成本。自 API7 企业版 3.9.8 和 APISIX 3.17.0 起可用。cost_expr
有效值:
任意非空字符串(必须是有效的 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 3.17.0 起可用。
instances
LLM 实例速率限制配置。
rejected_code
有效值:
介于 200 和 599 之间(含边界值)
当请求超过配额被拒绝时返回的 HTTP 状态码。
rejected_msg
有效值:
任意非空字符串
当请求超过配额被拒绝时返回的响应体。
policy
有效值:
local、redis、redis-cluster或redis-sentinel速率限制计数器的策略。自 API7 企业版 3.8.19 起可用,APISIX 暂不支持。
设置为
local以将计数器存储在本地内存中。设置为
redis以将计数器存储在 Redis 实例上。设置为
redis-cluster以将计数器存储在 Redis 集群中。设置为
redis-sentinel以将计数器存储在由 Redis Sentinel 管理的 Redis 主节点上,这通过在故障情况下自动将副本提升为主节点来确保高可用性。Redis Sentinel 在不使用 Redis Cluster 时为 Redis 提供高可用性。redis_host
Redis 节点的地址。当
policy为redis时必填。redis_port
有效值:
大于或等于 1
当
policy为redis时 Redis 节点的端口。redis_username