大模型openai服务网关

大模型服务网关是为了代理多个openai接口,并且在代理中实现认证,限流,接口输入输出的修正,监控等功能而设计的。

在这里插入图片描述

认证方式

  • 1、数据库匹配: 从秘钥位置获取到的秘钥跟服务网关设定的秘钥完全一致
  • 2、正则匹配:从秘钥位置获取到的秘钥要符合服务网关设定的秘钥 正则表达式
  • 3、JWT认证:从秘钥位置获取到的秘钥 要能使用 服务网关 设定的秘钥 key 进行jwt解码

秘钥位置

position:key的写法,

其中position 为 密码获取方法,header 表示从http header头中读取,body 表示从json请求体中读取,arg 表示从请求的url中读取。

其中key为对应位置处的key值, 比如

  • 1、header:Authorization 表示从header头中读取Authorization 的值为秘钥
  • 2、body:user_id 表示从json请求体中读取user_id的值为 秘钥
  • 3、arg:token 表示从url请求路径中读取参数token的值,作为秘钥

秘钥

根据认证方法,可自己设定,也会随机生成。

过期时间

网关的过期时间,超过该时间后,对访问请求返回“该网关已过有效期”的应答

token额度

整数或者no-limit,是问答总token的最大累加和。

服务列表

平台内创建的自己可以有权限访问的openai接口服务,但并不是当前上线的llm服务。在正式访问时会查询代理的llm服务是否上线中,再根据是否上线,决定应答

失败重试

请求大模型openai接口,报错后重试的次数

限速

  • no-limit 没有限制
  • ingress:n/minute 针对该网关,限制最近1分钟最多访问n次
  • ingress:n/hour 针对该网关,限制最近1小时最多访问n次
  • ingress:n/day 针对该网关,限制最近1天最多访问n次
  • secret:n/minute 针对每个秘钥,限制最近1分钟最多访问n次
  • secret:n/hour 针对每个秘钥,限制最近1小时最多访问n次
  • secret:n/day 针对每个秘钥,限制最近1天最多访问n次

白名单

如果设置了白名单,在白名单范围内的就放行,不在白名单范围内的就不放行,优先级高于黑名单。每行一个白名单规则。

每行的白名单书写规则: type:value, 其中type可为

  • ip,表示的是客户端的访问ip范围,值为ip网段
  • secret,表示的访问者的秘钥,秘钥的正则表达式
  • time 表示的是访问的时间,时间范围段

黑名单

书写规则同白名单,访问流量符合黑名单规范就阻拦,优先级低于白名单

激活

可控制当前网关是否有效

深度思考

暂时无效

联网搜索

暂时无效

内容安全

暂时无效

数据脱敏

暂时无效

提示词模板

最终发给给大模型的问题,如果当前服务网关配置了提示词模板,其中一定要包含{{query}},比如

cube-studio是开源一站式机器学习平台,请你的回答尽可能专业。请问:{{query}}

那么最终发给给大模型的问题就是上面的一整段话,替换了{{query}} 为用户最原始的问题的。

我们可以通过这种方式添加一些问答限制

参数值映射

对推理服务的json请求体的value进行映射,格式为"key":[“old_value”,“new_value”],

例如"model":[“deepseek”,“deepseek-qwen2-7b”],可以将请求deepseek的模型全部代理到deepseek-qwen2-7b模型服务上

参数值固定

参数值固定,对推理服务的json请求体的value进行固定,格式为"key":“new_value”,

例如"model":“deepseek-qwen2-7b”,可以将任何模型请求全部代理到deepseek-qwen2-7b模型服务上

调用测试

当配置了服务网关,那么网关会对外提供openai接口,代理用户的请求到下面的openai模型接口上。在外部智能体平台,主要需要调用所需的环境变量配置

API_SECRET_KEY = "sk-xxxxxxxx"  
BASE_URL = "http://xx.xx.xx.xx/llm/api/xx/v1"  

也可以自己写API调用示例代码

curl -X POST http://xx.xx.xx.xx/llm/api/xx/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxx" \
  -d '{
    "model": "xxxx",
    "messages": [
      {
        "role": "user",
        "content": "你是谁?"
      }
    ],
    "temperature": 0.7,
    "stream": false
  }'
参数说明:
MODEL_NAME:替换为你的模型名称,当前可访问模型名包含: (无可访问模型服务,请先部署大模型服务)
messages:对话历史,包含 role(user / assistant / system)和 content(消息内容)
temperature:控制生成文本的随机性(0~2,值越大越随机)

监控

客户端可以进行调用访问,每次调用访问,服务网关都会监控当前以使用token数目,和今日每小时的调用次数

在这里插入图片描述

Logo

更多推荐