在前文,我们介绍了如何申请微软 Azure 的 OpenAI Service,但在使用时,与OpenAI官方的API还是有一些使用上的差异,具体表现是 Azure OpenAI 返回的调用最后少了一个换行 \n
(引用来源:https://www.cnblogs.com/stulzq/p/17271937.html),由于 Azure OpenAI 的 API 与官方 OpenAI API 并不兼容,如果直接配置到OpenAI的客户端,就会收到 Resource Not Found 的错误。而这个解决方法,目前是通过第三方程序去转换 Azure OpenAI API 到OpenAI官方API标准,我们管这个叫“Azure OpenAI API 代理工具”,借助这样的代理工具就能让 Azure OpenAI 直接对接到任何支持 OpenAI 的任何项目中。
转换方法目前有两种,第一种是前文介绍的,需要部署Docker容器,优点是部署的服务器高度自治,你可以选择任意地区的服务器/VPS,尤其适合你的OpenAI客户端在中国大陆使用的场景。
如果你的使用场景主要是海外,那么这里介绍另外一个更简单的方法,就是使用 cf-openai-azure-proxy 项目,通过 Cloudflare Worker 来转换映射 Azure OpenAI API,Cloudflare Worker 的免费配额完全足够支撑API转换的调用,而且免去了自行部署运维Docker的麻烦。
部署步骤
打开 Cloudflare Worker,按步骤创建一个 Worker,点击创建应用程序
最近Cloudflare有部分内容改版,Worker和Page这两个都被放在应用程序里面了。这里选择Workers,然后点击创建Worker
然后给这个Worker定一个名称,代码后面再补充。
然后回到 cf-openai-azure-proxy 项目页面,点击查看 cf-openai-azure-proxy.js 文件,将代码复制起来
接着回到Cloudflare Worker的代码部署页面,点击快速编辑
在打开的页面中,粘贴之前复制的代码段
到这里,代码部署到工作已经完成了。
配置映射关系
这个配置其实很好理解,还记得之前申请Azure OpenAI时,有一个创建模型部署,上面的模型名称是你自己可以自定义的,如下图:
而 OpenAI 官方标准发起的请求里包含的模型名称是固定的,在这里可以查询,在 Azure OpenAI 模型部署时的自定义名称,在转换代理时就需要与官方 OpenAI 标准模型名称建立一个映射关系。
所以这部分的配置映射关系,有两个方法:直接修改代码和添加Worker环境变量,个人建议是添加环境变量比较好,这个随自己的心意啦。
直接修改代码
在之前复制的 cf-openai-azure-proxy.js 文件前面几行,直接替换RESOURCE_NAME、DEPLOY_NAME_GPT35、DEPLOY_NAME_GPT4
// The name of your Azure OpenAI Resource.
const resourceName=RESOURCE_NAME
// The deployment name you chose when you deployed the model.
const mapper = {
'gpt-3.5-turbo': DEPLOY_NAME_GPT35,
'gpt-4': DEPLOY_NAME_GPT4
};
const apiVersion="2023-05-15"
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
RESOURCE_NAME
:你的 Azure OpenAI 资源名称DEPLOY_NAME_GPT35
:你的Azure OpenAI在部署GPT3.5的模型名称,比如我的例子中,是gpt-35DEPLOY_NAME_GPT4
:你的Azure OpenAI在部署GPT4的模型名称,比如我的gpt-4
Azure OpenAI GPT4需要额外申请,方法:Azure OpenAI Service 如何申请 GPT-4 访问权限
添加Worker环境变量
而添加Worker环境变量,则非常简单了,打开你刚刚部署的Cloudflare Worker,找到设置tab,添加如图几个变量
注意,变量区分大小写的。
如何使用
站长主要是使用 ChatGPT-Next-Web 这个项目,在这个项目上如果要使用 Azure OpenAI API Service,只需要做以下几个步骤即可:
1. 环境变量 BASE_URL
指定为 Cloudflare Worker
的地址
2. 环境变量 OPENAI_API_KEY
指定为 Azure OpenAI Service
的Key
3. 环境变量 PROTOCOL
指定为 https
即可
如果你是使用 openai translator,那么在设置项中,首先选择 OpenAI 作为 Default Service Provider
然后设置以下几个参数即可:
API KEY
:指定为 Azure OpenAI Service
的KeyAPI URL
:指定为 Cloudflare Worker
的地址API Model
:模型指定这里要注意,要选择你部署时选择的模型,然后选择对应官方OpenAI的模型名称,例如本例是 gpt-35-turbo (version 0301)
常见问题
1. Cloudflare Worker还有必要绑定域名吗?
没必要,直接用Cloudflare worker分配给你的 workers.dev 后缀的子域名即可
2. Cloudflare Worker转换后的接口,有什么限制吗?
有,国内访问变得不通畅了。。。如果你希望在国内使用Azure OpenAI的服务,建议还是按照部署Docker的方式来
3. Cloudflare Worker真的免费吗?
是的。如果你请求量很大,意味着你接口请求也很大,小心Azure OpenAI产生高额费用噢
您也可以联系文章作者本人进行修改,若内容侵权或非法,可以联系我们进行处理。
任何个人或组织,转载、发布本站文章到任何网站、书籍等各类媒体平台,必须在文末署名文章出处并链接到本站相应文章的URL地址。
本站文章如转载自其他网站,会在文末署名原文出处及原文URL的跳转链接,如有遗漏,烦请告知修正。
如若本站文章侵犯了原著者的合法权益,亦可联系我们进行处理。
hi5个月前0
请问有详细一点的自己搭建的教程吗你好6个月前0
你好,可以再帮我看看吗? 我已经按照你的方法设定了,还是一样,wordpress后台的 Purge Varnish Cache 插件还是清除不到cache,依旧显示 the varnish control terminal is not responding at。谢谢https://mjj.today/i/Srk2Tz https://mjj.today/i/Srkcoi你好6个月前0
对,你说的没错,我配置的时候改了一些东西,现在我按照你的教学,可以启动了,网页可以缓存了,不过wordpress 清除cache 那个插件没用的,我输入本地回环地址127.0.0.1 :6082 ,再输入API key ,插件显示the varnish control terminal is not responding at 127.0.0.1:6082,就你图片那样,然后试一下点击清除cache 那里,他显示error,研究了一天,还是没有不行。你好6个月前1
你好,为啥我按照你的方法,到第三部分,去到真正后源的服务器设定Varnish 部分,我填了真正后源的IP跟端口跟域名,然后重启 Varnish ,就出现这样了? 这是怎么回事? 谢谢[Linux] AMH 7.1 https://amh.sh[varnish-6.6 start] ================================================== =========== [OK] varnish-6.6 is already installed. Could not delete 'vcl_boot.1713549650.959259/vgc.sym': No such file or directory Error: Message from VCC-compiler: VCL version declaration missing Update your VCL to Version 4 syntax, and add vcl 4.1; on the first line of the VCL files. ('/home/usrdata/varnish/default.conf' Line 1 Pos 1) ...#---Running VCC-compiler failed, exited with 2 VCL compilation failedchu6个月前0
很完善的教程‘hu6个月前0
我用gmail EMAIL_SERVER="smtp://********@gmail.com:bpyfv*********chry@smtp.gmail.com:587"叽喳6个月前0
MAIL_SERVER="smtp://no-reply@vort.me:password123@wednesday.mxrouting.net:587"大佬 这个使用outlook 或者gmail 是什么样子的格式? 邮寄已经开启smtp了hu6个月前0
输入框的问题解决了,我没有设置反代,NEXTAUTH_URL改为域名+端口就好了