Skip to content

Commit 654cbfc

Browse files
committed
fix: /usage 改为优先使用 api key
1 parent ea868d6 commit 654cbfc

File tree

2 files changed

+31
-26
lines changed

2 files changed

+31
-26
lines changed

README.md

+20-20
Original file line numberDiff line numberDiff line change
@@ -102,26 +102,26 @@
102102

103103
输入使用时可忽略大小写
104104

105-
| 命令 | 可用角色 | 说明 |
106-
| ----------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------- |
107-
| /help | 游客,用户 | 获取命令帮助信息 |
108-
| /bindKey | 游客,用户 | 绑定 OpenAI api key,格式如 /bindKey xxx。如已绑定 key,则会覆盖。绑定后先用 /testKey 命令测试是否正常可用 |
109-
| /unbindKey | 用户 | 解绑 OpenAI api key |
110-
| /testKey | 用户 | 调用 OpenAI 列出模型接口,测试 api key 是否正常绑定可用,不消耗用量 |
111-
| /setChatType | 用户,试用者 | 切换对话模式,可选'单聊'和'串聊',默认'单聊'。'单聊'只处理当前的输入,'串聊'会带上历史聊天记录请求 OpenAI,消耗更多用量 |
112-
| /newChat | 用户,试用者 | 清除之前的串聊历史记录,开始新的串聊 |
113-
| /retry | 用户,试用者 | 根据 msgId 获取对应回答,回答只会保留 3 分钟。保留时间可通过 ANSWER_EXPIRES_MINUTES 配置 |
114-
| .. | 用户,试用者 | 重试上一个延迟的回答 |
115-
| 。。 | 用户,试用者 | 重试上一个延迟的回答 |
116-
| /bindSessionKey | 游客,用户 | 绑定 OpenAI session key,可查看用量页面对 <https://api.openai.com/v1/usage> 的请求头获得 |
117-
| /unbindSessionKey | 用户 | 解绑 OpenAI session key |
118-
| /usage | 用户 | 获取本月用量信息,可能有 5 分钟左右的延迟,需要绑定 OpenAI session key |
119-
| /freeUsage | 用户 | 获取免费用量信息,可能有 5 分钟左右的延迟,需要绑定 OpenAI session key |
120-
| /system | 用户,管理员 | 查看当前一些系统配置信息,如当前 OpenAI 模型,当前用户 ID 等 |
121-
| /faq | 游客,用户 | 一些常见问题 |
122-
| /adminAuth | 游客,用户 | 通过 token 认证成为管理员,避免每个平台配置 admin 用户 ID 的麻烦。需要先配置 ADMIN_AUTH_TOKEN |
123-
| /testAlarm | 管理员 | 测试发送告警消息。需要先配置 ALARM_URL |
124-
| /feedback | 游客,用户 | 用户向开发者发送反馈。需要先配置 FEEDBACK_URL |
105+
| 命令 | 可用角色 | 说明 |
106+
| ----------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
107+
| /help | 游客,用户 | 获取命令帮助信息 |
108+
| /bindKey | 游客,用户 | 绑定 OpenAI api key,格式如 /bindKey xxx。如已绑定 key,则会覆盖。绑定后先用 /testKey 命令测试是否正常可用 |
109+
| /unbindKey | 用户 | 解绑 OpenAI api key |
110+
| /testKey | 用户 | 调用 OpenAI 列出模型接口,测试 api key 是否正常绑定可用,不消耗用量 |
111+
| /setChatType | 用户,试用者 | 切换对话模式,可选'单聊'和'串聊',默认'单聊'。'单聊'只处理当前的输入,'串聊'会带上历史聊天记录请求 OpenAI,消耗更多用量 |
112+
| /newChat | 用户,试用者 | 清除之前的串聊历史记录,开始新的串聊 |
113+
| /retry | 用户,试用者 | 根据 msgId 获取对应回答,回答只会保留 3 分钟。保留时间可通过 ANSWER_EXPIRES_MINUTES 配置 |
114+
| .. | 用户,试用者 | 重试上一个延迟的回答 |
115+
| 。。 | 用户,试用者 | 重试上一个延迟的回答 |
116+
| /bindSessionKey | 游客,用户 | 绑定 OpenAI session key,可查看用量页面对 <https://api.openai.com/v1/usage> 的请求头获得,每次重新登陆原来的 session key 会失效,需要重新绑定 |
117+
| /unbindSessionKey | 用户 | 解绑 OpenAI session key |
118+
| /usage | 用户 | 获取本月用量信息,可能有 5 分钟左右的延迟,需要绑定 OpenAI api key 或 session key |
119+
| /freeUsage | 用户 | 获取免费用量信息,可能有 5 分钟左右的延迟,需要绑定 OpenAI session key |
120+
| /system | 用户,管理员 | 查看当前一些系统配置信息,如当前 OpenAI 模型,当前用户 ID 等 |
121+
| /faq | 游客,用户 | 一些常见问题 |
122+
| /adminAuth | 游客,用户 | 通过 token 认证成为管理员,避免每个平台配置 admin 用户 ID 的麻烦。需要先配置 ADMIN_AUTH_TOKEN |
123+
| /testAlarm | 管理员 | 测试发送告警消息。需要先配置 ALARM_URL |
124+
| /feedback | 游客,用户 | 用户向开发者发送反馈。需要先配置 FEEDBACK_URL |
125125

126126
## OpenAI 配置
127127

src/controller/openai/platform/base.ts

+11-6
Original file line numberDiff line numberDiff line change
@@ -423,12 +423,12 @@ export abstract class Base<T extends Platform<PlatformType>> {
423423
fn: this.unbindKey.bind(this),
424424
},
425425
[commandName.usage]: {
426-
description: `获取本月用量信息,可能有 5 分钟左右的延迟,需要先用命令 ${commandName.bindSessionKey} 进行绑定`,
426+
description: `获取本月用量信息,可能有 5 分钟左右的延迟,需要绑定 api key 或 session key`,
427427
roles: [CONST.ROLE.USER],
428428
fn: this.getUsage.bind(this),
429429
},
430430
[commandName.freeUsage]: {
431-
description: `获取免费用量信息,可能有 5 分钟左右的延迟,需要先用命令 ${commandName.bindSessionKey} 进行绑定`,
431+
description: `获取免费用量信息,可能有 5 分钟左右的延迟,需要先用命令 ${commandName.bindSessionKey} 绑定 session key`,
432432
roles: [CONST.ROLE.USER],
433433
fn: this.getFreeUsage.bind(this),
434434
},
@@ -613,11 +613,16 @@ export abstract class Base<T extends Platform<PlatformType>> {
613613
const month = now.getUTCMonth() === 11 ? '01' : `${now.getUTCMonth() + 2}`
614614
const endDate = `${year}-${month.padStart(2, '0')}-01`
615615

616-
const keyRes = await this.getSessionKey()
617-
if (!keyRes.success) {
618-
return keyRes
616+
// 用量接口目前两种 key 都可用,优先使用 api key
617+
let key = this.ctx.apiKey
618+
if (!key) {
619+
const keyRes = await this.getSessionKey()
620+
if (keyRes.success) {
621+
key = keyRes.data
622+
}
619623
}
620-
const openAi = new OpenAiBrowserClient(keyRes.data, this.logger)
624+
625+
const openAi = new OpenAiBrowserClient(key, this.logger)
621626
const r = await openAi.getUsage(startDate, endDate)
622627
if (!r.success) {
623628
return genFail(`获取失败 ${r.msg}`)

0 commit comments

Comments
 (0)