- 新增 AIExecutor 类用于调用 OpenAI API 并解析结构化指令 - 在 Settings 中增加 OpenAI 相关配置项(API Key、模型、超时等) - 扩展 ActionContext 以支持注入 AI 服务实例 - 实现 AIAction 类处理自然语言提示并执行 AI 规划的浏览器操作 - 支持通过 max_step 参数限制 AI 操作步数(默认5,最大20) - 支持 include_html 和 include_variables 控制上下文内容传递 - 支持运行时覆盖模型和温度参数 - 增加详细的错误处理与日志记录机制- 更新 README 文档说明 AIAction 使用方法与配置选项 - 更新 XSD schema 支持 ai 类型动作定义- 在 FlowRunner 中完善步骤记录逻辑,支持 AI 执行结果输出 - 添加 plan_ai_action.md 设计文档描述实现细节与规划
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
import time
|
|
from abc import ABC, abstractmethod
|
|
from typing import Any, Dict, Optional
|
|
|
|
from ..browser import BrowserSession
|
|
from ..models import ActionConfig
|
|
from ..variables import VariableResolver
|
|
|
|
|
|
class ActionContext:
|
|
def __init__(
|
|
self,
|
|
session: BrowserSession,
|
|
resolver: VariableResolver,
|
|
site_context: Dict[str, str],
|
|
services: Optional[Dict[str, Any]] = None,
|
|
) -> None:
|
|
self.session = session
|
|
self.resolver = resolver
|
|
self.site_context = site_context
|
|
self.services = services or {}
|
|
|
|
|
|
class BaseAction(ABC):
|
|
type_name: str
|
|
enabled: bool = True
|
|
|
|
def __init__(self, config: ActionConfig) -> None:
|
|
self.config = config
|
|
|
|
def execute(self, ctx: ActionContext) -> Optional[Any]:
|
|
result = self._execute(ctx)
|
|
if self.config.after_wait:
|
|
time.sleep(self.config.after_wait / 1000.0)
|
|
return result
|
|
|
|
@abstractmethod
|
|
def _execute(self, ctx: ActionContext) -> Optional[Any]:
|
|
raise NotImplementedError
|