Manually refresh models for a provider. Args: provider: Provider name (refreshes active provider if None) Returns: Number of new models discovered
(self, provider: str | None = None)
| 299 | return available_models[0] if available_models else "default" |
| 300 | |
| 301 | async def refresh_models(self, provider: str | None = None) -> int: |
| 302 | """ |
| 303 | Manually refresh models for a provider. |
| 304 | |
| 305 | Args: |
| 306 | provider: Provider name (refreshes active provider if None) |
| 307 | |
| 308 | Returns: |
| 309 | Number of new models discovered |
| 310 | """ |
| 311 | target_provider = provider or self._active_provider |
| 312 | |
| 313 | # Check if it's a runtime/custom provider first |
| 314 | if target_provider and target_provider in self._custom_providers: |
| 315 | config = self._custom_providers[target_provider] |
| 316 | count = await ProviderDiscovery.refresh_provider_models(config) |
| 317 | if count is not None: |
| 318 | self._client_factory.clear_cache() # Clear cache after refresh |
| 319 | return count |
| 320 | return 0 |
| 321 | |
| 322 | # Use chuk_llm refresh for standard providers |
| 323 | if not target_provider: |
| 324 | logger.warning("No provider specified for refresh") |
| 325 | return 0 |
| 326 | |
| 327 | try: |
| 328 | from chuk_llm.api.providers import refresh_provider_functions |
| 329 | |
| 330 | new_functions = refresh_provider_functions(target_provider) |
| 331 | logger.info(f"Refreshed {target_provider}: {len(new_functions)} functions") |
| 332 | return len(new_functions) |
| 333 | except Exception as e: |
| 334 | logger.error(f"Failed to refresh models for {target_provider}: {e}") |
| 335 | return 0 |
| 336 | |
| 337 | # ── Active Provider/Model Management ────────────────────────────────────── |
| 338 |