diff --git a/skyvern/config.py b/skyvern/config.py index 0390bc52..aea5d387 100644 --- a/skyvern/config.py +++ b/skyvern/config.py @@ -442,78 +442,63 @@ class Settings(BaseSettings): Keys are model names available to blocks in the frontend. These map to key names in LLMConfigRegistry._configs. """ + mapping: dict[str, dict[str, str]] = { + "gemini-2.5-pro-preview-05-06": {"llm_key": "VERTEX_GEMINI_2.5_PRO", "label": "Gemini 2.5 Pro"}, + "gemini-2.5-flash": { + "llm_key": "VERTEX_GEMINI_2.5_FLASH", + "label": "Gemini 2.5 Flash", + }, + "gemini-3-pro-preview": {"llm_key": "VERTEX_GEMINI_3.0_PRO", "label": "Gemini 3 Pro"}, + "gemini-3.0-flash": {"llm_key": "VERTEX_GEMINI_3.0_FLASH", "label": "Gemini 3 Flash"}, + "gemini-2.5-flash-lite": { + "llm_key": "VERTEX_GEMINI_2.5_FLASH_LITE", + "label": "Gemini 2.5 Flash Lite", + }, + } - if self.is_cloud_environment(): - return { - "gemini-2.5-pro-preview-05-06": {"llm_key": "VERTEX_GEMINI_2.5_PRO", "label": "Gemini 2.5 Pro"}, - "gemini-2.5-flash": { - "llm_key": "VERTEX_GEMINI_2.5_FLASH", - "label": "Gemini 2.5 Flash", - }, - "gemini-3-pro-preview": {"llm_key": "VERTEX_GEMINI_3.0_PRO", "label": "Gemini 3 Pro"}, - "gemini-3.0-flash": {"llm_key": "VERTEX_GEMINI_3.0_FLASH", "label": "Gemini 3 Flash"}, - "gemini-2.5-flash-lite": { - "llm_key": "VERTEX_GEMINI_2.5_FLASH_LITE", - "label": "Gemini 2.5 Flash Lite", - }, - "azure/gpt-4.1": {"llm_key": "AZURE_OPENAI_GPT4_1", "label": "GPT 4.1"}, - "azure/gpt-5": {"llm_key": "AZURE_OPENAI_GPT5", "label": "GPT 5"}, - "azure/gpt-5-mini": {"llm_key": "AZURE_OPENAI_GPT5_MINI", "label": "GPT 5 Mini"}, - "azure/gpt-5.2": {"llm_key": "AZURE_OPENAI_GPT5_2", "label": "GPT 5.2"}, - "azure/o3": {"llm_key": "AZURE_OPENAI_O3", "label": "GPT O3"}, - "us.anthropic.claude-opus-4-20250514-v1:0": { - "llm_key": "BEDROCK_ANTHROPIC_CLAUDE4_OPUS_INFERENCE_PROFILE", - "label": "Anthropic Claude 4 Opus", - }, - "us.anthropic.claude-sonnet-4-20250514-v1:0": { - "llm_key": "BEDROCK_ANTHROPIC_CLAUDE4_SONNET_INFERENCE_PROFILE", - "label": "Anthropic Claude 4 Sonnet", - }, - "claude-haiku-4-5-20251001": { - "llm_key": "ANTHROPIC_CLAUDE4.5_HAIKU", - "label": "Anthropic Claude 4.5 Haiku", - }, - # "claude-sonnet-4-20250514": { - # "llm_key": "ANTHROPIC_CLAUDE4_SONNET", - # "label": "Anthropic Claude 4 Sonnet", - # }, - # "claude-opus-4-20250514": { - # "llm_key": "ANTHROPIC_CLAUDE4_OPUS", - # "label": "Anthropic Claude 4 Opus", - # }, + # GPT models: prefer Azure when enabled, fall back to OpenAI + gpt_models = [ + ("azure/gpt-4.1", self.ENABLE_AZURE_GPT4_1, "AZURE_OPENAI_GPT4_1", "OPENAI_GPT4_1", "GPT 4.1"), + ("azure/gpt-5", self.ENABLE_AZURE_GPT5, "AZURE_OPENAI_GPT5", "OPENAI_GPT5", "GPT 5"), + ( + "azure/gpt-5-mini", + self.ENABLE_AZURE_GPT5_MINI, + "AZURE_OPENAI_GPT5_MINI", + "OPENAI_GPT5_MINI", + "GPT 5 Mini", + ), + ("azure/gpt-5.2", self.ENABLE_AZURE_GPT5_2, "AZURE_OPENAI_GPT5_2", "OPENAI_GPT5_2", "GPT 5.2"), + ("azure/o3", self.ENABLE_AZURE_O3, "AZURE_OPENAI_O3", "OPENAI_O3", "GPT O3"), + ] + for model_name, azure_enabled, azure_key, openai_key, label in gpt_models: + mapping[model_name] = {"llm_key": azure_key if azure_enabled else openai_key, "label": label} + + # Anthropic models: prefer Bedrock when enabled, fall back to direct API + if self.ENABLE_BEDROCK_ANTHROPIC: + mapping["us.anthropic.claude-opus-4-20250514-v1:0"] = { + "llm_key": "BEDROCK_ANTHROPIC_CLAUDE4_OPUS_INFERENCE_PROFILE", + "label": "Anthropic Claude 4 Opus", + } + mapping["us.anthropic.claude-sonnet-4-20250514-v1:0"] = { + "llm_key": "BEDROCK_ANTHROPIC_CLAUDE4_SONNET_INFERENCE_PROFILE", + "label": "Anthropic Claude 4 Sonnet", } else: - # TODO: apparently the list for OSS is to be much larger - return { - "gemini-2.5-pro-preview-05-06": {"llm_key": "VERTEX_GEMINI_2.5_PRO", "label": "Gemini 2.5 Pro"}, - "gemini-2.5-flash": { - "llm_key": "VERTEX_GEMINI_2.5_FLASH", - "label": "Gemini 2.5 Flash", - }, - "gemini-3-pro-preview": {"llm_key": "VERTEX_GEMINI_3.0_PRO", "label": "Gemini 3 Pro"}, - "gemini-3.0-flash": {"llm_key": "VERTEX_GEMINI_3.0_FLASH", "label": "Gemini 3 Flash"}, - "gemini-2.5-flash-lite": { - "llm_key": "VERTEX_GEMINI_2.5_FLASH_LITE", - "label": "Gemini 2.5 Flash Lite", - }, - "azure/gpt-4.1": {"llm_key": "AZURE_OPENAI_GPT4_1", "label": "GPT 4.1"}, - "azure/gpt-5": {"llm_key": "AZURE_OPENAI_GPT5", "label": "GPT 5"}, - "azure/gpt-5-mini": {"llm_key": "AZURE_OPENAI_GPT5_MINI", "label": "GPT 5 Mini"}, - "azure/gpt-5.2": {"llm_key": "AZURE_OPENAI_GPT5_2", "label": "GPT 5.2"}, - "azure/o3": {"llm_key": "AZURE_OPENAI_O3", "label": "GPT O3"}, - "us.anthropic.claude-opus-4-20250514-v1:0": { - "llm_key": "BEDROCK_ANTHROPIC_CLAUDE4_OPUS_INFERENCE_PROFILE", - "label": "Anthropic Claude 4 Opus", - }, - "us.anthropic.claude-sonnet-4-20250514-v1:0": { - "llm_key": "BEDROCK_ANTHROPIC_CLAUDE4_SONNET_INFERENCE_PROFILE", - "label": "Anthropic Claude 4 Sonnet", - }, - "claude-haiku-4-5-20251001": { - "llm_key": "ANTHROPIC_CLAUDE4.5_HAIKU", - "label": "Anthropic Claude 4.5 Haiku", - }, + mapping["us.anthropic.claude-opus-4-20250514-v1:0"] = { + "llm_key": "ANTHROPIC_CLAUDE4_OPUS", + "label": "Anthropic Claude 4 Opus", } + mapping["us.anthropic.claude-sonnet-4-20250514-v1:0"] = { + "llm_key": "ANTHROPIC_CLAUDE4_SONNET", + "label": "Anthropic Claude 4 Sonnet", + } + + mapping["claude-haiku-4-5-20251001"] = { + "llm_key": "ANTHROPIC_CLAUDE4.5_HAIKU", + "label": "Anthropic Claude 4.5 Haiku", + } + + return mapping def model_post_init(self, __context: Any) -> None: # type: ignore[override] super().model_post_init(__context)