1- """
2- 常量配置模块
3- 包含所有固定的常量定义,如模型名称、标记符、文件名等
4- """
5-
6- import os
7- import json
8- from dotenv import load_dotenv
9-
10- # 加载 .env 文件
11- load_dotenv ()
12-
13- # --- 模型相关常量 ---
14- MODEL_NAME = os .environ .get ('MODEL_NAME' , 'AI-Studio_Proxy_API' )
15- CHAT_COMPLETION_ID_PREFIX = os .environ .get ('CHAT_COMPLETION_ID_PREFIX' , 'chatcmpl-' )
16- DEFAULT_FALLBACK_MODEL_ID = os .environ .get ('DEFAULT_FALLBACK_MODEL_ID' , "no model list" )
17-
18- # --- 默认参数值 ---
19- DEFAULT_TEMPERATURE = float (os .environ .get ('DEFAULT_TEMPERATURE' , '1.0' ))
20- DEFAULT_MAX_OUTPUT_TOKENS = int (os .environ .get ('DEFAULT_MAX_OUTPUT_TOKENS' , '65536' ))
21- DEFAULT_TOP_P = float (os .environ .get ('DEFAULT_TOP_P' , '0.95' ))
22- # --- 默认功能开关 ---
23- ENABLE_URL_CONTEXT = os .environ .get ('ENABLE_URL_CONTEXT' , 'true ' ).lower () in ('true' , '1' , 'yes' )
24- ENABLE_THINKING_BUDGET = os .environ .get ('ENABLE_THINKING_BUDGET' , 'false' ).lower () in ('true' , '1' , 'yes' )
25- DEFAULT_THINKING_BUDGET = int (os .environ .get ('DEFAULT_THINKING_BUDGET' , '8192' ))
26- ENABLE_GOOGLE_SEARCH = os .environ .get ('ENABLE_GOOGLE_SEARCH' , 'false' ).lower () in ('true' , '1' , 'yes' )
27-
28- # 默认停止序列 - 支持 JSON 格式配置
29- try :
30- DEFAULT_STOP_SEQUENCES = json .loads (os .environ .get ('DEFAULT_STOP_SEQUENCES' , '["用户:"]' ))
31- except (json .JSONDecodeError , TypeError ):
32- DEFAULT_STOP_SEQUENCES = ["用户:" ] # 回退到默认值
33-
34- # --- URL模式 ---
35- AI_STUDIO_URL_PATTERN = os .environ .get ('AI_STUDIO_URL_PATTERN' , 'aistudio.google.com/' )
36- MODELS_ENDPOINT_URL_CONTAINS = os .environ .get ('MODELS_ENDPOINT_URL_CONTAINS' , "MakerSuiteService/ListModels" )
37-
38- # --- 输入标记符 ---
39- USER_INPUT_START_MARKER_SERVER = os .environ .get ('USER_INPUT_START_MARKER_SERVER' , "__USER_INPUT_START__" )
40- USER_INPUT_END_MARKER_SERVER = os .environ .get ('USER_INPUT_END_MARKER_SERVER' , "__USER_INPUT_END__" )
41-
42- # --- 文件名常量 ---
43- EXCLUDED_MODELS_FILENAME = os .environ .get ('EXCLUDED_MODELS_FILENAME' , "excluded_models.txt" )
44-
45- # --- 流状态配置 ---
46- STREAM_TIMEOUT_LOG_STATE = {
47- "consecutive_timeouts" : 0 ,
48- "last_error_log_time" : 0.0 , # 使用 time.monotonic()
49- "suppress_until_time" : 0.0 , # 使用 time.monotonic()
50- "max_initial_errors" : int (os .environ .get ('STREAM_MAX_INITIAL_ERRORS' , '3' )),
51- "warning_interval_after_suppress" : float (os .environ .get ('STREAM_WARNING_INTERVAL_AFTER_SUPPRESS' , '60.0' )),
52- "suppress_duration_after_initial_burst" : float (os .environ .get ('STREAM_SUPPRESS_DURATION_AFTER_INITIAL_BURST' , '400.0' )),
1+ """
2+ 常量配置模块
3+ 包含所有固定的常量定义,如模型名称、标记符、文件名等
4+ """
5+
6+ import os
7+ import json
8+ from dotenv import load_dotenv
9+
10+ # 加载 .env 文件
11+ load_dotenv ()
12+
13+ # --- 模型相关常量 ---
14+ MODEL_NAME = os .environ .get ('MODEL_NAME' , 'AI-Studio_Proxy_API' )
15+ CHAT_COMPLETION_ID_PREFIX = os .environ .get ('CHAT_COMPLETION_ID_PREFIX' , 'chatcmpl-' )
16+ DEFAULT_FALLBACK_MODEL_ID = os .environ .get ('DEFAULT_FALLBACK_MODEL_ID' , "no model list" )
17+
18+ # --- 默认参数值 ---
19+ DEFAULT_TEMPERATURE = float (os .environ .get ('DEFAULT_TEMPERATURE' , '1.0' ))
20+ DEFAULT_MAX_OUTPUT_TOKENS = int (os .environ .get ('DEFAULT_MAX_OUTPUT_TOKENS' , '65536' ))
21+ DEFAULT_TOP_P = float (os .environ .get ('DEFAULT_TOP_P' , '0.95' ))
22+ # --- 默认功能开关 ---
23+ ENABLE_URL_CONTEXT = os .environ .get ('ENABLE_URL_CONTEXT' , 'false ' ).lower () in ('true' , '1' , 'yes' )
24+ ENABLE_THINKING_BUDGET = os .environ .get ('ENABLE_THINKING_BUDGET' , 'false' ).lower () in ('true' , '1' , 'yes' )
25+ DEFAULT_THINKING_BUDGET = int (os .environ .get ('DEFAULT_THINKING_BUDGET' , '8192' ))
26+ ENABLE_GOOGLE_SEARCH = os .environ .get ('ENABLE_GOOGLE_SEARCH' , 'false' ).lower () in ('true' , '1' , 'yes' )
27+
28+ # 默认停止序列 - 支持 JSON 格式配置
29+ try :
30+ DEFAULT_STOP_SEQUENCES = json .loads (os .environ .get ('DEFAULT_STOP_SEQUENCES' , '["用户:"]' ))
31+ except (json .JSONDecodeError , TypeError ):
32+ DEFAULT_STOP_SEQUENCES = ["用户:" ] # 回退到默认值
33+
34+ # --- URL模式 ---
35+ AI_STUDIO_URL_PATTERN = os .environ .get ('AI_STUDIO_URL_PATTERN' , 'aistudio.google.com/' )
36+ MODELS_ENDPOINT_URL_CONTAINS = os .environ .get ('MODELS_ENDPOINT_URL_CONTAINS' , "MakerSuiteService/ListModels" )
37+
38+ # --- 输入标记符 ---
39+ USER_INPUT_START_MARKER_SERVER = os .environ .get ('USER_INPUT_START_MARKER_SERVER' , "__USER_INPUT_START__" )
40+ USER_INPUT_END_MARKER_SERVER = os .environ .get ('USER_INPUT_END_MARKER_SERVER' , "__USER_INPUT_END__" )
41+
42+ # --- 文件名常量 ---
43+ EXCLUDED_MODELS_FILENAME = os .environ .get ('EXCLUDED_MODELS_FILENAME' , "excluded_models.txt" )
44+
45+ # --- 流状态配置 ---
46+ STREAM_TIMEOUT_LOG_STATE = {
47+ "consecutive_timeouts" : 0 ,
48+ "last_error_log_time" : 0.0 , # 使用 time.monotonic()
49+ "suppress_until_time" : 0.0 , # 使用 time.monotonic()
50+ "max_initial_errors" : int (os .environ .get ('STREAM_MAX_INITIAL_ERRORS' , '3' )),
51+ "warning_interval_after_suppress" : float (os .environ .get ('STREAM_WARNING_INTERVAL_AFTER_SUPPRESS' , '60.0' )),
52+ "suppress_duration_after_initial_burst" : float (os .environ .get ('STREAM_SUPPRESS_DURATION_AFTER_INITIAL_BURST' , '400.0' )),
5353}
0 commit comments