feat: fallback model list when proxy lacks models endpoint

This commit is contained in:
Robot committed 2026-02-26 17:36:56 +00:00
1 parent b2d046694a
commit 8deb3febdb
1 file changed
+17 -2
@@ -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: