MCPcopy Create free account
hub / github.com/InternLM/InternBootcamp / parse_extra_params

Function parse_extra_params

internbootcamp/utils/run_evaluation.py:97–169  ·  view source on GitHub ↗

解析额外的模型参数 Args: params_str: 支持以下两种形式之一: 1) JSON 字符串(推荐):例如 '{"temperature":0.7,"max_tokens":2048}' 或嵌套结构 2) 以 '@' 开头的文件路径:例如 '@/path/to/params.json'(文件内容为 JSON) 同时保留对旧格式 "k:v,k2:v2" 的兼容作为回退解析。 Returns: 解析后的参数字典

(params_str: str)

Source from the content-addressed store, hash-verified

95
96
97def parse_extra_params(params_str: str) -> Dict[str, any]:
98 """
99 解析额外的模型参数
100
101 Args:
102 params_str: 支持以下两种形式之一:
103 1) JSON 字符串(推荐):例如 '{"temperature":0.7,"max_tokens":2048}' 或嵌套结构
104 2) 以 '@' 开头的文件路径:例如 '@/path/to/params.json'(文件内容为 JSON)
105 同时保留对旧格式 "k:v,k2:v2" 的兼容作为回退解析。
106
107 Returns:
108 解析后的参数字典
109 """
110 if not params_str:
111 return {}
112
113 text = params_str.strip()
114
115 # 情况 1:@文件 路径(文件内容为 JSON)
116 if text.startswith('@'):
117 file_path = text[1:]
118 if not os.path.exists(file_path):
119 raise FileNotFoundError(f"参数文件不存在: {file_path}")
120 with open(file_path, 'r', encoding='utf-8') as f:
121 content = f.read()
122 try:
123 loaded = json.loads(content)
124 except json.JSONDecodeError as e:
125 raise ValueError(f"参数文件 JSON 解析失败: {e}")
126 if not isinstance(loaded, dict):
127 raise ValueError("参数文件的 JSON 根类型必须为对象(dict)")
128 return loaded
129
130 # 情况 2:直接作为 JSON 字符串
131 try:
132 loaded = json.loads(text)
133 if isinstance(loaded, dict):
134 return loaded
135 else:
136 raise ValueError("JSON 根类型必须为对象(dict)")
137 except json.JSONDecodeError:
138 # 继续尝试回退到旧格式解析
139 try:
140 loaded = ast.literal_eval(text)
141 if isinstance(loaded, dict):
142 return loaded
143 except Exception:
144 print(f"Depreciated Warning: {text} 额外参数未能解析为 JSON 格式,将使用旧格式解析。请优先考虑使用 JSON 格式传递参数。")
145
146 # 回退:旧格式 "k:v,k2:v2"(保持向后兼容)
147 params: Dict[str, Any] = {}
148 for param in text.split(','):
149 if ':' not in param:
150 continue
151 key, value = param.split(':', 1)
152 key = key.strip()
153 value = value.strip()
154

Callers 1

mainFunction · 0.85

Calls 2

existsMethod · 0.45
splitMethod · 0.45

Tested by

no test coverage detected