通过云原生API网关实现Token管控

更新时间:

本实验带您体验如何在云上使用云原生API网关创建AI API,基于该AI API搭建完成一个AI应用-聊天机器人,并基于Redis、消费者、插件机制实现Token管控的功能。

场景简介

本实验带您体验如何在云上使用云原生API网关创建AI API,基于该AI API搭建完成一个AI应用-聊天机器人,并基于Redis、消费者、插件机制实现Token管控的功能。

背景知识

本场景主要涉及以下云产品和服务:

前提条件

本实验需要您使用阿里云账号开通本次实操资源,资源按量付费,需要您自行承担本次实操的云资源费用。

重要

如果领取相关云产品免费试用,本实验时长2个小时,预计产生费用为1.62元。如果没有领取相关云产品免费试用,本实验时长2个小时,预计产生费用为6.29元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

进入实操前,请确保阿里云账号满足以下条件:

  • 已通过实名认证并且账户余额充足。

  • 云资源产生的费用需您自行承担,云起实验室不会向您征收额外费用。

  • 所有实验操作将保留至您的账号,请谨慎操作。

  • 实操结束后,您可以选择继续付费保留资源,或参考手册自动/手动释放资源。

创建专有网络VPC和交换机

  1. 在实验室页面右侧的操作区中,我已阅读并同意《阿里云云起实践平台服务协议》,单击开始实操

    image

  2. 登录专有网络管理控制台

  3. 在左侧导航栏中,单击专有网络

    image

  4. 专有网络页⾯,切换⾄华东1(杭州)地域,单击创建专有网络

    image

  5. 创建专有网络页⾯,根据下方说明配置专有网络(VPC)和交换机的参数,未提及的参数保持默认即可,然后单击确定

    配置项

    说明

    专有网络

    地域

    选择华东1(杭州)。

    名称

    自定义名称。

    IPv4网段

    选择手动输入IPv4地址段。

    输入IPv4网段

    输入192.168.0.0/16

    IPv6网段

    选择不分配。

    交换机

    名称

    自定义名称。

    可用区

    选择杭州可用区H。

    IPv4网段

    设置为192.168.0.0/24

    image

    image

  6. 创建专有网络页面,您可查看到创建的专有网络VPC和交换机的ID实例名称等信息。

    image

创建公网NAT网关

  1. 领取公网NAT网关免费试用。

    重要
    • 如果您的阿里云账号有领取公网NAT网关免费试用资格,请您根据下方操作进行领取。免费试用额度有效期3个月,包括每月750个小时公网NAT网关实例使用时间,每月15CU用于公网NAT网关,每月750个小时EIP实例使用时间。超出权益额度部分将自动按量付费计费。收费标准请参见公网NAT网关计费

    • 如果您的阿里云账号已领取过或没有公网NAT网关免费试用资格,请您跳过此步骤,直接创建NAT实例,并会产生一定的费用,详情请参见公网NAT网关计费

    1. 前往免费试用公网NAT网关

    2. 在免费试用中心页面,单击公网NAT网关卡片中的立即试用

      image

    3. 公网NAT网关面板,单击立即试用

      image

  2. 创建公网NAT网关。

    1. 登录公网NAT网关

    2. 公网NAT网关页面,单击创建公网NAT网关

      image

    3. 创建公网NAT网关页⾯,根据下方说明配置参数,未提及的参数保持默认即可,然后单击立即购买

      配置项

      说明

      所属地域

      选择华东1(杭州)。

      所属专有网络

      选择上一小节创建的专有网络。

      关联交换机

      选择上一小节创建的交换机。

      实例名称

      自定义名称。

      访问模式

      选择专有网络全通模式(SNAT)。

      弹性公网IP

      选择新购弹性公网IP。

      流量

      选择按使用流量计费。

      image

      image

    4. 确认订单页面,确认信息无误后,单击立即开通

      image

      返回如下页面,表示NAT网关实例创建成功。

      image

