例行检查
- 我已确认目前没有类似问题
- 我已确认我已升级到最新版本
- 我已完整查看过项目 README,已确定现有版本无法满足需求
- 我理解并愿意跟进此问题,协助测试和提供反馈
- 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的问题可能会被无视或直接关闭
功能描述
能否支持代理url路径不含v1的模型?比如部署的模型的访问路径是 http://xxx.com/chat/completions
,但目前one-api无论是OpenAI渠道还是自定义渠道,都会访问 http://xxx.com/v1/chat/completions
,路径包含了多余的v1。
6条答案
按热度按时间mdfafbf11#
有v1才是标准接口,不应该去迁就非标准吧。
svgewumm2#
我并不是想要抛弃目前的v1标准接口,而是同时兼容其他不带有v1路径的接口。有很多外部模型不是openai标准一模一样的接口,比如本项目目前已适配的AzureOpenAI、Minimax、CloudFlare等等。具体的实现方式,比如可以在“自定义渠道”里加个选项,在此GetFullRequestURL函数中判断一下是否删除v1前缀即可。
one-api/relay/adaptor/openai/helper.go
Lines 18 to 30 in 9321427
| func GetFullRequestURL(baseURL string, requestURL string, channelType int) string { |
| fullRequestURL:=fmt.Sprintf("%s%s", baseURL, requestURL) |
| |
| if strings.HasPrefix(baseURL, "https://gateway.ai.cloudflare.com") { |
| switch channelType { |
| case channeltype.OpenAI: |
| fullRequestURL=fmt.Sprintf("%s%s", baseURL, strings.TrimPrefix(requestURL, "/v1")) |
| case channeltype.Azure: |
| fullRequestURL=fmt.Sprintf("%s%s", baseURL, strings.TrimPrefix(requestURL, "/openai/deployments")) |
| } |
| } |
| return fullRequestURL |
| } |
4bbkushb3#
也许可以采用更通用的方法,支持使用特定渠道的URL来覆盖requestURL,这样可以同时解决#1472的问题。
gjmwrych4#
个人感觉自定义渠道那个地方应该改成自定义完整的请求路径,但是这个做法没有一个完善的方案,因为不兼容openai路径的请求模型,我相信也不兼容openai的请求格式。
w1jd8yoj5#
我希望这个也能添加上,现在有越来越多的网站使用OpenAI格式,但是使用的是类似/api/chat/completions或/something/chat/completions的接口。
mfuanj7w6#
这个有谁知 prop 体在哪个文件里修改么,就是自定义渠道的话自动去掉 v1?我想先自行修改了好使用。