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 设计文档描述实现细节与规划
This commit is contained in:
25
README.md
25
README.md
@@ -49,6 +49,11 @@ pip install drissionpage redis requests pymongo lxml cssselect
|
||||
| `XSPIDER_REDIS_BLOCK_TIMEOUT` | `30` | Redis `BLPOP` 阻塞秒数 |
|
||||
| `XSPIDER_MONGO_URI` | `mongodb://localhost:27017` | MongoDB 连接串 |
|
||||
| `XSPIDER_MONGO_DB` | `xspider` | MongoDB 数据库名称 |
|
||||
| `OPENAI_API_KEY` | `""` | 调用 `gpt-4o` 时使用的 API Key(留空则禁用 AI 动作) |
|
||||
| `OPENAI_API_BASE` | `https://api.openai.com/v1` | OpenAI API 基础地址,可按需切换代理 |
|
||||
| `OPENAI_MODEL` | `gpt-4o` | 默认模型名称 |
|
||||
| `OPENAI_TIMEOUT` | `60` | OpenAI 请求超时,秒 |
|
||||
| `OPENAI_TEMPERATURE` | `0.0` | OpenAI 采样温度 |
|
||||
|
||||
**变量作用域说明**
|
||||
- 对变量名使用 `site:变量名` 将强制读取/写入当前站点作用域;`global:变量名` 将强制使用全局作用域。
|
||||
@@ -181,6 +186,7 @@ python main.py
|
||||
| `set_attr` | `selector`、`params.attr_name` | `params.attr_value`(默认空字符串) | 修改 DOM 属性值。 |
|
||||
| `set_var` | `params.var_name`、`params.var_value` | `params.var_scope`、`params.var_ttl`、`params.var_single_use` | 将变量写入变量服务,可带过期策略。 |
|
||||
| `captcha` | 无(若缺省会截取 `selector` 或整页截图) | `params.image`、`params.captcha_type`、`params.captcha_url`、`params.captcha_config`、`params.variable` | 调用远程接口识别验证码并写入变量。 |
|
||||
| `ai` | `params.prompt` | `params.max_step`、`params.model`、`params.include_html`、`params.include_variables`、`params.temperature` | 调用 `gpt-4o` 生成 DrissionPage 操作步骤并执行,支持限制最大步骤数。 |
|
||||
|
||||
> **提示**
|
||||
> - 当 `selector` 与 `mode` 不匹配时(例如 CSS 模式中使用 XPath),解析阶段会抛出异常。
|
||||
@@ -236,6 +242,25 @@ python main.py
|
||||
- 服务返回 JSON 后,会尝试读取 `result`、`text`、`value`、`code`、`data` 等字段作为识别结果。
|
||||
- 结果最终写入 Redis(默认键为站点作用域下的 `captcha_result`,或使用 `params.variable` 覆盖),并同步到 `site_context` 供后续动作引用。
|
||||
|
||||
### AIAction 使用示例
|
||||
|
||||
`AIAction` 通过调用 OpenAI `gpt-4o` 规划并执行一组 DrissionPage 原生操作,适合处理动态页面或复杂交互。请确保已经在环境变量或 `Settings` 中配置 `OPENAI_API_KEY`。
|
||||
|
||||
```xml
|
||||
<action type="ai"
|
||||
prompt="下载当前页面的首个报表附件,并在完成后返回列表页"
|
||||
max_step="6"
|
||||
include_html="true"
|
||||
include_variables="false"/>
|
||||
```
|
||||
|
||||
- `prompt`:必填,自然语言描述任务目标,支持变量占位符。
|
||||
- `max_step`:限制模型输出的步骤数量(默认为 5,最大 20)。
|
||||
- `include_html` / `include_variables`:控制是否向模型提供页面 HTML 片段和当前变量上下文。
|
||||
- 执行过程中会在 `task_logs` 的 `steps` 字段中记录每个 AI 子步骤的执行结果、异常信息与返回值。
|
||||
|
||||
若未配置 API Key 或 OpenAI 调用失败,动作会抛出异常并在任务日志中记录具体原因。
|
||||
|
||||
## 抽取与存储
|
||||
|
||||
- `<extract>` 支持 `record_css` / `record_xpath` 指定列表元素,`<field>` 定义字段名称、选择器、取值模式及可选的 `value_type`。
|
||||
|
||||
Reference in New Issue
Block a user