SDK: Support AI act feature (#3888)

This commit is contained in:
Stanislav Novosad
2025-11-04 11:28:43 -07:00
committed by GitHub
parent bdbabd5153
commit ba99e9ea2c
10 changed files with 246 additions and 5 deletions

View File

@@ -174,6 +174,11 @@ async def run_sdk_action(
data=action.data,
timeout=action.timeout,
)
elif action.type == "ai_act":
await page_ai.ai_act(
prompt=action.intention,
)
result = None
elif action.type == "extract":
extract_result = await page_ai.ai_extract(
prompt=action.prompt,

View File

@@ -12,6 +12,7 @@ class SdkActionType(str, Enum):
AI_CLICK = "ai_click"
AI_INPUT_TEXT = "ai_input_text"
AI_SELECT_OPTION = "ai_select_option"
AI_ACT = "ai_act"
EXTRACT = "extract"
@@ -57,6 +58,14 @@ class SelectOptionAction(SdkActionBase):
timeout: float = Field(default=settings.BROWSER_ACTION_TIMEOUT_MS, description="Timeout in milliseconds")
class ActAction(SdkActionBase):
"""AI act action parameters."""
type: Literal["ai_act"] = "ai_act"
intention: str = Field(default="", description="Natural language prompt for the action")
data: str | dict[str, Any] | None = Field(None, description="Additional context data")
class ExtractAction(SdkActionBase):
"""Extract data action parameters."""
@@ -70,7 +79,7 @@ class ExtractAction(SdkActionBase):
# Discriminated union of all action types
SdkAction = Annotated[
Union[ClickAction, InputTextAction, SelectOptionAction, ExtractAction],
Union[ClickAction, InputTextAction, SelectOptionAction, ActAction, ExtractAction],
Field(discriminator="type"),
]