(model_name: str, *, provider: str, alias: str | None = None)
| 30 | |
| 31 | |
| 32 | def build_model_spec(model_name: str, *, provider: str, alias: str | None = None) -> ModelSpec: |
| 33 | normalized_provider = provider.strip().lower() |
| 34 | if normalized_provider not in SUPPORTED_PROVIDERS: |
| 35 | supported = ", ".join(SUPPORTED_PROVIDERS) |
| 36 | raise ValueError(f"Unsupported model provider `{provider}`. Expected one of: {supported}.") |
| 37 | |
| 38 | normalized_model_name = model_name.strip() |
| 39 | if not normalized_model_name: |
| 40 | raise ValueError("Model name cannot be empty.") |
| 41 | |
| 42 | return ModelSpec( |
| 43 | alias=alias or f"{normalized_provider}:{normalized_model_name}", |
| 44 | name=normalized_model_name, |
| 45 | provider=normalized_provider, |
| 46 | ) |
| 47 | |
| 48 | |
| 49 | def resolve_model(identifier: str, *, default_provider: str = "openai") -> ModelSpec: |
no test coverage detected