diff --git a/custom_components/anthropic_custom/config_flow.py b/custom_components/anthropic_custom/config_flow.py index e4a6b56..349f0e0 100644 --- a/custom_components/anthropic_custom/config_flow.py +++ b/custom_components/anthropic_custom/config_flow.py @@ -119,13 +119,28 @@ async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> None: raise +FALLBACK_MODELS: list[SelectOptionDict] = [ + SelectOptionDict(label="Claude Sonnet 4.5", value="claude-sonnet-4-5"), + SelectOptionDict(label="Claude Haiku 4.5", value="claude-haiku-4-5"), + SelectOptionDict(label="Claude Opus 4.5", value="claude-opus-4-5"), + SelectOptionDict(label="Claude Sonnet 4.0", value="claude-sonnet-4-0"), + SelectOptionDict(label="Claude Opus 4.0", value="claude-opus-4-0"), + SelectOptionDict(label="Claude Sonnet 3.5", value="claude-3-5-sonnet-20241022"), + SelectOptionDict(label="Claude Haiku 3.5", value="claude-3-5-haiku-20241022"), + SelectOptionDict(label="Claude Haiku 3", value="claude-3-haiku-20240307"), +] + + async def get_model_list(client: anthropic.AsyncAnthropic) -> list[SelectOptionDict]: - """Get list of available models.""" + """Get list of available models, falling back to a hardcoded list if the endpoint is unavailable.""" try: models = (await client.models.list()).data except anthropic.AnthropicError: - models = [] + _LOGGER.debug("Models endpoint unavailable, using fallback model list") + return FALLBACK_MODELS _LOGGER.debug("Available models: %s", models) + if not models: + return FALLBACK_MODELS model_options: list[SelectOptionDict] = [] short_form = re.compile(r"[^\d]-\d$") for model_info in models: