feat: 轮询geminiKeys,用英文逗号隔开 (#744)

This commit is contained in:
misaka20002 2025-01-04 14:49:52 +08:00 committed by GitHub
parent 25520ba9fe
commit 7974c6a1c9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 17 additions and 13 deletions

View file

@ -100,7 +100,7 @@ export class bym extends plugin {
let client = new CustomGoogleGeminiClient({
e,
userId: e.sender.user_id,
key: Config.geminiKey,
key: Config.getGeminiKey(),
model: Config.geminiModel,
baseUrl: Config.geminiBaseUrl,
debug: Config.debug

View file

@ -617,7 +617,7 @@ ${translateLangLabels}
let client = new CustomGoogleGeminiClient({
e,
userId: e.sender.user_id,
key: Config.geminiKey,
key: Config.getGeminiKey(),
model: 'gemini-1.5-flash-latest',
baseUrl: Config.geminiBaseUrl,
debug: Config.debug

View file

@ -592,7 +592,7 @@ export function supportGuoba () {
{
field: 'geminiKey',
label: 'API密钥',
bottomHelpMessage: '前往https://makersuite.google.com/app/apikey获取',
bottomHelpMessage: '前往https://makersuite.google.com/app/apikey获取如果有多个Keys用英文逗号隔开',
component: 'InputPassword'
},
{

View file

@ -721,7 +721,7 @@ class Core {
let client = new CustomGoogleGeminiClient({
e,
userId: e.sender.user_id,
key: Config.geminiKey,
key: Config.getGeminiKey(),
model: Config.geminiModel,
baseUrl: Config.geminiBaseUrl,
debug: Config.debug

View file

@ -267,14 +267,18 @@ config.version = defaultConfig.version
export const Config = new Proxy(config, {
get(target, property) {
if (property === 'geminiKey') {
if (typeof target[property] === 'string' && target[property].includes(',')) {
const keys = target[property].split(',').map(key => key.trim()).filter(Boolean)
const selectedKey = keys[Math.floor(Math.random() * keys.length)]
console.log(`[ChatGPT-Plugin] 当前使用的Gemini Key: ${selectedKey.slice(0, 8)}...`)
return selectedKey
if (property === 'getGeminiKey') {
return function () {
if (target["geminiKey"]?.length === 0) {
return "";
}
const geminiKeyArr = target["geminiKey"]?.trim().split(/[,]/);
const randomIndex = Math.floor(Math.random() * geminiKeyArr.length);
logger.info(`[chatgpt]随机使用第${randomIndex + 1}个gemini Key: ${geminiKeyArr[randomIndex].replace(/(.{7}).*(.{10})/, '$1****$2')}`);
return geminiKeyArr[randomIndex];
}
}
return target[property]
},
set(target, property, value) {

View file

@ -65,7 +65,7 @@ export class WebsiteTool extends AbstractTool {
let client = new CustomGoogleGeminiClient({
e,
userId: e?.sender?.user_id,
key: Config.geminiKey,
key: Config.getGeminiKey(),
model: Config.geminiModel,
baseUrl: Config.geminiBaseUrl,
debug: Config.debug

View file

@ -146,7 +146,7 @@ export async function translate (msg, to = 'auto', from = 'auto', ai = Config.tr
}
case 'gemini': {
let client = new CustomGoogleGeminiClient({
key: Config.geminiKey,
key: Config.getGeminiKey(),
model: Config.geminiModel,
baseUrl: Config.geminiBaseUrl,
debug: Config.debug