Refactor LLM config to payload-based approach and add NORMAL/CUSTOM select-agent handlers (#3723)

This commit is contained in:
pedrohsdb
2025-10-15 12:14:22 -07:00
committed by GitHub
parent 0b05582cc7
commit dfe8d6fb85
3 changed files with 14 additions and 2 deletions

View File

@@ -130,6 +130,8 @@ class Settings(BaseSettings):
LLM_API_KEY: str | None = None # API key for the model
SECONDARY_LLM_KEY: str | None = None
SELECT_AGENT_LLM_KEY: str | None = None
NORMAL_SELECT_AGENT_LLM_KEY: str | None = None
CUSTOM_SELECT_AGENT_LLM_KEY: str | None = None
SINGLE_CLICK_AGENT_LLM_KEY: str | None = None
SINGLE_INPUT_AGENT_LLM_KEY: str | None = None
PROMPT_BLOCK_LLM_KEY: str | None = None

View File

@@ -66,6 +66,16 @@ SECONDARY_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(
SELECT_AGENT_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(
SETTINGS_MANAGER.SELECT_AGENT_LLM_KEY or SETTINGS_MANAGER.SECONDARY_LLM_KEY or SETTINGS_MANAGER.LLM_KEY
)
NORMAL_SELECT_AGENT_LLM_API_HANDLER = (
LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.NORMAL_SELECT_AGENT_LLM_KEY)
if SETTINGS_MANAGER.NORMAL_SELECT_AGENT_LLM_KEY
else SECONDARY_LLM_API_HANDLER
)
CUSTOM_SELECT_AGENT_LLM_API_HANDLER = (
LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.CUSTOM_SELECT_AGENT_LLM_KEY)
if SETTINGS_MANAGER.CUSTOM_SELECT_AGENT_LLM_KEY
else SECONDARY_LLM_API_HANDLER
)
SINGLE_CLICK_AGENT_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(
SETTINGS_MANAGER.SINGLE_CLICK_AGENT_LLM_KEY or SETTINGS_MANAGER.SECONDARY_LLM_KEY or SETTINGS_MANAGER.LLM_KEY
)

View File

@@ -3179,7 +3179,7 @@ async def select_from_dropdown(
step_id=step.step_id,
task_id=task.task_id,
)
json_response = await app.SELECT_AGENT_LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="custom-select")
json_response = await app.CUSTOM_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)
@@ -3664,7 +3664,7 @@ async def normal_select(
local_datetime=datetime.now(skyvern_context.ensure_context().tz_info).isoformat(),
)
json_response = await app.SELECT_AGENT_LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="normal-select")
json_response = await app.NORMAL_SELECT_AGENT_LLM_API_HANDLER(prompt=prompt, step=step, prompt_name="normal-select")
index: int | None = json_response.get("index")
value: str | None = json_response.get("value")