MartialBE / one-api

OpenAI 接口管理 & 分发系统,改自songquanpeng/one-api。支持更多模型,加入统计页面,完善非openai模型的函数调用。
https://one-api-martialbe.vercel.app/
Apache License 2.0
815 stars 166 forks source link

建议增加自定义请求路径(API前缀)功能 #222

Closed ssfun closed 1 month ago

ssfun commented 1 month ago

例行检查

功能描述 希望能增加环境变量 API_PREFIX ,作为API 前缀,设置后需请求 /your_prefix/v1/chat/completions

应用场景 huggingface space 部署 one-api ,huggingface限制访问 /v1/chat/completions,会报 {"error":{"proxy_note":"Server unavailable, error code: 349453"}} 添加自定义API前缀,可以实现正常请求,在其它项目上已经实验过,可行。

============================= 我自己尝试修改 router/relay-router.go 中的 relayV1Router := router.Group("/v1") 为 relayV1Router := router.Group("/api/v1") 但是请求会报错 {"error":{"message":"Not Found","type":"one_api_error"}}。不知道该怎么修改,特来请教。感谢!

MartialBE commented 1 month ago

其实不用更改代码的, 你在 Nginx 或者 caddy 进行配置就好了。

以caddy为例子:

your-domain.com {
        handle_path /your_prefix/v1/* {
             rewrite * /v1{path}
             reverse_proxy http://127.0.0.1:3000
        }
        reverse_proxy http://127.0.0.1:3000
}

如果你想要改代码,那么你还需要改 这里的判断: https://github.com/MartialBE/one-api/blob/671aa51f426f5efeb737328677b0028463a48b7a/relay/common.go#L23

ssfun commented 1 month ago

感谢解疑,修改common.go后,可以正常请求了