添加中转渠道支持功能

- 更新config.py配置文件,添加中转渠道相关配置项
- 修改bridge_all.py和bridge_chatgpt.py以支持中转渠道
- 更新key_pattern_manager.py处理中转渠道密钥模式
这个提交包含在:
XiaoBoAI
2025-07-08 01:48:16 +08:00
父节点 a7a56b5058
当前提交 1109bf3896
共有 4 个文件被更改,包括 127 次插入12 次删除

查看文件

@@ -45,8 +45,17 @@ def is_cohere_api_key(key):
def is_any_api_key(key):
# key 一般只包含字母、数字、下划线、逗号、中划线
if not re.match(r"^[a-zA-Z0-9_\-,]+$", key):
# 首先检查是否为中转渠道API KEY
try:
ZHONGZHUAN_ENABLE, ZHONGZHUAN_API_KEY = get_conf("ZHONGZHUAN_ENABLE", "ZHONGZHUAN_API_KEY")
if ZHONGZHUAN_ENABLE and ZHONGZHUAN_API_KEY and key == ZHONGZHUAN_API_KEY:
return True
except Exception:
pass
# key 一般只包含字母、数字、下划线、逗号、中划线,但为了支持更多中转渠道,适当放宽限制
# 允许点号(.),用于支持某些中转渠道的特殊格式
if not re.match(r"^[a-zA-Z0-9_\-,\.]+$", key):
# 如果配置了 CUSTOM_API_KEY_PATTERN,再检查以下以免误杀
if CUSTOM_API_KEY_PATTERN := get_conf('CUSTOM_API_KEY_PATTERN'):
return bool(re.match(CUSTOM_API_KEY_PATTERN, key))
@@ -93,6 +102,22 @@ def select_api_key(keys, llm_model):
avail_key_list = []
key_list = keys.split(',')
# 中转渠道API KEY处理
try:
ZHONGZHUAN_ENABLE, ZHONGZHUAN_MODELS, ZHONGZHUAN_API_KEY = get_conf("ZHONGZHUAN_ENABLE", "ZHONGZHUAN_MODELS", "ZHONGZHUAN_API_KEY")
if ZHONGZHUAN_ENABLE and llm_model in ZHONGZHUAN_MODELS:
# 如果模型在中转渠道列表中,优先使用中转渠道的API KEY
if ZHONGZHUAN_API_KEY:
return ZHONGZHUAN_API_KEY
# 如果没有设置专门的中转渠道API KEY,则使用OpenAI格式的key中转渠道一般采用OpenAI接口格式
for k in key_list:
if is_openai_api_key(k): avail_key_list.append(k)
if len(avail_key_list) > 0:
return random.choice(avail_key_list)
except Exception:
# 如果获取中转渠道配置失败,继续使用原有逻辑
pass
if llm_model.startswith('gpt-') or llm_model.startswith('chatgpt-') or \
llm_model.startswith('one-api-') or is_o_family_for_openai(llm_model):
for k in key_list: