Rebuild the models list, typically after CLI overrides change primary/secondary model fields.
(self)
| 212 | setattr(model, key, value) |
| 213 | |
| 214 | def rebuild_models(self) -> None: |
| 215 | """Rebuild the models list, typically after CLI overrides change primary/secondary model fields.""" |
| 216 | # Clear existing models lists |
| 217 | self.models = [] |
| 218 | self.evaluator_models = [] |
| 219 | |
| 220 | # Re-run the same model generation logic from __post_init__ |
| 221 | if self.primary_model: |
| 222 | primary_model = LLMModelConfig( |
| 223 | name=self.primary_model, weight=self.primary_model_weight or 1.0 |
| 224 | ) |
| 225 | self.models.append(primary_model) |
| 226 | |
| 227 | if self.secondary_model: |
| 228 | if self.secondary_model_weight is None or self.secondary_model_weight > 0: |
| 229 | secondary_model = LLMModelConfig( |
| 230 | name=self.secondary_model, |
| 231 | weight=( |
| 232 | self.secondary_model_weight |
| 233 | if self.secondary_model_weight is not None |
| 234 | else 0.2 |
| 235 | ), |
| 236 | ) |
| 237 | self.models.append(secondary_model) |
| 238 | |
| 239 | # Default evaluator models to evolution models if not specified |
| 240 | if not self.evaluator_models: |
| 241 | self.evaluator_models = self.models.copy() |
| 242 | |
| 243 | # Re-apply shared configuration values to the newly rebuilt models |
| 244 | shared_config = { |
| 245 | "api_base": self.api_base, |
| 246 | "api_key": self.api_key, |
| 247 | "temperature": self.temperature, |
| 248 | "top_p": self.top_p, |
| 249 | "max_tokens": self.max_tokens, |
| 250 | "timeout": self.timeout, |
| 251 | "retries": self.retries, |
| 252 | "retry_delay": self.retry_delay, |
| 253 | "random_seed": self.random_seed, |
| 254 | "reasoning_effort": self.reasoning_effort, |
| 255 | } |
| 256 | self.update_model_params(shared_config) |
| 257 | |
| 258 | |
| 259 | @dataclass |
no test coverage detected