Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

可否支持Azure Openai API? #13

Closed
jebouruama opened this issue Apr 21, 2023 · 46 comments
Closed

可否支持Azure Openai API? #13

jebouruama opened this issue Apr 21, 2023 · 46 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@jebouruama
Copy link

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 22, 2023

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

@Dogtiti Dogtiti added the help wanted Extra attention is needed label Apr 22, 2023
@jebouruama
Copy link
Author

jebouruama commented Apr 24, 2023

@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服务了。

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 24, 2023

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

@jebouruama
Copy link
Author

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 24, 2023

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 24, 2023

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

@jebouruama
Copy link
Author

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 25, 2023

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

@Dogtiti Dogtiti self-assigned this Apr 25, 2023
@jebouruama
Copy link
Author

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

@zhuyaguang
Copy link

好了 我也来测试

@behinder85
Copy link

测试+1

This was referenced Apr 26, 2023
@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 26, 2023

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

@jebouruama
Copy link
Author

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 26, 2023

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

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

@haiker666
Copy link

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

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

@haiker666
Copy link

设置了 OPENAI_API_BASE_URL 和OPENAI_API_KEY

手动key也报错

@haiker666
Copy link

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

@jebouruama
Copy link
Author

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

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

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

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

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

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

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

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

@behinder85
Copy link

我尝试在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]
}

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

@haiker666
Copy link

@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什么的帮你试试

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

@behinder85
Copy link

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

已发

@behinder85
Copy link

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

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 27, 2023

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

@behinder85
Copy link

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

辛苦!
拜谢

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 28, 2023

@zxj1009587922 你试一下 反馈个结果给我 ,如果有问题的话我一般会在晚上看看

@haiker666
Copy link

image

还是有问题,现在是这样一个状况,如果你不去web页面的设置里面手动设置key的话,是可以正常输出内容的
但是会提示“非常抱歉,由于这只是一个演示,我们的代理程序不能运行太长时间。请注意,如果您需要更长的运行时间,请在设置中提供自己的API密钥。正在关闭...”
当你打开设置输入了自己的api
就变成了
“访问OpenAI API出错。请检查您的API密钥或稍后重试。”

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 28, 2023 via email

@haiker666
Copy link

ok,我大概知道什么问题了,晚上再修复一下,这就意味着其实这条路是走通了,但是一些自定义配置用不了,是这样吗

对的 没毛病,就是点击设置,那个key 一输入上去 就不可用了,修复一下就可以了

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 28, 2023 via email

@behinder85
Copy link

image

还是有问题,现在是这样一个状况,如果你不去web页面的设置里面手动设置key的话,是可以正常输出内容的 但是会提示“非常抱歉,由于这只是一个演示,我们的代理程序不能运行太长时间。请注意,如果您需要更长的运行时间,请在设置中提供自己的API密钥。正在关闭...” 当你打开设置输入了自己的api 就变成了 “访问OpenAI API出错。请检查您的API密钥或稍后重试。”

成功+1
果然是我代理部署的问题😢😂

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 28, 2023

晚上再改一波,放到设置里面可能会好一点,不然换地址就得重新部署一次,有点不太方便,看你们用deno代理的还不少,那可能会经常变换服务地址😂

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 28, 2023

另外有人到时愿意贡献一份文档教程吗,结合deno使用的

@behinder85
Copy link

另外有人到时愿意贡献一份文档教程吗,结合deno使用的

我晚上来写一下吧
还是发您的邮箱
这个不难的😁

晚上再改一波,放到设置里面可能会好一点,不然换地址就得重新部署一次,有点不太方便,看你们用deno代理的还不少,那可能会经常变换服务地址😂

辛苦辛苦!!!
拜谢👍😘

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 28, 2023

重构完成啦,可以在设置面板里输入代理地址了,注意只有用自己的api key 时才可以使用代理地址
另外自己的代理地址设置好Access-Control-Allow-Origin": "*",防止跨域问题

@jebouruama
Copy link
Author

刚刚测试了一下新版本,很奇怪第一次部署后访问依然失败,日志提示errors#no_secret Please define a secret in production,我将设置界面参数重置后,重新填写一遍,就可以正常工作了。经测试,选择gpt模型3.5和4均可正常使用auzre openai api了,感谢大佬的更新!

@Dogtiti
Copy link
Collaborator

Dogtiti commented Apr 29, 2023

刚刚测试了一下新版本,很奇怪第一次部署后访问依然失败,日志提示errors#no_secret Please define a secret in production,我将设置界面参数重置后,重新填写一遍,就可以正常工作了。经测试,选择gpt模型3.5和4均可正常使用auzre openai api了,感谢大佬的更新!

get,auth错误我这几天处理,不影响功能,设置面板的问题我再看一下

@behinder85
Copy link

behinder85 commented May 3, 2023

刚刚测试了一下新版本,很奇怪第一次部署后访问依然失败,日志提示错误#no_secret 请在生产中定义一个密钥,我将设置界面参数重置后,重新填写一遍,就可以正常工作了。经测试,选择gpt模型3.5和4均可正常使用auzre openai API了,感谢大佬的更新!

想问下是用的哪个分支呀,我用main分支,在设置界面提示我key错误,重置了也没法正常工作
微信图片_20230503222431

环境变量只设置了Azure的key对应OPENAI_API_KEY
image

@Dogtiti
Copy link
Collaborator

Dogtiti commented May 3, 2023

刚刚测试了一下新版本,很奇怪第一次部署后访问依然失败,日志提示错误#no_secret 请在生产中定义一个密钥,我将设置界面参数重置后,重新填写一遍,就可以正常工作了。经测试,选择gpt模型3.5和4均可正常使用auzre openai API了,感谢大佬的更新!

想问下是用的哪个分支呀,我用main分支,在设置界面提示我key错误,重置了也没法正常工作 微信图片_20230503222431

环境变量只设置了Azure的key对应OPENAI_API_KEY image

等我更新一波 这个校验key的逻辑是校验的openaikey的 我处理下

@Dogtiti
Copy link
Collaborator

Dogtiti commented May 4, 2023

@zxj1009587922 更新代码再试试

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants