Files
xspider/xspider/actions/base.py
Flik 85b7ea4f6c feat(ai): 添加 AI 动作支持,集成 OpenAI GPT-4o 驱动自动化流程
- 新增 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 设计文档描述实现细节与规划
2025-10-21 21:38:46 +08:00

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