| 69 | |
| 70 | @dataclass |
| 71 | class ProvidersConfig: |
| 72 | providers: dict[str, ProviderEntry] = field(default_factory=dict) |
| 73 | |
| 74 | def keyed_models(self) -> set[str]: |
| 75 | """All model IDs backed by a user-provided key.""" |
| 76 | result: set[str] = set() |
| 77 | for entry in self.providers.values(): |
| 78 | result.update(entry.models) |
| 79 | return result |
| 80 | |
| 81 | def get_for_model(self, model_id: str) -> ProviderEntry | None: |
| 82 | """Find the provider entry that covers a given model.""" |
| 83 | for entry in self.providers.values(): |
| 84 | if model_id in entry.models: |
| 85 | return entry |
| 86 | return None |
| 87 | |
| 88 | def provider_names(self) -> list[str]: |
| 89 | return list(self.providers.keys()) |
| 90 | |
| 91 | |
| 92 | def load_providers(path: Path | None = None) -> ProvidersConfig: |
no outgoing calls