# 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)}"