From 24cebaf4ec4874d65d67c357f61f75f80fc26002 Mon Sep 17 00:00:00 2001 From: binary-husky Date: Mon, 21 Apr 2025 00:48:59 +0800 Subject: [PATCH 1/4] add o3 and o4 models --- request_llms/bridge_all.py | 43 +++++++++++++++++++++++++++++ shared_utils/key_pattern_manager.py | 10 ++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/request_llms/bridge_all.py b/request_llms/bridge_all.py index 52ed2fa7..f530f5f2 100644 --- a/request_llms/bridge_all.py +++ b/request_llms/bridge_all.py @@ -314,6 +314,49 @@ model_info = { "openai_force_temperature_one": True, }, + "gpt-4.1":{ + "fn_with_ui": chatgpt_ui, + "fn_without_ui": chatgpt_noui, + "has_multimodal_capacity": True, + "endpoint": openai_endpoint, + "max_token": 828000, + "tokenizer": tokenizer_gpt4, + "token_cnt": get_token_num_gpt4, + }, + + "gpt-4.1-mini":{ + "fn_with_ui": chatgpt_ui, + "fn_without_ui": chatgpt_noui, + "has_multimodal_capacity": True, + "endpoint": openai_endpoint, + "max_token": 828000, + "tokenizer": tokenizer_gpt4, + "token_cnt": get_token_num_gpt4, + }, + + "o3":{ + "fn_with_ui": chatgpt_ui, + "fn_without_ui": chatgpt_noui, + "has_multimodal_capacity": True, + "endpoint": openai_endpoint, + "max_token": 828000, + "tokenizer": tokenizer_gpt4, + "token_cnt": get_token_num_gpt4, + "openai_disable_system_prompt": True, + "openai_disable_stream": True, + "openai_force_temperature_one": True, + }, + + "o4-mini":{ + "fn_with_ui": chatgpt_ui, + "fn_without_ui": chatgpt_noui, + "has_multimodal_capacity": True, + "endpoint": openai_endpoint, + "max_token": 828000, + "tokenizer": tokenizer_gpt4, + "token_cnt": get_token_num_gpt4, + }, + "gpt-4-turbo": { "fn_with_ui": chatgpt_ui, "fn_without_ui": chatgpt_noui, diff --git a/shared_utils/key_pattern_manager.py b/shared_utils/key_pattern_manager.py index b7191638..8ea20016 100644 --- a/shared_utils/key_pattern_manager.py +++ b/shared_utils/key_pattern_manager.py @@ -79,6 +79,14 @@ def what_keys(keys): return f"检测到: OpenAI Key {avail_key_list['OpenAI Key']} 个, Azure Key {avail_key_list['Azure Key']} 个, API2D Key {avail_key_list['API2D Key']} 个" +def is_o_family_for_openai(llm_model): + if not llm_model.startswith('o'): + return False + if llm_model in ['o1', 'o2', 'o3', 'o4', 'o5', 'o6', 'o7', 'o8']: + return True + if llm_model[:3] in ['o1-', 'o2-', 'o3-', 'o4-', 'o5-', 'o6-', 'o7-', 'o8-']: + return True + return False def select_api_key(keys, llm_model): import random @@ -86,7 +94,7 @@ def select_api_key(keys, llm_model): key_list = keys.split(',') if llm_model.startswith('gpt-') or llm_model.startswith('chatgpt-') or \ - llm_model.startswith('one-api-') or llm_model == 'o1' or llm_model.startswith('o1-'): + llm_model.startswith('one-api-') or is_o_family_for_openai(llm_model): for k in key_list: if is_openai_api_key(k): avail_key_list.append(k) From 883b513b9112a7f845dee04624275af2673ee3fb Mon Sep 17 00:00:00 2001 From: binary-husky Date: Mon, 21 Apr 2025 00:50:24 +0800 Subject: [PATCH 2/4] add can_multi_thread --- request_llms/bridge_all.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/request_llms/bridge_all.py b/request_llms/bridge_all.py index f530f5f2..c738864f 100644 --- a/request_llms/bridge_all.py +++ b/request_llms/bridge_all.py @@ -282,6 +282,7 @@ model_info = { "fn_with_ui": chatgpt_ui, "fn_without_ui": chatgpt_noui, "endpoint": openai_endpoint, + "can_multi_thread": True, "max_token": 128000, "tokenizer": tokenizer_gpt4, "token_cnt": get_token_num_gpt4, @@ -351,6 +352,7 @@ model_info = { "fn_with_ui": chatgpt_ui, "fn_without_ui": chatgpt_noui, "has_multimodal_capacity": True, + "can_multi_thread": True, "endpoint": openai_endpoint, "max_token": 828000, "tokenizer": tokenizer_gpt4, From fc06be6f7a44268f997e2fe0795a285d8bfb199f Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:09:53 +0800 Subject: [PATCH 3/4] support qwen3 models --- request_llms/bridge_all.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/request_llms/bridge_all.py b/request_llms/bridge_all.py index c738864f..a37daae3 100644 --- a/request_llms/bridge_all.py +++ b/request_llms/bridge_all.py @@ -869,7 +869,10 @@ if "qwen-local" in AVAIL_LLM_MODELS: logger.error(trimmed_format_exc()) # -=-=-=-=-=-=- 阿里云百炼(通义)-在线模型 -=-=-=-=-=-=- -qwen_models = ["qwen-max-latest", "qwen-max-2025-01-25","qwen-max","qwen-turbo","qwen-plus","dashscope-deepseek-r1","dashscope-deepseek-v3"] +qwen_models = ["qwen-max-latest", "qwen-max-2025-01-25","qwen-max","qwen-turbo","qwen-plus", + "dashscope-deepseek-r1","dashscope-deepseek-v3", + "dashscope-qwen3-14b", "dashscope-qwen3-235b-a22b", "dashscope-qwen3-qwen3-32b", + ] if any(item in qwen_models for item in AVAIL_LLM_MODELS): try: from .bridge_qwen import predict_no_ui_long_connection as qwen_noui @@ -938,6 +941,34 @@ if any(item in qwen_models for item in AVAIL_LLM_MODELS): "max_token": 57344, "tokenizer": tokenizer_gpt35, "token_cnt": get_token_num_gpt35, + }, + "dashscope-qwen3-14b": { + "fn_with_ui": qwen_ui, + "fn_without_ui": qwen_noui, + "enable_reasoning": True, + "can_multi_thread": True, + "endpoint": None, + "max_token": 129024, + "tokenizer": tokenizer_gpt35, + "token_cnt": get_token_num_gpt35, + }, + "dashscope-qwen3-235b-a22b": { + "fn_with_ui": qwen_ui, + "fn_without_ui": qwen_noui, + "can_multi_thread": True, + "endpoint": None, + "max_token": 129024, + "tokenizer": tokenizer_gpt35, + "token_cnt": get_token_num_gpt35, + }, + "dashscope-qwen3-32b": { + "fn_with_ui": qwen_ui, + "fn_without_ui": qwen_noui, + "can_multi_thread": True, + "endpoint": None, + "max_token": 129024, + "tokenizer": tokenizer_gpt35, + "token_cnt": get_token_num_gpt35, } }) except: From ee1a9e7cce18eb07a2f8cb592573d6d82475d24c Mon Sep 17 00:00:00 2001 From: binary-husky <96192199+binary-husky@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:10:49 +0800 Subject: [PATCH 4/4] support qwen3 models - edit config hint --- config.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/config.py b/config.py index ac8d2fdf..90e7fe7e 100644 --- a/config.py +++ b/config.py @@ -7,11 +7,11 @@ Configuration reading priority: environment variable > config_private.py > config.py """ -# [step 1-1]>> ( 接入GPT等模型 ) API_KEY = "sk-123456789xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx123456789"。极少数情况下,还需要填写组织(格式如org-123456789abcdefghijklmno的),请向下翻,找 API_ORG 设置项 +# [step 1-1]>> ( 接入OpenAI模型家族 ) API_KEY = "sk-123456789xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx123456789"。极少数情况下,还需要填写组织(格式如org-123456789abcdefghijklmno的),请向下翻,找 API_ORG 设置项 API_KEY = "在此处填写APIKEY" # 可同时填写多个API-KEY,用英文逗号分割,例如API_KEY = "sk-openaikey1,sk-openaikey2,fkxxxx-api2dkey3,azure-apikey4" -# [step 1-2]>> ( 接入通义 qwen-max ) 接入通义千问在线大模型,api-key获取地址 https://dashscope.console.aliyun.com/ -DASHSCOPE_API_KEY = "" # 阿里灵积云API_KEY +# [step 1-2]>> ( 强烈推荐!接入通义家族 & 大模型服务平台百炼 ) 接入通义千问在线大模型,api-key获取地址 https://dashscope.console.aliyun.com/ +DASHSCOPE_API_KEY = "" # 阿里灵积云API_KEY(用于接入qwen-max,dashscope-qwen3-14b,dashscope-deepseek-r1等) # [step 1-3]>> ( 接入 deepseek-reasoner, 即 deepseek-r1 ) 深度求索(DeepSeek) API KEY,默认请求地址为"https://api.deepseek.com/v1/chat/completions" DEEPSEEK_API_KEY = "" @@ -46,6 +46,7 @@ AVAIL_LLM_MODELS = ["qwen-max", "o1-mini", "o1-mini-2024-09-12", "o1", "o1-2024- "deepseek-chat", "deepseek-coder", "deepseek-reasoner", "volcengine-deepseek-r1-250120", "volcengine-deepseek-v3-241226", "dashscope-deepseek-r1", "dashscope-deepseek-v3", + "dashscope-qwen3-14b", "dashscope-qwen3-235b-a22b", "dashscope-qwen3-32b", ] EMBEDDING_MODEL = "text-embedding-3-small"