AutoGPT-Next-Web icon indicating copy to clipboard operation
AutoGPT-Next-Web copied to clipboard

可否支持Azure Openai API?

Open jebouruama opened this issue 2 years ago • 46 comments

AutoGPT本身是支持azure openai的,如下图: CleanShot 2023-04-21 at 19 52 43@2x 但是目前本项目仅支持配置openai 的apikey,无法使用azure openai。或者能够添加配置修改openai的endpoint也可以,因为已有项目可以做azure [openai到官方openai的proxy azure-openai-proxy

jebouruama avatar Apr 21 '23 11:04 jebouruama

@jebouruama Azure 不太熟 可以一起研究研究 欢迎pr

Dogtiti avatar Apr 22 '23 02:04 Dogtiti

@jebouruama Azure 不太熟 可以一起研究研究 欢迎pr

抱歉,我自己没有开发能力,仅从项目配置的角度提个建议: openai的官方api的endpoint为:https://api.openai.com/v1/chat/completions , 而azure提供的openai api服务与openai本质相同,调用方式略有不同。目前已有多个git项目可以实现azure openai到官方openai的proxy操作,即自行搭建一个endpoint,例如https://mydomain/v1/chat/completions ,其中除domainname外其它与官方API调用完全兼容。

本项目目前仅能配置openai的官方key,如能新增一个配置项(例如openai_base_url),可自行配置openai的endpoint的url(将官方的https://api.openai.com/v1/chat/completions 更改为其它),则就可以支持使用azure openai服务了。

jebouruama avatar Apr 24 '23 09:04 jebouruama

我们会考虑一下这个,目前来说还要看模型配置,不仅仅是一个url的改变,有新的计划我会通知你

Dogtiti avatar Apr 24 '23 09:04 Dogtiti

感谢 大佬的响应,确实不只是更改url,主要的变更还涉及model的mapper,但是我的理解是这个mapper在proxy项目中即可设置为和openai官方一致,所以其实只需要修改openai的endpoint即可。您可以参考这个项目看一下https://github.com/hbsgithub/deno-azure-openai-proxy 我使用该项目配置好自己的endpoint后,在其它可支持修改endpoint的chatgpt项目中均可无障碍使用azure openai服务了。

jebouruama avatar Apr 24 '23 09:04 jebouruama

嗯我看了一下你这个,相当于你自己部署了一个代理服务去转发你的请求,这是一个方案,但是我觉得只适合个人,对于其他人来说,部署服务是有成本的,虽然这个成本可能很低,我考虑一下方案吧,如果要做我们肯定希望用户不付出额外成本,例如在项目里去适配azure模型,而用户只需要选择模型就好了

Dogtiti avatar Apr 24 '23 11:04 Dogtiti

可能考虑先增加一个proxy_url配置,然后这样可能满足你这样的需求,你自己去做代理服务,如果你的服务不对那就会报错

Dogtiti avatar Apr 24 '23 11:04 Dogtiti

感谢,确实正如你所说,这个方案不完美,能原生支持azure openai的api最好了,但是新增一个base_url目前实现最简单。

jebouruama avatar Apr 25 '23 10:04 jebouruama

ok,我晚上来研究一下,如果可以的话,希望到时能邀请你来帮我测试

Dogtiti avatar Apr 25 '23 10:04 Dogtiti

感谢大佬支持,我来测试义不容辞

jebouruama avatar Apr 25 '23 16:04 jebouruama

好了 我也来测试

zhuyaguang avatar Apr 26 '23 00:04 zhuyaguang

测试+1

behinder85 avatar Apr 26 '23 05:04 behinder85

新增环境变量OPENAI_API_BASE_URL,有哪位有空用这个https://github.com/Dogtiti/AutoGPT-Next-Web/pull/67 分支测试一下,看看有没有问题

Dogtiti avatar Apr 26 '23 14:04 Dogtiti

请问clone了feature/openai-base-url分支后,在哪里设置环境变量?

jebouruama avatar Apr 26 '23 16:04 jebouruama

请问clone了feature/openai-base-url分支后,在哪里设置环境变量?

你是用什么部署的,vercel有在设置面板里

Dogtiti avatar Apr 26 '23 23:04 Dogtiti

访问OpenAI API出错。请检查您的API密钥或稍后重试。

haiker666 avatar Apr 27 '23 01:04 haiker666

访问OpenAI API出错。请检查您的API密钥或稍后重试。

设置了哪些环境变量? 尝试在页面设置里手动用一下key看看是否还是报错

Dogtiti avatar Apr 27 '23 01:04 Dogtiti

设置了 OPENAI_API_BASE_URL 和OPENAI_API_KEY

手动key也报错

haiker666 avatar Apr 27 '23 02:04 haiker666

我也用的这个https://github.com/hbsgithub/deno-azure-openai-proxy 搭建的proxy

haiker666 avatar Apr 27 '23 02:04 haiker666

@haiker666 get,我看看是什么问题

Dogtiti avatar Apr 27 '23 02:04 Dogtiti

请问clone了feature/openai-base-url分支后,在哪里设置环境变量?

你是用什么部署的,vercel有在设置面板里

我是clone到本地,用setup.sh --local运行的,还发现一个奇怪的现象,因机器上原先3000端口跑了官方的agentgpt,启动本项目时提示更换为3001,结果3001端口只能本机访问,公网无法访问,我查看监听端口发现仅开启了ipv6的3001端口,ipv4没有开3001,不知道是啥情况。

另我对分支操作不是很熟悉,请问如何指定一个特定的分支部署到vercel上?

jebouruama avatar Apr 27 '23 04:04 jebouruama

@haiker666 看起来是你那边提供的url有点问题,可能缺了什么参数,晚点我来试一下,另外你的log里可能会泄露你的url信息可能会被人利用,建议隐私信息发邮件给我,另外请废弃你上面的url重新生成或者换域名

Dogtiti avatar Apr 27 '23 04:04 Dogtiti

请问clone了feature/openai-base-url分支后,在哪里设置环境变量?

你是用什么部署的,vercel有在设置面板里

我是clone到本地,用setup.sh --local运行的,还发现一个奇怪的现象,因机器上原先3000端口跑了官方的agentgpt,启动本项目时提示更换为3001,结果3001端口只能本机访问,公网无法访问,我查看监听端口发现仅开启了ipv6的3001端口,ipv4没有开3001,不知道是啥情况。

另我对分支操作不是很熟悉,请问如何指定一个特定的分支部署到vercel上?

本地可能无法测试,不过本地有其他代理办法,这个不展开讲了,上面有个朋友在帮忙测了,你可以稍微等等,因为部署的操作一两句说不清楚,可以看下中文文档里的详细教程 另外本地默认都是3000端口,如果有占用的情况会自增到3001依次类推

Dogtiti avatar Apr 27 '23 04:04 Dogtiti

我尝试在vercel里设置了OPENAI_API_BASE_URL和OPENAI_API_KEY 并且使用feature/openai-base-url分支 但仍报错

Error: Request failed with status code 404 at (node_modules/langchain/dist/util/axios-fetch-adapter.js:316:0) at (node_modules/langchain/dist/util/axios-fetch-adapter.js:25:0) at (node_modules/langchain/dist/util/axios-fetch-adapter.js:175:0) at (node_modules/langchain/dist/util/axios-fetch-adapter.js:167:0) at (node_modules/p-retry/index.js:50:0) { config: { transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }, adapter: [Function: x], transformRequest: [ [Function] ], transformResponse: [ [Function] ], timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, validateStatus: [Function: validateStatus], headers: { Accept: 'application/json, text/plain, /', Content-Type: 'application/json', User-Agent: 'OpenAI/NodeJS/3.2.1', Authorization: 'Bearer “Azure的API key”' }, method: 'post', data: '{"model":"gpt-3.5-turbo","temperature":0.9,"top_p":1,"frequency_penalty":0,"presence_penalty":0,"n":1,"max_tokens":400,"stream":false,"messages":[{"role":"user","content":"You are an autonomous task creation AI called AgentGPT. You have the following objective 目标. Create a list of zero to three tasks to be completed by your AI system such that your goal is more closely reached or completely reached. Return the response as an array of strings that can be used in JSON.parse(). Use ."}]}', url: '“deno的代理链接”/v1/chat/completions' }, request: { }, response: { ok: false, status: 404, statusText: 'Not Found', headers: { apim-request-id: '2e6b2e8e-d135-428c-9c01-f128a9271d5e', cf-cache-status: 'DYNAMIC', cf-ray: '7be4ffd2830a2544-SJC', connection: 'keep-alive', content-type: 'application/json', date: 'Thu, 27 Apr 2023 06:27:23 GMT', openai-processing-ms: '42.4244', server: 'cloudflare', strict-transport-security: 'max-age=31536000; includeSubDomains; preload', transfer-encoding: 'chunked', vary: 'Accept-Encoding', via: 'http/1.1 edgeproxy', x-content-type-options: 'nosniff', x-ms-region: 'East US' }, config: { transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }, adapter: [Function: x], transformRequest: [ [Function] ], transformResponse: [ [Function] ], timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, validateStatus: [Function: validateStatus], headers: { Accept: 'application/json, text/plain, */*', Content-Type: 'application/json', User-Agent: 'OpenAI/NodeJS/3.2.1', Authorization: 'Bearer “Azure的API key”' }, method: 'post', data: '{"model":"gpt-3.5-turbo","temperature":0.9,"top_p":1,"frequency_penalty":0,"presence_penalty":0,"n":1,"max_tokens":400,"stream":false,"messages":[{"role":"user","content":"You are an autonomous task creation AI called AgentGPT. You have the following objective `目标`. Create a list of zero to three tasks to be completed by your AI system such that your goal is more closely reached or completely reached. Return the response as an array of strings that can be used in JSON.parse(). Use ."}]}', url: '“deno代理链接”/v1/chat/completions' }, request: { }, data: '{"error":{"code":"DeploymentNotFound", "message":"The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again."}}\n' }, isAxiosError: true, toJSON: [Function] }

“”内的内容已隐去个人信息

behinder85 avatar Apr 27 '23 06:04 behinder85

@zxj1009587922 我尝试使用了那个代理服务出现以下错误 image 但是我是没有azure的,所以我只是部署了一个服务来看看是不是配置问题,目前我这边错误500说明应该是生效了,但是由于我deno的服务本身是没有连接到azure所以报错了,你的url在环境变量是如何填的呢。如果我们的报错都是404那说明是没有生效,但是目前看来可能是你配置有点问题,可以再看看,我对这个https://github.com/hbsgithub/deno-azure-openai-proxy 也是第一次用,可以一起讨论讨论,另外可以考虑截图贴错误信息打个码就好了,上面的不太好阅读 我贴一下我的配置你看看是不是一致的,如果还不行那就得等我去借个key再试试 T T image

Dogtiti avatar Apr 27 '23 12:04 Dogtiti

@zxj1009587922 我尝试使用了那个代理服务出现以下错误 image 但是我是没有azure的,所以我只是部署了一个服务来看看是不是配置问题,目前我这边错误500说明应该是生效了,但是由于我deno的服务本身是没有连接到azure所以报错了,你的url在环境变量是如何填的呢。如果我们的报错都是404那说明是没有生效,但是目前看来可能是你配置有点问题,可以再看看,我对这个https://github.com/hbsgithub/deno-azure-openai-proxy 也是第一次用,可以一起讨论讨论,另外可以考虑截图贴错误信息打个码就好了,上面的不太好阅读 我贴一下我的配置你看看是不是一致的,如果还不行那就得等我去借个key再试试 T T image