申请通义千问模型API-KEY

  1. 前往阿里云百炼控制台,如果页面顶部显示以下消息,您需要开通阿里云百炼的模型服务,以获得免费额度。如果未显示该消息,则表示您已经开通,请跳过此步骤。

    image

  2. 前往API-KEY页面,单击创建我的API-KEY

    4484ff70302d38d51119a7e139ab25cd

  3. 创建新的API-KEY对话框中,归属业务空间选择主账号空间,单击确定

    image

  4. 我的API-KEY页面,单击目标API-KEY右侧操作列下的查看,您即可看到API-KEY的明文信息,在后续步骤需要使用到API-KEY。

    说明

    API-KEY请注意保存,不要存放在公开环境中。

    ab0fc98ea62304abe9b1cfbb9c1c6f05

创建云原生API网关

  1. 领取免费试用云原生API网关。

    重要
    • 如果您的阿里云账号有领取云原生API网关免费试用资格,请您根据下方操作进行领取。免费试用额度700元,可用于抵扣网关实例规格、公网/私网数据处理量费用。超出权益额度部分将自动按量付费计费。收费标准请参见计费概述

    • 如果您的阿里云账号已领取过或没有云原生API网关免费试用资格,请您跳过此步骤,直接创建云原生API网关,并会产生一定的费用,详情请参见计费概述

    1. 前往免费试用云原生API网关

    2. 在免费试用中心页面,单击云原生API网关卡片中的立即试用

      image

    3. 云原生API网关面板,根据下方说明配置参数,未提及的参数保持默认即可,单击立即试用

      配置项

      说明

      地域

      选择华东1(杭州)。

      网关名称

      自定义名称。

      网关规格

      apigw.small.x1

      网络访问类型

      选择公网。

      专有网络

      选择之前创建的专有网络。

      可用区选择

      选择自动分配。

      交换机

      选择之前创建的交换机。

      日志服务

      勾选使用日志服务(SLS)。

      服务关联角色

      确认所有服务角色均已授权,若有未授权的,请根据页面提示进行授权。

      image

      image

    4. 免费试用申请完成,前往云原生API网关实例页面,当刚刚创建的网关实例的运行状态变为运行中时,表明网关实例创建完成。

      image

  2. 创建云原生API网关。

    重要

    如果您已根据上一步领取免费试用云原生API网关实例,请跳过此步骤,无需重复创建云原生API网关实例。

    1. 登录云原生API网关控制台

    2. 在左侧导航栏中,单击实例

      image

    3. 实例页面,单击创建实例

      image

    4. 创建云原生API网关页⾯,根据下方说明配置参数,未提及的参数保持默认即可,然后单击立即购买

      配置项

      说明

      商品类型

      选择按量付费。

      地域

      选择华东1(杭州)。

      网关名称

      自定义名称。

      网关规格

      apigw.small.x1

      网络访问类型

      选择公网。

      专有网络

      选择之前创建的专有网络。

      可用区选择

      选择自动分配。

      交换机

      选择之前创建的交换机。

      日志服务

      勾选使用日志服务(SLS)。

      服务关联角色

      确认所有服务角色均已授权,若有未授权的,请根据页面提示进行授权。

      image

      image

    5. 确认订单页面,确认信息无误后,单击立即开通

      image

    6. 返回至云原生API网关控制台,在实例页面,单击image图标,刷新页面。

      image

    7. 实例页面,当刚刚创建的网关实例的运行状态变为运行中时,表明网关实例创建完成。

      image

创建单模型代理AI API

