From 430c6b7851e723e66a575561a9884b1f805a6e74 Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Tue, 4 Feb 2025 19:16:39 +0800 Subject: [PATCH] add select agent llm handler (#1713) --- skyvern/config.py | 1 + skyvern/forge/app.py | 5 +++++ skyvern/webeye/actions/handler.py | 9 ++------- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/skyvern/config.py b/skyvern/config.py index 215428b1..f3a5c759 100644 --- a/skyvern/config.py +++ b/skyvern/config.py @@ -94,6 +94,7 @@ class Settings(BaseSettings): # ACTIVE LLM PROVIDER LLM_KEY: str = "OPENAI_GPT4O" SECONDARY_LLM_KEY: str | None = None + SELECT_AGENT_LLM_KEY: str | None = None # COMMON LLM_CONFIG_TIMEOUT: int = 300 LLM_CONFIG_MAX_TOKENS: int = 4096 diff --git a/skyvern/forge/app.py b/skyvern/forge/app.py index 926e6349..bc6d00cf 100644 --- a/skyvern/forge/app.py +++ b/skyvern/forge/app.py @@ -35,6 +35,11 @@ LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(SettingsManager.get_s SECONDARY_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler( SETTINGS_MANAGER.SECONDARY_LLM_KEY if SETTINGS_MANAGER.SECONDARY_LLM_KEY else SETTINGS_MANAGER.LLM_KEY ) +SELECT_AGENT_LLM_API_HANDLER = ( + LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.SELECT_AGENT_LLM_KEY) + if SETTINGS_MANAGER.SELECT_AGENT_LLM_KEY + else SECONDARY_LLM_API_HANDLER +) WORKFLOW_CONTEXT_MANAGER = WorkflowContextManager() WORKFLOW_SERVICE = WorkflowService() AGENT_FUNCTION = AgentFunction() diff --git a/skyvern/webeye/actions/handler.py b/skyvern/webeye/actions/handler.py index 21e09de0..dc4f958c 100644 --- a/skyvern/webeye/actions/handler.py +++ b/skyvern/webeye/actions/handler.py @@ -2161,12 +2161,7 @@ async def select_from_dropdown( step_id=step.step_id, task_id=task.task_id, ) - if context.is_date_related: - # HACK: according to the test, secondary LLM is not doing well on the date picker - # using the main LLM to handle the case - json_response = await app.LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="custom-select") - else: - json_response = await app.SECONDARY_LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="custom-select") + json_response = await app.SELECT_AGENT_LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="custom-select") value: str | None = json_response.get("value", None) single_select_result.value = value select_reason: str | None = json_response.get("reasoning", None) @@ -2618,7 +2613,7 @@ async def normal_select( options=options_html, ) - json_response = await app.LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="custom-select") + json_response = await app.SELECT_AGENT_LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="custom-select") index: int | None = json_response.get("index") value: str | None = json_response.get("value")