MCPcopy Create free account
hub / github.com/THESIS-AGENT/AIRouter / get_sources_from_ranking

Method get_sources_from_ranking

LoadBalancing.py:242–297  ·  view source on GitHub ↗

基于预设排名获取源和模型配置 当健康检查数据为空时,基于预设的源排名获取配置。 Args: model_name (str): 模型名称 Returns: tuple: 包含主源和备用源的配置信息 Raises: ValueError: 如果找不到可用的源

(self, model_name)

Source from the content-addressed store, hash-verified

240 return True # 出错时假设数据为空,使用预设排名
241
242 def get_sources_from_ranking(self, model_name):
243 """基于预设排名获取源和模型配置
244
245 当健康检查数据为空时,基于预设的源排名获取配置。
246
247 Args:
248 model_name (str): 模型名称
249
250 Returns:
251 tuple: 包含主源和备用源的配置信息
252
253 Raises:
254 ValueError: 如果找不到可用的源
255 """
256 try:
257 # 检查是否为屏蔽模型
258 if is_model_health_check_blacklisted(model_name):
259 self.logger.info(f"🚫 模型 {model_name} 在健康检测屏蔽清单中,基于预设排名选择源")
260 else:
261 self.logger.info(f"基于预设排名为模型 {model_name} 选择源")
262
263 # 根据source_ranking选择排名靠前的源
264 sorted_sources = sorted(self.source_ranking.keys(), key=lambda s: self.source_ranking[s])
265
266 # 找出可用的源(即映射中有此模型的源)
267 available_sources = []
268 for source in sorted_sources:
269 if self._check_valid_model(source, model_name):
270 available_sources.append(source)
271
272 if not available_sources:
273 error_msg = f"在预设排名中找不到模型 {model_name} 的可用源"
274 self.logger.error(error_msg)
275 raise ValueError(error_msg)
276
277 # 选择主源和备用源
278 main_source = available_sources[0]
279 backup_source = available_sources[1] if len(available_sources) > 1 else main_source
280
281 # 获取模型名称和API密钥
282 main_source_model_name = self._get_actual_model_name(main_source, model_name)
283 backup_source_model_name = self._get_actual_model_name(backup_source, model_name)
284
285 self.logger.info(f"选择主源 {main_source} 和备用源 {backup_source} 为模型 {model_name}")
286
287 try:
288 main_api_key = Harness_localAPI.get_api_key(main_source)
289 backup_api_key = Harness_localAPI.get_api_key(backup_source)
290 except Exception as e:
291 self.logger.error(f"获取API密钥时出错: {str(e)}")
292 raise ValueError(f"无法获取API密钥: {str(e)}")
293
294 return main_source, main_source_model_name, main_api_key, backup_source, backup_source_model_name, backup_api_key
295 except Exception as e:
296 self.logger.error(f"基于预设排名选择源时出错: {str(e)}")
297 raise
298
299 def _get_actual_model_name(self, source_name, model_name):

Callers 2

get_configMethod · 0.95

Calls 4

_check_valid_modelMethod · 0.95
get_api_keyMethod · 0.45

Tested by

no test coverage detected