diff --git a/skyvern/config.py b/skyvern/config.py index 8ab1fdf0..79c248f2 100644 --- a/skyvern/config.py +++ b/skyvern/config.py @@ -121,6 +121,7 @@ class Settings(BaseSettings): SINGLE_CLICK_AGENT_LLM_KEY: str | None = None SINGLE_INPUT_AGENT_LLM_KEY: str | None = None PROMPT_BLOCK_LLM_KEY: str | None = None + PARSE_SELECT_LLM_KEY: str | None = None EXTRACTION_LLM_KEY: str | None = None # COMMON LLM_CONFIG_TIMEOUT: int = 300 diff --git a/skyvern/forge/app.py b/skyvern/forge/app.py index 82ba0a32..e56f9920 100644 --- a/skyvern/forge/app.py +++ b/skyvern/forge/app.py @@ -68,6 +68,11 @@ SINGLE_CLICK_AGENT_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler( SINGLE_INPUT_AGENT_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler( SETTINGS_MANAGER.SINGLE_INPUT_AGENT_LLM_KEY or SETTINGS_MANAGER.SECONDARY_LLM_KEY or SETTINGS_MANAGER.LLM_KEY ) +PARSE_SELECT_LLM_API_HANDLER = ( + LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.PARSE_SELECT_LLM_KEY) + if SETTINGS_MANAGER.PARSE_SELECT_LLM_KEY + else SECONDARY_LLM_API_HANDLER +) EXTRACTION_LLM_API_HANDLER = ( LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.EXTRACTION_LLM_KEY) if SETTINGS_MANAGER.EXTRACTION_LLM_KEY diff --git a/skyvern/webeye/actions/handler.py b/skyvern/webeye/actions/handler.py index f16dfa38..9fd816b5 100644 --- a/skyvern/webeye/actions/handler.py +++ b/skyvern/webeye/actions/handler.py @@ -3723,7 +3723,8 @@ async def _get_input_or_select_context( action_reasoning=action.reasoning, element_id=action.element_id, ) - json_response = await app.SECONDARY_LLM_API_HANDLER( + # Use centralized parse-select handler (set at init or via scripts) + json_response = await app.PARSE_SELECT_LLM_API_HANDLER( prompt=prompt, step=step, prompt_name="parse-input-or-select-context" ) json_response["intention"] = action.intention