一、前言


二、AI 代理
应用架构


provider:type: qwenapiTokens:- sk-xxxxxxxxxxxxxxxxxxxxxxtimeout: 1200000modelMapping:'gpt-3.5-turbo': qwen-turbo'gpt-4': qwen-max'*': qwen-max
三、AI 可观测
官方文档:https://help.aliyun.com/zh/mse/user-guide/ai-observable?spm=a2c4g.11186623.0.0.42b4d95f14d39z
enable: true

四、AI 内容安全
官方文档:https://help.aliyun.com/zh/mse/user-guide/ai-content-security?spm=a2c4g.11186623.0.0.4408488dYGAm2X
配置 AI 内容安全插件后,应用架构如下图所示:

serviceSource: dnsserviceName: green-cipservicePort: 443domain: green-cip.cn-hangzhou.aliyuncs.comak: xxxxxxxxxxxxxxxxxsk: xxxxxxxxxxxxxxxxx

五、AI Token 限流
官方文档:https://help.aliyun.com/zh/mse/user-guide/ai-token-current-limiting?spm=a2c4g.11186623.0.i4
创建一个 redis 服务并且在网关进行配置:

rule_name: default_rulerule_items:- limit_by_per_ip: from-remote-addrlimit_keys:- key: 0.0.0.0/0token_per_minute: 100redis:service_name: redis.staticservice_port: 6379username: xxxxxxpassword: xxxxxxrejected_code: 429rejected_msg: 您的请求频率过高,请稍后再试。
六、AI 缓存
官方文档:https://help.aliyun.com/zh/mse/user-guide/ai-cache?spm=a2c4g.11186623.0.0.3cdf306bbJSWdn
redis:serviceName: redis.staticservicePort: 6379timeout: 2000username: xxxxxx password: xxxxxx
七、AI Token 限流
官方文档:https://help.aliyun.com/zh/mse/user-guide/ai-rag?spm=a2c4g.11186623.0.0.24c77267ImcfGS

dashscope:apiKey: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxserviceName: qwenservicePort: 443domain: dashscope.aliyuncs.comdashvector:apiKey: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxserviceName: dashvectorservicePort: 443domain: vrs-cn-xxxxxxxxxxxxxx.dashvector.cn-hangzhou.aliyuncs.comcollection: xxxxxxxxxxxxxx
八、其他
-
prompt 模板[3]
-
prompt 装饰器[4]
templates:- name: "developer-chat"template:model: gpt-3.5-turbomessages:- role: systemcontent: "你是一个 {{program}} 专家, 你平时使用的编程语言为 {{language}}"- role: user content: "帮我写一个 {{program}} 程序, 你的返回结果里面应该只包含python代码"
请求 body 示例如下:
{"template": "developer-chat","properties": {"program": "冒泡排序","language": "python"}}
Prompt 装饰器允许用户在网关定义对 prompt 的修改操作,包括在原始请求之前和之后插入 message,配置示例如下,请求 body 与 openai 的请求一致。
prepend:- role: systemcontent: "请使用英语回答问题."append:- role: usercontent: "每次回答完问题,尝试进行反问"
response: enable: trueprompt: "帮我修改以下HTTP应答信息,要求:1. content-type修改为application/json;2. body由xml转化为json;3. 移除content-length。"provider: serviceName: qwendomain: dashscope.aliyuncs.com apiKey: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx
<?xml version='1.0' encoding='us-ascii'?>
<!--A SAMPLE set of slides-->
<slideshow
title="Sample Slide Show"
date="Date of publication"
author="Yours Truly"
>
<!-- TITLE SLIDE -->
<slide type="all">
<title>Wake up to WonderWidgets!</title>
</slide>
<!-- OVERVIEW -->
<slide type="all">
<title>Overview</title>
<item>Why <em>WonderWidgets</em> are great</item>
<item/>
<item>Who <em>buys</em> WonderWidgets</item>
</slide>
</slideshow>
使用以上配置,通过网关访问 httpbin 的 /xml 接口,结果为:
{"slideshow": {"title": "Sample Slide Show","date": "Date of publication","author": "Yours Truly","slides": [{"type": "all","title": "Wake up to WonderWidgets!"},{"type": "all","title": "Overview","items": ["Why <em>WonderWidgets</em> are great","","Who <em>buys</em> WonderWidgets"]}]}}