MCPcopy Index your code
hub / github.com/THESIS-AGENT/AIRouter / LoadBalancing

Class LoadBalancing

LoadBalancing.py:125–653  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123
124
125class LoadBalancing:
126 def __init__(self) -> None:
127 """初始化LoadBalancing实例,获取健康检查数据和配置"""
128 # 这里要维护一个包含滑动窗口逻辑的, 每个供应商的每个模型的表现情况队列.
129 # 然后先按照损坏概率去降序排序.
130 # 再按照执行时间去降序排序.
131 self.healthy = Harness_localAPI.check_healthy()
132 self.source_price = source_price
133 self.source_ranking = source_ranking
134 self.source_mapping = source_mapping
135 # 添加日志记录器
136 self.logger = logging.getLogger(__name__)
137 # 防止日志向上传播,避免重复打印
138 self.logger.propagate = False
139
140
141 def _check_valid_model(self, source_name, model_name):
142 """检查模型是否在源上有效
143
144 Args:
145 source_name (str): 源名称
146 model_name (str): 模型名称
147
148 Returns:
149 bool: 如果模型有效返回True,否则返回False
150 """
151 # 处理多模态模型的情况
152 base_model_name = model_name[:-3] if model_name.endswith("_mm") else model_name
153
154 # 检查映射是否存在且非None
155 if (source_name in self.source_mapping and
156 base_model_name in self.source_mapping[source_name] and
157 self.source_mapping[source_name][base_model_name] is not None):
158 return True
159 return False
160
161 def get_combinedRanking(self, ranking_1, ranking_2, weight):
162 """融合两个不同指标的排序
163
164 将两个不同指标的排序结果按给定权重融合为一个新的排序结果。
165
166 Args:
167 ranking_1 (dict): 第一个指标的排序结果
168 ranking_2 (dict): 第二个指标的排序结果
169 weight (float): ranking_2的权重,范围[0,1]
170
171 Returns:
172 dict: 融合后的排序结果
173 """
174 ranking_3 = {}
175
176 len_1 = len(ranking_1)
177 len_2 = len(ranking_2)
178
179 # 创建副本避免修改原始数据
180 tmp_ranking_1 = ranking_1.copy()
181 tmp_ranking_2 = ranking_2.copy()
182

Callers 14

mainFunction · 0.90
generateMethod · 0.90
generate_mmMethod · 0.90
function_callingMethod · 0.90
generate_fromTHEbestMethod · 0.90

Calls

no outgoing calls