mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-12-16 04:55:57 +08:00
Compare commits
7 Commits
v0.4.8
...
v0.4.9-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bddbf57104 | ||
|
|
9a16b0f9e5 | ||
|
|
3530309a31 | ||
|
|
733ebc067b | ||
|
|
6a8567ac14 | ||
|
|
aabc546691 | ||
|
|
1c82b06f35 |
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -8,11 +8,13 @@ assignees: ''
|
|||||||
---
|
---
|
||||||
|
|
||||||
**例行检查**
|
**例行检查**
|
||||||
|
|
||||||
|
[//]: # (方框内删除已有的空格,填 x 号)
|
||||||
+ [ ] 我已确认目前没有类似 issue
|
+ [ ] 我已确认目前没有类似 issue
|
||||||
+ [ ] 我已确认我已升级到最新版本
|
+ [ ] 我已确认我已升级到最新版本
|
||||||
+ [ ] 我已完整查看过项目 README,尤其是常见问题部分
|
+ [ ] 我已完整查看过项目 README,尤其是常见问题部分
|
||||||
+ [ ] 我理解并愿意跟进此 issue,协助测试和提供反馈
|
+ [ ] 我理解并愿意跟进此 issue,协助测试和提供反馈
|
||||||
+ [ ] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭
|
+ [ ] 我理解并认可上述内容,并理解项目维护者精力有限,**不遵循规则的 issue 可能会被无视或直接关闭**
|
||||||
|
|
||||||
**问题描述**
|
**问题描述**
|
||||||
|
|
||||||
|
|||||||
3
.github/ISSUE_TEMPLATE/config.yml
vendored
3
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -6,6 +6,3 @@ contact_links:
|
|||||||
- name: 赞赏支持
|
- name: 赞赏支持
|
||||||
url: https://iamazing.cn/page/reward
|
url: https://iamazing.cn/page/reward
|
||||||
about: 请作者喝杯咖啡,以激励作者持续开发
|
about: 请作者喝杯咖啡,以激励作者持续开发
|
||||||
- name: 付费部署或定制功能
|
|
||||||
url: https://openai.justsong.cn/
|
|
||||||
about: 加群后联系群主
|
|
||||||
|
|||||||
5
.github/ISSUE_TEMPLATE/feature_request.md
vendored
5
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -8,10 +8,13 @@ assignees: ''
|
|||||||
---
|
---
|
||||||
|
|
||||||
**例行检查**
|
**例行检查**
|
||||||
|
|
||||||
|
[//]: # (方框内删除已有的空格,填 x 号)
|
||||||
+ [ ] 我已确认目前没有类似 issue
|
+ [ ] 我已确认目前没有类似 issue
|
||||||
+ [ ] 我已确认我已升级到最新版本
|
+ [ ] 我已确认我已升级到最新版本
|
||||||
|
+ [ ] 我已完整查看过项目 README,已确定现有版本无法满足需求
|
||||||
+ [ ] 我理解并愿意跟进此 issue,协助测试和提供反馈
|
+ [ ] 我理解并愿意跟进此 issue,协助测试和提供反馈
|
||||||
+ [ ] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭
|
+ [ ] 我理解并认可上述内容,并理解项目维护者精力有限,**不遵循规则的 issue 可能会被无视或直接关闭**
|
||||||
|
|
||||||
**功能描述**
|
**功能描述**
|
||||||
|
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -77,16 +77,17 @@ _✨ All in one 的 OpenAI 接口,整合各种 API 访问方式,开箱即用
|
|||||||
11. 支持**用户邀请奖励**。
|
11. 支持**用户邀请奖励**。
|
||||||
12. 支持以美元为单位显示额度。
|
12. 支持以美元为单位显示额度。
|
||||||
13. 支持发布公告,设置充值链接,设置新用户初始额度。
|
13. 支持发布公告,设置充值链接,设置新用户初始额度。
|
||||||
14. 支持丰富的**自定义**设置,
|
14. 支持模型映射,重定向用户的请求模型。
|
||||||
|
15. 支持丰富的**自定义**设置,
|
||||||
1. 支持自定义系统名称,logo 以及页脚。
|
1. 支持自定义系统名称,logo 以及页脚。
|
||||||
2. 支持自定义首页和关于页面,可以选择使用 HTML & Markdown 代码进行自定义,或者使用一个单独的网页通过 iframe 嵌入。
|
2. 支持自定义首页和关于页面,可以选择使用 HTML & Markdown 代码进行自定义,或者使用一个单独的网页通过 iframe 嵌入。
|
||||||
15. 支持通过系统访问令牌访问管理 API。
|
16. 支持通过系统访问令牌访问管理 API。
|
||||||
16. 支持 Cloudflare Turnstile 用户校验。
|
17. 支持 Cloudflare Turnstile 用户校验。
|
||||||
17. 支持用户管理,支持**多种用户登录注册方式**:
|
18. 支持用户管理,支持**多种用户登录注册方式**:
|
||||||
+ 邮箱登录注册以及通过邮箱进行密码重置。
|
+ 邮箱登录注册以及通过邮箱进行密码重置。
|
||||||
+ [GitHub 开放授权](https://github.com/settings/applications/new)。
|
+ [GitHub 开放授权](https://github.com/settings/applications/new)。
|
||||||
+ 微信公众号授权(需要额外部署 [WeChat Server](https://github.com/songquanpeng/wechat-server))。
|
+ 微信公众号授权(需要额外部署 [WeChat Server](https://github.com/songquanpeng/wechat-server))。
|
||||||
18. 未来其他大模型开放 API 后,将第一时间支持,并将其封装成同样的 API 访问方式。
|
19. 未来其他大模型开放 API 后,将第一时间支持,并将其封装成同样的 API 访问方式。
|
||||||
|
|
||||||
## 部署
|
## 部署
|
||||||
### 基于 Docker 进行部署
|
### 基于 Docker 进行部署
|
||||||
@@ -111,6 +112,7 @@ server{
|
|||||||
proxy_set_header X-Forwarded-For $remote_addr;
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
proxy_cache_bypass $http_upgrade;
|
proxy_cache_bypass $http_upgrade;
|
||||||
proxy_set_header Accept-Encoding gzip;
|
proxy_set_header Accept-Encoding gzip;
|
||||||
|
proxy_read_timeout 300s; # GPT-4 需要较长的超时时间,请自行调整
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -456,5 +456,7 @@
|
|||||||
"提示": "Prompt",
|
"提示": "Prompt",
|
||||||
"补全": "Completion",
|
"补全": "Completion",
|
||||||
"消耗额度": "Used Quota",
|
"消耗额度": "Used Quota",
|
||||||
"可选值": "Optional Values"
|
"可选值": "Optional Values",
|
||||||
|
"渠道不存在:%d": "Channel does not exist: %d",
|
||||||
|
"数据库一致性已被破坏,请联系管理员": "Database consistency has been broken, please contact the administrator"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,9 +75,14 @@ func Distribute() func(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
channel, err = model.CacheGetRandomSatisfiedChannel(userGroup, modelRequest.Model)
|
channel, err = model.CacheGetRandomSatisfiedChannel(userGroup, modelRequest.Model)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
message := "无可用渠道"
|
||||||
|
if channel != nil {
|
||||||
|
common.SysError(fmt.Sprintf("渠道不存在:%d", channel.Id))
|
||||||
|
message = "数据库一致性已被破坏,请联系管理员"
|
||||||
|
}
|
||||||
c.JSON(http.StatusServiceUnavailable, gin.H{
|
c.JSON(http.StatusServiceUnavailable, gin.H{
|
||||||
"error": gin.H{
|
"error": gin.H{
|
||||||
"message": "无可用渠道",
|
"message": message,
|
||||||
"type": "one_api_error",
|
"type": "one_api_error",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ func GetRandomSatisfiedChannel(group string, model string) (*Channel, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
channel := Channel{}
|
channel := Channel{}
|
||||||
|
channel.Id = ability.ChannelId
|
||||||
err = DB.First(&channel, "id = ?", ability.ChannelId).Error
|
err = DB.First(&channel, "id = ?", ability.ChannelId).Error
|
||||||
return &channel, err
|
return &channel, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,9 +74,6 @@ const OperationSetting = () => {
|
|||||||
const submitConfig = async (group) => {
|
const submitConfig = async (group) => {
|
||||||
switch (group) {
|
switch (group) {
|
||||||
case 'monitor':
|
case 'monitor':
|
||||||
if (originInputs['AutomaticDisableChannelEnabled'] !== inputs.AutomaticDisableChannelEnabled) {
|
|
||||||
await updateOption('AutomaticDisableChannelEnabled', inputs.AutomaticDisableChannelEnabled);
|
|
||||||
}
|
|
||||||
if (originInputs['ChannelDisableThreshold'] !== inputs.ChannelDisableThreshold) {
|
if (originInputs['ChannelDisableThreshold'] !== inputs.ChannelDisableThreshold) {
|
||||||
await updateOption('ChannelDisableThreshold', inputs.ChannelDisableThreshold);
|
await updateOption('ChannelDisableThreshold', inputs.ChannelDisableThreshold);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user