ALLOW CUSTOM API KEY PATTERN
This commit is contained in:
		
							parent
							
								
									dd7a01cda5
								
							
						
					
					
						commit
						a393edfaa4
					
				@ -136,4 +136,8 @@ ALIYUN_APPKEY=""   # 例如 RoPlZrM88DnAFkZK
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Claude API KEY
 | 
					# Claude API KEY
 | 
				
			||||||
ANTHROPIC_API_KEY = ""
 | 
					ANTHROPIC_API_KEY = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 自定义API KEY格式
 | 
				
			||||||
 | 
					CUSTOM_API_KEY_PATTERN = ""
 | 
				
			||||||
							
								
								
									
										13
									
								
								toolbox.py
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								toolbox.py
									
									
									
									
									
								
							@ -538,7 +538,11 @@ def load_chat_cookies():
 | 
				
			|||||||
    return {'api_key': API_KEY, 'llm_model': LLM_MODEL}
 | 
					    return {'api_key': API_KEY, 'llm_model': LLM_MODEL}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def is_openai_api_key(key):
 | 
					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)
 | 
					    return bool(API_MATCH_ORIGINAL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def is_azure_api_key(key):
 | 
					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 is_azure_api_key(k): avail_key_list.append(k)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if len(avail_key_list) == 0:
 | 
					    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) # 随机负载均衡
 | 
					    api_key = random.choice(avail_key_list) # 随机负载均衡
 | 
				
			||||||
    return api_key
 | 
					    return api_key
 | 
				
			||||||
@ -670,12 +674,12 @@ def read_single_conf_with_lru_cache(arg):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # 在读取API_KEY时,检查一下是不是忘了改config
 | 
					    # 在读取API_KEY时,检查一下是不是忘了改config
 | 
				
			||||||
    if arg == 'API_KEY':
 | 
					    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),然后回车键提交后即可生效。")
 | 
					        print亮蓝(f"[API_KEY] 您既可以在config.py中修改api-key(s),也可以在问题输入区输入临时的api-key(s),然后回车键提交后即可生效。")
 | 
				
			||||||
        if is_any_api_key(r):
 | 
					        if is_any_api_key(r):
 | 
				
			||||||
            print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功")
 | 
					            print亮绿(f"[API_KEY] 您的 API_KEY 是: {r[:15]}*** API_KEY 导入成功")
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            print亮红( "[API_KEY] 正确的 API_KEY 是'sk'开头的51位密钥(OpenAI),或者 'fk'开头的41位密钥,请在config文件中修改API密钥之后再运行。")
 | 
					            print亮红( "[API_KEY] 您的 API_KEY 不满足任何一种已知的密钥格式,请在config文件中修改API密钥之后再运行。")
 | 
				
			||||||
    if arg == 'proxies':
 | 
					    if arg == 'proxies':
 | 
				
			||||||
        if r is None:
 | 
					        if r is None:
 | 
				
			||||||
            print亮红('[PROXY] 网络代理状态:未配置。无代理状态下很可能无法访问OpenAI家族的模型。建议:检查USE_PROXY选项是否修改。')
 | 
					            print亮红('[PROXY] 网络代理状态:未配置。无代理状态下很可能无法访问OpenAI家族的模型。建议:检查USE_PROXY选项是否修改。')
 | 
				
			||||||
@ -685,6 +689,7 @@ def read_single_conf_with_lru_cache(arg):
 | 
				
			|||||||
    return r
 | 
					    return r
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@lru_cache(maxsize=128)
 | 
				
			||||||
def get_conf(*args):
 | 
					def get_conf(*args):
 | 
				
			||||||
    # 建议您复制一个config_private.py放自己的秘密, 如API和代理网址, 避免不小心传github被别人看到
 | 
					    # 建议您复制一个config_private.py放自己的秘密, 如API和代理网址, 避免不小心传github被别人看到
 | 
				
			||||||
    res = []
 | 
					    res = []
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user