云原生API网关中的AI API适用于面向人工智能应用开发的团队,提供了更加灵活和智能的AI网关配置和调试能力。它可以用于各种AI代理、AI观测、消费者鉴权、内容安全防护等插件的预置。

  1. 在云原生网关控制台的左侧导航栏中,单击API

    image

  2. API页面,单击AI API卡片上的创建

    说明

    如果您的云原生API网关当前已经存在其他API,请先单击AI API选项后,再单击创建AI API

    image

  3. 创建AI API面板,自定义API名称所属实例选择之前创建的云原生API网关实例,开启AI请求观测服务模型选择单模型服务,在服务列表服务名称下拉框中,单击创建服务

    image

  4. 创建服务面板,服务来源选择AI服务,自定义服务名称大模型供应商选择阿里云百炼API-KEY中输入从阿里云百炼控制台中获取的API-KEY,单击确定

    image

  5. 创建AI API面板的服务列表中,服务名称选择刚刚创建的服务,模型名称选择透传,单击确定

    image

  6. API详情页签,单击统计

    image

  7. 统计页签,根据页面提示开通日志服务SLS和网关日志投递功能,其中在开启网关日志投递功能时日志服务Project选择使用默认。

    说明

    如果您之前开通过阿里云日志服务SLS,请您忽略此步骤操作。

    image

  8. 统计页签,您可以检测到API的相关信息。

    image

调试单模型聊天机器人

本步骤指导您如何和AI网关的聊天机器人进行对话。

  1. 统计页签,单击右上角的调试

    image

  2. 调试面板,将对话内容填写在输入框中,单击发送,即可调用。

    对话内容示例:

    你好,你是谁
    说明

    本实验调试时使用qwen-max模型,您也可以选其他模型进行调试,只需要将qwen-max清除掉,即可选择其他模型。当选择moonshot模型时,您需要申请对应的API-KEY。

    image

  3. 调用大模型后,大模型返回了回答,说明前面配置均正确。

    说明

    如果调试时返回错误,可以按照下面的思路排查:

    1. 公网NAT网关是否创建并绑定到了正确的VPC网络;

    2. 弹性公网IP是否购买;

    3. API-KEY是否有效。

    image

配置Redis服务

创建云数据库Tair(兼容Redis)实例,配置Redis服务。

  1. 创建云数据库Tair(兼容Redis)实例。

    1. 前往云数据库Tair(兼容Redis)控制台

    2. 在左侧导航栏中,单击实例列表

      image

    3. 实例列表页面,单击创建实例

      image

    4. 在创建Redis页面,根据下方说明配置参数,未提及的参数保持默认即可,单击立即购买

      配置项

      说明

      产品

      选择Redis开源版。

      付费方式

      选择按量付费。

      部署模式

      选择云原生。

      系列

      选择标准版。

      地域

      选择华东1(杭州)。

      可用区类型

      选择单可用区。

      主可用区

      选择杭州可用区H。

      专有网络

      选择之前创建的专有网络。

      虚拟交换机

      选择之前创建的交换机。

      实例名称

      自定义名称。

      密码设置

      选择稍后设置。

      image

      image

    5. 确认订单页面,确认信息无误后,单击立即开通

      image

    6. 返回至云数据库Tair(兼容Redis)控制台,在实例列表页面,单击image图标刷新页面。

      image

    7. 实例列表页面,当刚刚创建的实例的状态变为运行中,表示Redis实例创建成功。

      image

  2. 配置云数据库Tair(兼容Redis)实例。

    1. 实例列表页面,找到目标实例,单击其右侧操作列下的管理

      image

    2. 在左侧导航栏中,单击白名单设置

      image

    3. 白名单设置页签,单击添加白名单分组

      image

    4. 添加白名单分组面板,自定义分组名称,将云原生API网关所在的VPC的网段添加到组内白名单中,即添加192.168.0.0/16网段到组内白名单中。

      说明

      在本实验中,云原生API网关所在的VPC的网段为192.168.0.0/16。

      image

    5. 在左侧导航栏中,单击账号管理

      image

    6. 账号管理页面,单击创建账号

      image

    7. 创建账号对话框中,账号类型选择本地账号,自定义账号权限设置选择读写,自定义密码,再次输入确认密码,单击确定

      image

    8. 账号管理页面,单击image图标刷新页面,等待刚刚创建的账号状态变为可用

      image

    9. 在左侧导航栏中,单击实例信息

      image

    10. 实例信息页面的连接信息区域,获取到专有网络的连接地址端口号

      说明

      获取到专有网络的连接地址和端口号在后续步骤需要使用。

      image

  3. 在云原生API网关中配置Redis服务。

    1. 返回至云原生API网关控制台,关闭调试面板后,在左侧导航栏中,单击实例

      image

    2. 实例页面,找到目标云原生API网关实例,单击实例ID

      image

    3. 在左侧导航栏中,单击服务

      image

    4. 服务页签,单击创建服务

      image

    5. 创建服务面板,服务来源选择DNS域名服务名称填写my-redis服务地址输入获取到的Redis实例的专有网络的连接地址和端口号,TLS模式选择关闭,单击确定

      说明

      服务地址格式为域名:端口号(如aliyun.com:80)。在本实验中域名为获取到的Redis实例的专有网络的连接地址,端口号为获取到的Redis实例的专有网络的端口号(6379)。

      image

    6. 服务页签,单击image图标刷新页面,当刚刚创建的服务的健康检查状态变为健康,表示Redis服务创建成功。

      image

