From 24cebaf4ec4874d65d67c357f61f75f80fc26002 Mon Sep 17 00:00:00 2001 From: binary-husky Date: Mon, 21 Apr 2025 00:48:59 +0800 Subject: [PATCH] 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)