From a393edfaa4c0b774b5cb41c02f0b79d0a9b8b6d5 Mon Sep 17 00:00:00 2001 From: binary-husky Date: Fri, 21 Jul 2023 22:49:07 +0800 Subject: [PATCH] ALLOW CUSTOM API KEY PATTERN --- config.py | 6 +++++- toolbox.py | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/config.py b/config.py index d249940810..553ae70621 100644 --- a/config.py +++ b/config.py @@ -136,4 +136,8 @@ # Claude API KEY -ANTHROPIC_API_KEY = "" \ No newline at end of file +ANTHROPIC_API_KEY = "" + + +# 自定义API KEY格式 +CUSTOM_API_KEY_PATTERN = "" \ No newline at end of file diff --git a/toolbox.py b/toolbox.py index 0a5db765ea..89a46fbcca 100644 --- a/toolbox.py +++ b/toolbox.py @@ -538,7 +538,11 @@ def load_chat_cookies(): return {'api_key': API_KEY, 'llm_model': LLM_MODEL} def is_openai_api_key(key): - API_MATCH_ORIGINAL = re.match(r"sk-[a-zA-Z0-9]{48}$", key) + CUSTOM_API_KEY_PATTERN, = get_conf('CUSTOM_API_KEY_PATTERN') + if len(CUSTOM_API_KEY_PATTERN) != 0: + API_MATCH_ORIGINAL = re.match(CUSTOM_API_KEY_PATTERN, key) + else: + API_MATCH_ORIGINAL = re.match(r"sk-[a-zA-Z0-9]{48}$", key) return bool(API_MATCH_ORIGINAL) def is_azure_api_key(key): @@ -594,7 +598,7 @@ def select_api_key(keys, llm_model): if is_azure_api_key(k): avail_key_list.append(k) if len(avail_key_list) == 0: - raise RuntimeError(f"您提供的api-key不满足要求,不包含任何可用于{llm_model}的api-key。您可能选择了错误的模型或请求源(右下角更换模型菜单中可切换openai,azure和api2d请求源)") + raise RuntimeError(f"您提供的api-key不满足要求,不包含任何可用于{llm_model}的api-key。您可能选择了错误的模型或请求源(右下角更换模型菜单中可切换openai,azure,claude,api2d等请求源)。") api_key = random.choice(avail_key_list) # 随机负载均衡 return api_key @@ -670,12 +674,12 @@ def read_single_conf_with_lru_cache(arg): # 在读取API_KEY时,检查一下是不是忘了改config if arg == 'API_KEY': - print亮蓝(f"[API_KEY] 本项目现已支持OpenAI和API2D的api-key。也支持同时填写多个api-key,如API_KEY=\"openai-key1,openai-key2,api2d-key3\"") + print亮蓝(f"[API_KEY] 本项目现已支持OpenAI和Azure的api-key。也支持同时填写多个api-key,如API_KEY=\"openai-key1,openai-key2,azure-key3\"") print亮蓝(f"[API_KEY] 您既可以在config.py中修改api-key(s),也可以在问题输入区输入临时的api-key(s),然后回车键提交后即可生效。") if is_any_api_key(r): print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功") else: - print亮红( "[API_KEY] 正确的 API_KEY 是'sk'开头的51位密钥(OpenAI),或者 'fk'开头的41位密钥,请在config文件中修改API密钥之后再运行。") + print亮红( "[API_KEY] 您的 API_KEY 不满足任何一种已知的密钥格式,请在config文件中修改API密钥之后再运行。") if arg == 'proxies': if r is None: print亮红('[PROXY] 网络代理状态:未配置。无代理状态下很可能无法访问OpenAI家族的模型。建议:检查USE_PROXY选项是否修改。') @@ -685,6 +689,7 @@ def read_single_conf_with_lru_cache(arg): return r +@lru_cache(maxsize=128) def get_conf(*args): # 建议您复制一个config_private.py放自己的秘密, 如API和代理网址, 避免不小心传github被别人看到 res = []