GPT-4.1-support (#2159)

This commit is contained in:
Suchintan 2025-04-16 02:12:33 -04:00 committed by GitHub
parent 0d24fe3981
commit c829966936
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 70 additions and 10 deletions

View file

@ -52,7 +52,12 @@ setup_llm_providers() {
else else
update_or_add_env_var "OPENAI_API_KEY" "$openai_api_key" update_or_add_env_var "OPENAI_API_KEY" "$openai_api_key"
update_or_add_env_var "ENABLE_OPENAI" "true" update_or_add_env_var "ENABLE_OPENAI" "true"
model_options+=("OPENAI_GPT4_TURBO" "OPENAI_GPT4V" "OPENAI_GPT4O") model_options+=(
"OPENAI_GPT4_1"
"OPENAI_GPT4_1_MINI"
"OPENAI_GPT4_1_NANO"
"OPENAI_GPT4O"
)
fi fi
else else
update_or_add_env_var "ENABLE_OPENAI" "false" update_or_add_env_var "ENABLE_OPENAI" "false"
@ -69,7 +74,10 @@ setup_llm_providers() {
else else
update_or_add_env_var "ANTHROPIC_API_KEY" "$anthropic_api_key" update_or_add_env_var "ANTHROPIC_API_KEY" "$anthropic_api_key"
update_or_add_env_var "ENABLE_ANTHROPIC" "true" update_or_add_env_var "ENABLE_ANTHROPIC" "true"
model_options+=("ANTHROPIC_CLAUDE3_OPUS" "ANTHROPIC_CLAUDE3_SONNET" "ANTHROPIC_CLAUDE3_HAIKU" "ANTHROPIC_CLAUDE3.5_SONNET") model_options+=(
"ANTHROPIC_CLAUDE3.5_SONNET"
"ANTHROPIC_CLAUDE3.7_SONNET"
)
fi fi
else else
update_or_add_env_var "ENABLE_ANTHROPIC" "false" update_or_add_env_var "ENABLE_ANTHROPIC" "false"
@ -92,7 +100,9 @@ setup_llm_providers() {
update_or_add_env_var "AZURE_API_BASE" "$azure_api_base" update_or_add_env_var "AZURE_API_BASE" "$azure_api_base"
update_or_add_env_var "AZURE_API_VERSION" "$azure_api_version" update_or_add_env_var "AZURE_API_VERSION" "$azure_api_version"
update_or_add_env_var "ENABLE_AZURE" "true" update_or_add_env_var "ENABLE_AZURE" "true"
model_options+=("AZURE_OPENAI_GPT4V") model_options+=(
"AZURE_OPENAI_GPT4O"
)
fi fi
else else
update_or_add_env_var "ENABLE_AZURE" "false" update_or_add_env_var "ENABLE_AZURE" "false"
@ -112,7 +122,6 @@ setup_llm_providers() {
model_options+=( model_options+=(
"GEMINI_FLASH_2_0" "GEMINI_FLASH_2_0"
"GEMINI_FLASH_2_0_LITE" "GEMINI_FLASH_2_0_LITE"
"GEMINI_PRO"
"GEMINI_2.5_PRO_PREVIEW_03_25" "GEMINI_2.5_PRO_PREVIEW_03_25"
"GEMINI_2.5_PRO_EXP_03_25" "GEMINI_2.5_PRO_EXP_03_25"
) )

View file

@ -221,7 +221,14 @@ def setup_llm_providers() -> None:
else: else:
update_or_add_env_var("OPENAI_API_KEY", openai_api_key) update_or_add_env_var("OPENAI_API_KEY", openai_api_key)
update_or_add_env_var("ENABLE_OPENAI", "true") update_or_add_env_var("ENABLE_OPENAI", "true")
model_options.extend(["OPENAI_GPT4O"]) model_options.extend(
[
"OPENAI_GPT4_1",
"OPENAI_GPT4_1_MINI",
"OPENAI_GPT4_1_NANO",
"OPENAI_GPT4O",
]
)
else: else:
update_or_add_env_var("ENABLE_OPENAI", "false") update_or_add_env_var("ENABLE_OPENAI", "false")
@ -238,8 +245,6 @@ def setup_llm_providers() -> None:
update_or_add_env_var("ENABLE_ANTHROPIC", "true") update_or_add_env_var("ENABLE_ANTHROPIC", "true")
model_options.extend( model_options.extend(
[ [
"ANTHROPIC_CLAUDE3_OPUS",
"ANTHROPIC_CLAUDE3_HAIKU",
"ANTHROPIC_CLAUDE3.5_SONNET", "ANTHROPIC_CLAUDE3.5_SONNET",
"ANTHROPIC_CLAUDE3.7_SONNET", "ANTHROPIC_CLAUDE3.7_SONNET",
] ]
@ -283,7 +288,6 @@ def setup_llm_providers() -> None:
[ [
"GEMINI_FLASH_2_0", "GEMINI_FLASH_2_0",
"GEMINI_FLASH_2_0_LITE", "GEMINI_FLASH_2_0_LITE",
"GEMINI_PRO",
"GEMINI_2.5_PRO_PREVIEW_03_25", "GEMINI_2.5_PRO_PREVIEW_03_25",
"GEMINI_2.5_PRO_EXP_03_25", "GEMINI_2.5_PRO_EXP_03_25",
] ]
@ -856,5 +860,9 @@ def init() -> None:
print("\nMCP configuration is complete! Your AI applications are now ready to use Skyvern Cloud.") print("\nMCP configuration is complete! Your AI applications are now ready to use Skyvern Cloud.")
if run_local: if run_local:
print("\nInstalling Chromium browser...")
subprocess.run(["playwright", "install", "chromium"], check=True)
print("Chromium installation complete.")
print("\nTo start using Skyvern, run:") print("\nTo start using Skyvern, run:")
print(" skyvern run server") print(" skyvern run server")

View file

@ -99,7 +99,8 @@ class Settings(BaseSettings):
# LLM Configuration # # LLM Configuration #
##################### #####################
# ACTIVE LLM PROVIDER # ACTIVE LLM PROVIDER
LLM_KEY: str = "OPENAI_GPT4O" LLM_KEY: str = "OPENAI_GPT4O" # This is the model name
LLM_API_KEY: str | None = None # API key for the model
SECONDARY_LLM_KEY: str | None = None SECONDARY_LLM_KEY: str | None = None
SELECT_AGENT_LLM_KEY: str | None = None SELECT_AGENT_LLM_KEY: str | None = None
SINGLE_CLICK_AGENT_LLM_KEY: str | None = None SINGLE_CLICK_AGENT_LLM_KEY: str | None = None
@ -108,6 +109,8 @@ class Settings(BaseSettings):
LLM_CONFIG_TIMEOUT: int = 300 LLM_CONFIG_TIMEOUT: int = 300
LLM_CONFIG_MAX_TOKENS: int = 4096 LLM_CONFIG_MAX_TOKENS: int = 4096
LLM_CONFIG_TEMPERATURE: float = 0 LLM_CONFIG_TEMPERATURE: float = 0
LLM_CONFIG_SUPPORT_VISION: bool = True # Whether the model supports vision
LLM_CONFIG_ADD_ASSISTANT_PREFIX: bool = False # Whether to add assistant prefix
# LLM PROVIDER SPECIFIC # LLM PROVIDER SPECIFIC
ENABLE_OPENAI: bool = False ENABLE_OPENAI: bool = False
ENABLE_ANTHROPIC: bool = False ENABLE_ANTHROPIC: bool = False

View file

@ -37,7 +37,17 @@ class LLMConfigRegistry:
@classmethod @classmethod
def get_config(cls, llm_key: str) -> LLMRouterConfig | LLMConfig: def get_config(cls, llm_key: str) -> LLMRouterConfig | LLMConfig:
if llm_key not in cls._configs: if llm_key not in cls._configs:
raise InvalidLLMConfigError(llm_key) # If the key is not found in registered configs, treat it as a general model
LOG.info("Using general model configuration for unknown LLM key", llm_key=llm_key)
if not llm_key:
raise InvalidLLMConfigError(f"LLM_KEY not set for {llm_key}")
return LLMConfig(
llm_key, # Use the LLM_KEY as the model name
["LLM_API_KEY"],
supports_vision=settings.LLM_CONFIG_SUPPORT_VISION,
add_assistant_prefix=settings.LLM_CONFIG_ADD_ASSISTANT_PREFIX,
max_completion_tokens=settings.LLM_CONFIG_MAX_TOKENS,
)
return cls._configs[llm_key] return cls._configs[llm_key]
@ -52,6 +62,36 @@ if settings.ENABLE_OPENAI:
add_assistant_prefix=False, add_assistant_prefix=False,
), ),
) )
LLMConfigRegistry.register_config(
"OPENAI_GPT4_1",
LLMConfig(
"gpt-4.1",
["OPENAI_API_KEY"],
supports_vision=True,
add_assistant_prefix=False,
max_completion_tokens=16384,
),
)
LLMConfigRegistry.register_config(
"OPENAI_GPT4_1_MINI",
LLMConfig(
"gpt-4.1-mini",
["OPENAI_API_KEY"],
supports_vision=True,
add_assistant_prefix=False,
max_completion_tokens=16384,
),
)
LLMConfigRegistry.register_config(
"OPENAI_GPT4_1_NANO",
LLMConfig(
"gpt-4.1-nano",
["OPENAI_API_KEY"],
supports_vision=True,
add_assistant_prefix=False,
max_completion_tokens=16384,
),
)
LLMConfigRegistry.register_config( LLMConfigRegistry.register_config(
"OPENAI_GPT4_5", "OPENAI_GPT4_5",
LLMConfig( LLMConfig(