配置网关消费者权限

创建网关消费者,并配置Key认证插件用于认证消费者权限。

  1. 创建网关消费者。

    1. 服务页签,单击左上角的image图标,返回上一页面。

      image

    2. 在左侧导航栏中,单击消费者

      image

    3. 消费者页面,单击创建消费者

      image

    4. 创建消费者面板,根据如下说明配置参数,未提及的参数保持默认即可,单击创建,该消费者后续作为配额的管理员身份。

      配置项

      说明

      消费者名称

      填写yunqi-admin。

      状态

      设置为启用。

      认证方式

      选择API Key。

      生成方式

      选择系统生成。

      凭证来源

      选择自定义HTTP Header。

      Header

      填写x-api-key。

      image

    5. 消费者页面,找到刚刚创建的消费者,单击其名称yunqi-admin

      image

    6. 基本信息页签的认证方式区域,单击API Key,即可查看到系统自动生成的凭证,该凭证会作为后续插件配置。

      说明

      建议将API Key保存在本地,方便后续插件配置。

      image

    7. 按照上述c~f步骤,依次创建两个消费者,分别命名为yunqi-user-1、yunqi-user-2,并且查看API Key。

      说明

      建议将API Key保存在本地,方便后续插件配置。

      image

  2. 配置Key认证插件。

    1. 在左侧导航栏中,单击实例

      image

    2. 实例页面,找到目标云原生API网关实例,单击实例ID

      image

    3. 在左侧导航栏中,单击插件

      image

    4. 插件页面,单击安装插件

      image

    5. 安装插件面板,搜索Key,找到Key认证卡片,单击其卡片中的安装

      image

    6. 安装插件对话框中,单击安装并配置

      image

    7. 规则配置面板,选择实例级插件规则,将启用状态设置为打开,插件规则按如下内容配置,单击保存

      global_auth: true
      consumers:
      - credential: xxxxx
        name: yunqi-user-1
      - credential: xxxxx
        name: yunqi-user-2
      - credential: xxxxx
        name: yunqi-admin
      keys:
      - x-api-key
      说明

      配置插件规则时,请根据参数说明,将credential的值修改为实际获取三个消费者的API Key。

      参数说明:

      配置项

      说明

      global_auth

      设置为true,打开全局认证。

      consumers

      表示认证的消费者列表。

      credential

      表示生成的消费者凭证。

      需要将credential修改为对应消费者的API Key。

      name

      表示消费者的名称。

      keys

      认证的字段,此处填写为x-api-key。

      image

      说明

      配置Key认证插件后,当调试请求头中不包含认证字段时,调试会返回401权限不足,用户可自行尝试。

