33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
# MIT License
|
||
# Copyright (c) 2024
|
||
"""多模态归纳提示词模板"""
|
||
|
||
from __future__ import annotations
|
||
|
||
import json
|
||
from typing import Any, Dict, List
|
||
|
||
# system 提示:约束模型输出和选择器策略
|
||
SYSTEM_PROMPT = """
|
||
你是一名Windows桌面自动化工程师,请将用户示教的关键事件归纳为可参数化的自动化DSL。
|
||
要求:
|
||
1) 识别界面场景(如记事本、保存对话框、网页表单),推断用户意图。
|
||
2) 将易变内容参数化(params),动作抽象成可重放的 click/type/set_value 等。
|
||
3) 选择器优先级:AutomationId > (Name + ControlType) > (ClassName + ControlType),谨慎使用坐标。
|
||
4) 输出健壮 waits/assertions,避免竞态。
|
||
5) 严格输出 JSON,符合 dsl_schema.json。
|
||
""".strip()
|
||
|
||
|
||
def render_user_prompt(packed_events: List[Dict[str, Any]]) -> str:
|
||
"""构造 user 提示,将打包事件嵌入"""
|
||
guide = """
|
||
请阅读以下关键事件,生成符合 dsl_schema.json 的 JSON:
|
||
- events 已包含点击/文本输入/窗口切换,附带 UIA selector 摘要与可用截图路径。
|
||
- 生成 params:将文件名、文本内容等抽象为参数。
|
||
- 生成 steps:click/type/set_value/assert_exists/wait_for;需要等待时填写 waits。
|
||
- 生成 assertions:确保关键结果(如窗口标题或保存结果)。
|
||
仅输出 JSON,不要解释。
|
||
""".strip()
|
||
return f"{guide}\n\n事件摘要(JSON):\n{json.dumps(packed_events, ensure_ascii=False, indent=2)}"
|