我们都是直接xxx.demo.dev 没有/v1 我刚按照你这个v1重新部署了 也是一样 错误 你可以tg@kongyiji 我给你提供key什么的帮你试试

haiker666 avatar Apr 27 '23 12:04 haiker666

@zxj1009587922 有邮箱吗,或者discord,方便点,也可以直接发邮件给我[email protected] ,提供一个deno链接和key我直接用你部署的来测一下

Dogtiti avatar Apr 27 '23 13:04 Dogtiti

@zxj1009587922 有邮箱吗,或者discord,方便点,也可以直接发邮件给我[email protected] ,提供一个deno链接和key我直接用你部署的来测一下

已发

behinder85 avatar Apr 27 '23 14:04 behinder85

@zxj1009587922 我尝试使用了那个代理服务出现以下错误 image 但是我是没有azure的,所以我只是部署了一个服务来看看是不是配置问题,目前我这边错误500说明应该是生效了,但是由于我deno的服务本身是没有连接到azure所以报错了,你的url在环境变量是如何填的呢。如果我们的报错都是404那说明是没有生效,但是目前看来可能是你配置有点问题,可以再看看,我对这个https://github.com/hbsgithub/deno-azure-openai-proxy 也是第一次用,可以一起讨论讨论,另外可以考虑截图贴错误信息打个码就好了,上面的不太好阅读 我贴一下我的配置你看看是不是一致的,如果还不行那就得等我去借个key再试试 T T image

是一样的,我也是用的带v1的链接(其实带与不带都试了,一样的报错

behinder85 avatar Apr 27 '23 14:04 behinder85

@haiker666 @zxj1009587922 我目前已经在vercel上调通了,整体步骤没变,唯一的区别是domain.deno.dev/v1 后面v1不能漏,我去看了https://github.com/hbsgithub/deno-azure-openai-proxy 的源码 发现他解析时也是v1开始解析,然后之前好像看到有人留言说在其他地方都不带,这个有点迷,暂时不知道为什么,不过目前看来不重要,代码已经合到main分支了,你们可以试一试 image

Dogtiti avatar Apr 27 '23 16:04 Dogtiti

感谢晚上提供key测试的小伙伴,记得重新生成key和deno服务哟🤓

Dogtiti avatar Apr 27 '23 17:04 Dogtiti