配置网关AI插件

配置AI Token限流和AI配额管理插件。

  1. 配置AI Token限流。

    1. 插件页面,单击安装插件

      image

    2. 安装插件面板,搜索AI Token,找到AI Token限流卡片,单击其卡片中的安装

      image

    3. 安装插件对话框中,单击安装并配置

      image

    4. 规则配置面板,选择实例级插件规则,将启用状态设置为打开,插件规则按如下内容配置,单击保存

      redis:
        service_name: my-redis.dns
        service_port: 6379
        username: test_user
        password: xxxxxx
        timeout: 2000
      rule_items:
      - limit_by_per_header: x-api-key
        limit_keys:
        - key: "*"
          token_per_minute: 5
      rule_name: "default_rule"
      说明
      • 配置插件规则时,请根据参数说明,修改相关参数。

      • 以上规则将针对每个消费者,基于x-api-keyHTTP Header进行限流,限流条件为每分钟5token。

      参数说明:

      配置项

      说明

      redis

      表示Redis相关的配置。

      service_name

      使用的Redis服务FQDN。

      填写创建的Redis服务名称+.dns

      service_port

      Redis服务的端口,当前为6379。

      username

      填写创建的Redis实例的用户名。

      password

      填写创建的Redis实例的密码。

      timeout

      请求Redis的超时时间

      rule_items

      表示限流相关的规则。

      limit_by_per_header

      限流的条件,此处基于每个header进行限流,header为配置的x-api-key。

      key

      配置需要限流的key,当前配置为*,表示所有key都限流。

      token_per_minute

      每分钟限流的token数量。

      rule_name

      表示规则的名称。

      image

  2. AI配额管理插件。

    1. 关闭规则配置面板,在安装插件面板,搜索AI 配额,找到AI 配额管理卡片,单击其卡片中的安装

      image

    2. 安装插件对话框中,单击安装并配置

      image

    3. 规则配置面板,选择实例级插件规则,将启用状态设置为打开,插件规则按如下内容配置,单击保存

      redis_key_prefix: 'chat_quota:'
      admin_consumer: yunqi-admin
      admin_path: /quota
      redis:
        service_name: my-redis.dns
        service_port: 6379
        username: test_user
        password: xxxxx
        timeout: 2000
      说明

      配置插件规则时,请根据参数说明,修改相关参数。

      参数说明:

      配置项

      说明

      redis_key_prefix

      配额存储在Redis中的前缀。

      admin_consumer

      进行配额管理的消费者,当前配置为yunqi-admin。

      admin_path

      执行配额管理的路径,当前配置为/quota,即在AI API的路径后追加字段。

      redis

      表示Redis相关的配置。

      service_name

      使用的Redis服务FQDN。

      填写创建的Redis服务名称+.dns

      service_port

      Redis服务的端口,当前为6379。

      username

      填写创建的Redis实例的用户名。

      password

      填写创建的Redis实例的密码。

      timeout

      请求Redis的超时时间

      image

调试Token管控相关功能

利用本地命令行,调试Token配额刷新、查询、增加的功能,触发Token配额、请求限流功能。

  1. 获取AI API域名。

    1. 关闭规则配置安装插件面板,单击页面右上角的image图标,返回上一页面。

      image

    2. 在左侧导航栏中,单击API

      image

    3. 全部API页签,找到目标API,单击其右侧操作列下的调试

      image

    4. 调试面板,单击CURL命令,在CURL命令窗口中即可获取到AI API域名,后续调试脚本中会使用到域名。

      image

  2. 准备命令行调试脚本。

    在进行测试前,在本地电脑中准备以下5个脚本文件用于执行,分别为:

    • delta.sh:用于增减固定数量的Token配额。

    • query.sh:用于查询消费者的剩余配额数量。

    • refresh.sh:用于刷新消费者的配额到某个数量。

    • request_consumer1.sh、request_consumer2.sh:使用消费者yunqi-user-1、yunqi-user-2请求AI API。

    1. 新建delta.sh脚本。

      在本地电脑中,新建delta.sh脚本,将如下命令复制并粘贴至脚本中。

      说明
      • 命令粘贴至脚本后,请将命令中的http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions替换为实际域名,实际域名请在调试面板中获取。

      • 命令粘贴至脚本后,请将命令中x-api-key对应的参数值替换为用户消费者yunqi-admin的凭证,即API Key。

      #增加消费者yunqi-user-1 100token配额
      curl http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions/quota/delta -H 'x-api-key: xxxxx' -d "consumer=yunqi-user-1&value=100"
      
      #减去消费者yunqi-user-1 100token配额
      #curl http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions/quota/delta -H 'x-api-key: xxxxx' -d "consumer=yunqi-user-1&value=-100"

      image

    2. 新建query.sh脚本。

      在本地电脑中,新建query.sh脚本,将如下命令复制并粘贴至脚本中。

      说明
      • 命令粘贴至脚本后,请将命令中的http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions替换为实际域名,实际域名请在调试面板中获取。

      • 命令粘贴至脚本后,请将命令中x-api-key对应的参数值替换为用户消费者yunqi-admin的凭证,即API Key。

      #查询消费者yunqi-user-1的剩余quota
      curl http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions/quota?consumer=yunqi-admin -H 'x-api-key: xxxxx'
      
      echo ""
      
      #查询消费者yunqi-user-2的剩余quota
      curl http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions/quota?consumer=yunqi-user-2 -H 'x-api-key: xxxxx'

      image

    3. 新建refresh.sh脚本。

      在本地电脑中,新建refresh.sh脚本,将如下命令复制并粘贴至脚本中。

      说明
      • 命令粘贴至脚本后,请将命令中的http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions替换为实际域名,实际域名请在调试面板中获取。

      • 命令粘贴至脚本后,请将命令中x-api-key对应的参数值替换为用户消费者yunqi-admin的凭证,即API Key。

      #刷新消费者yunqi-user-1quota200
      curl http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions/quota/refresh -H 'x-api-key: xxxxx' -d "consumer=yunqi-user-1&quota=200"
      
      echo ""
      
      #刷新消费者yunqi-user-2quota0
      curl http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions/quota/refresh -H 'x-api-key: xxxxx' -d "consumer=yunqi-user-2&quota=0"

      image

    4. 新建request_consumer1.sh脚本。

      在本地电脑中,新建request_consumer1.sh脚本,将如下命令复制并粘贴至脚本中。

      说明
      • 命令粘贴至脚本后,请将命令中的http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions替换为实际域名,实际域名请在调试面板中获取。

      • 命令粘贴至脚本后,请将命令中x-api-key对应的参数值替换为用户消费者yunqi-user-1的凭证,即API Key。

      • 如果您的系统是Windows,请将命令中的提问内容你是谁?改为Who are you?或者URL编码格式%E4%BD%A0%E6%98%AF%E8%B0%81%EF%BC%9F,否则会因为中文引起数据编码问题。

      #请求消费者yunqi-user-1
      curl --location 'http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions' \
         --header 'Content-Type: application/json' \
         --header 'x-api-key: xxxxx' \
         --data '{
          "stream": false,
          "max_tokens": 1024,
          "top_p": 0.95,
          "temperature": 1,
          "model": "qwen-max",
          "messages": [
              {
                  "role": "system",
                  "content": "You are a helpful assistant."
              },
              {
                  "role": "user",
                  "content": "你是谁?"
              }
          ]
      }' 

      image

    5. 新建request_consumer2.sh脚本。

      在本地电脑中,新建request_consumer2.sh脚本,将如下命令复制并粘贴至脚本中。

      说明
      • 命令粘贴至脚本后,请将命令中的http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions替换为实际域名,实际域名请在调试面板中获取。

      • 命令粘贴至脚本后,请将命令中x-api-key对应的参数值替换为用户消费者yunqi-user-2的凭证,即API Key。

      • 如果您的系统是Windows,请将命令中的提问内容你是谁?改为Who are you?或者URL编码格式%E4%BD%A0%E6%98%AF%E8%B0%81%EF%BC%9F,否则会因为中文引起数据编码问题。

      #请求消费者yunqi-user-2
      curl --location 'http://env-xxxxx-cn-hangzhou.alicloudapi.com/v1/chat/completions' \
         --header 'Content-Type: application/json' \
         --header 'x-api-key: xxxxx' \
         --data '{
          "stream": false,
          "max_tokens": 1024,
          "top_p": 0.95,
          "temperature": 1,
          "model": "qwen-max",
          "messages": [
              {
                  "role": "system",
                  "content": "You are a helpful assistant."
              },
              {
                  "role": "user",
                  "content": "你是谁?"
              }
          ]
      }' 

      image

  3. 执行脚本前的准备工作。

    • Windows操作系统:下载并安装Git for Windows,在安装过程中,选择将Git添加到系统PATH中。安装完成后在开始菜单中搜索并打开Git Bash。

    • macOS操作:按下Command+Space打开Spotlight搜索,输入Terminal或终端,然后按下回车键,即可打开终端。

  4. Git Bash/终端中,执行如下命令,进入到脚本目录。

    说明

    您需要将命令中的脚本目录替换为脚本所在的实际目录,

    cd 脚本目录

    image

  5. 执行配额刷新操作。

    执行如下命令,运行refresh.sh脚本,执行配额刷新操作。

    脚本含义:使用yunqi-admin的凭证,执行/quota/refresh路径,将消费者yunqi-user-1的配额刷新为200个,消费者yunqi-user-2的配额刷新为0个。

    ./refresh.sh

    image

  6. 执行配额查询操作。

    执行如下命令,运行query.sh脚本,执行配额查询操作。

    脚本含义:使用yunqi-admin的凭证,执行/quota?consumer=[消费者名称]路径,查询消费者yunqi-user-1、消费者yunqi-user-2的配额剩余数量。

    ./query.sh

    返回如下结果,可以查看到消费者yunqi-user-1的配额剩余为200个,消费者yunqi-user-2的配额剩余为0个。

    image

  7. 执行请求操作。

    1. 执行如下命令,运行request_consumer2.sh脚本,执行请求操作。

      脚本含义:使用yunqi-user-2的凭证,请求AI API。

      ./request_consumer2.sh

      返回如下结果,由于yunqi-user-2的配额为0,此时请求被拒绝,提示No quota left。

      image

    2. 执行如下命令,运行request_consumer1.sh脚本,执行请求操作。

      脚本含义:使用yunqi-user-1的凭证,请求AI API。

      ./request_consumer1.sh

      返回如下结果,由于yunqi-user-1配额充足,此时请求成功。

      image

    3. 如果在1分钟内,执行如下命令,再次运行request_consumer1.sh脚本。

      ./request_consumer1.sh

      返回如下结果,此时由于触发AI Token限流插件的每分钟5Token的限流,因此请求被拒绝,提示Too many requests。

      image

    4. 1分钟后,执行如下命令,再次运行request_consumer1.sh脚本。

      ./request_consumer1.sh

      返回如下结果,此时分钟级限流结束,能够获得大模型响应结果。

      image

    5. 再次执行配额查询操作。

      执行如下命令,运行query.sh脚本,再次执行配额查询操作。

      ./query.sh

      返回如下结果,可以查看到消费者yunqi-user-1的配额在两次成功的请求后数量减少,并且数量为负的(该数量不固定,视具体使用token而定)。

      image

    6. 此时执行如下命令,再次运行request_consumer1.sh脚本。

      ./request_consumer1.sh

      返回如下结果,由于配额不足,此时请求被拒绝,提示No quota left。

      image

    7. 执行配额增加操作。

      执行如下命令,运行delta.sh脚本,执行配额增加操作。

      脚本含义:使用yunqi-admin的凭证,执行/quota/delta路径,指定consumer=[消费者名称]&value=[配额增加数量]。此处配额增加数量可以为负值,负值表示减少该指定数量的配额(即脚本中注释掉的第二条命令)。

      ./delta.sh

      image

    8. 配额增加后,执行如下命令,运行query.sh脚本,再次执行配额查询操作。

      ./query.sh

      返回如下结果,此时可以看到消费者yunqi-user-1的配额被增加,可以继续访问大模型。

      image

说明
  • 如执行刷新、增减、查询操作失败,请依次确认:

    1. 域名是否正确;

    2. Key 认证插件是否正确开启;

    3. yunqi-admin凭证是否正确;

    4. 执行路径是否正确;

    5. 消费者名称是否正确。

  • 如执行请求操作不符合预期,请依次确认:

    1. 域名是否正确;

    2. Key 认证插件是否正确开启;

    3. yunqi-user-1/yunqi-user-2凭证是否正确;

    4. yunqi-user-1/yunqi-user-2是否剩余足够的配额。

清理资源

  • 在完成实验后,如果无需继续使用资源,请根据以下步骤,先删除相关资源后,再结束实操,否则资源会持续运行产生费用。

    • 删除云原生API网关实例、AI API 和消费者。

      1. 登录云原生API网关控制台

      2. 在左侧导航栏中,单击实例

        image

      3. 实例页面顶部菜单栏中,地域切换至华东1(杭州),然后找到目标实例,选择其右侧操作列下的更多 > 释放实例

        image

      4. 释放网关实例对话框中,输入网关实例名称,单击确定

        image

      5. 在左侧导航栏中,单击API

        image

      6. 全部API页签,找到目标API,单击右侧操作列下的删除

        image

      7. 在弹出的对话框中,输入API名称,单击删除

        image

      8. 在左侧导航栏中,单击消费者

        image

      9. 消费者页面,依次单击三个消费者右侧操作列下的删除,根据页面提示删除三个消费者。

        image

    • 删除云数据库Tair(兼容Redis)。

      1. 前往云数据库Tair(兼容Redis)控制台

      2. 在左侧导航栏中,单击实例列表

        image

      3. 实例列表页面,地域切换至华东1(杭州),找到目标Redis实例,选择其右侧操作列下的image图标 > 释放

        image

      4. 释放实例面板,单击确定

        image

    • 删除阿里云百炼API-KEY。

      1. 前往API-KEY页面,单击目标API-KEY右侧操作列下的删除

        914b1be200c5c1918100c511497ecf67

      2. 删除提示对话框中,单击确认除

        image

    • 删除公网NAT和弹性公网IP。

      1. 登录公网NAT网关

      2. 公网NAT网关页面顶部菜单栏中,地域切换至华东1(杭州),找到目标NAT网关实例,选择其右侧操作列下的image图标 > 删除

        image

      3. 删除网关对话框中,勾选强制删除(删除NAT网关及其包含资源),单击确定

        image

      4. 在左侧导航栏中,选择公网访问 > 弹性公网IP

        image

      5. 弹性公网IP页面,找到目标弹性公网IP实例,选择其右侧操作列下的image图标 > 释放

        image

      6. 释放弹性公网IP对话框中,单击确定

        image

    • 删除VPC及交换机。

      1. 登录专有网络

      2. 专有网络页面顶部菜单栏中,地域切换至华东1(杭州)找到目标VPC,单击其右侧操作列下的删除

        image

      3. 删除专有网络对话框中,勾选强制删除,单击确定

        image

    • 删除相关资源后,单击结束实操。在结束实操对话框中,单击确定

      image

  • 在完成实验后,如果需要继续使用资源,您可跳过释放相关资源的操作,直接单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。

    image