diff --git a/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QFormPrompt.java b/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QFormPrompt.java new file mode 100644 index 0000000..6c50ad2 --- /dev/null +++ b/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QFormPrompt.java @@ -0,0 +1,150 @@ +package io.github.timemachinelab.core.constant; + +public class QFormPrompt { + + public final static String Q_FROM_PROMPT = + """ + ## 表单形式提示词 + + ### 描述 + + 快速收集用户需求的核心要素,为后续深度挖掘提供基础信息框架。 + + ### 触发条件判断逻辑 + + AI评估用户输入的信息完整度: + + + 缺少基本目标描述 + + 缺少关键背景信息 + + 总体描述过于简单 + + **重要约束**:只有当存在多个相关性高的子问题且能一次性收集时才使用表单 + + **避免滥用**:表单提问用户体验较差,能用其他形式解决的优先使用其他方式 + + ### 输出格式规范 + + + 你必须要按照标准的无误的 json 格式给我返回结果,其他的什么都不要给我 + + ```json + { + "question": "表单引导语", + "type": "form", + "parentId": "对话ID", + "fields": [ + { + "id": "字段标识", + "question": "字段问题描述", + "type": "input|single|muti", + "options": [ + { + "id": "选项标识", + "label": "选项显示文本" + } + ], // 仅single/muti类型需要 + "desc": "字段的详细说明或引导", // 可选 + "weight": "权重分数" + } + ], + "desc": "表单的详细说明、填写引导或补充解释" // 可选 + } + ``` + + ### 规则 + + **1. question字段生成规则** + + + AI根据用户当前描述情况生成合适的引导语 + + 需体现对用户已有信息的理解和对补充信息的需求 + + 保持简洁友好的表达方式 + + **2. fields数组生成规则** + + + **字段数量**:2-5个字段 + + AI分析用户描述,识别缺失的关键信息维度并生成对应字段 + + 按weight权重从高到低排序 + + 优先使用选择类型,减少用户键盘输入 + + **3. 单个field对象规则** + + + **id**:使用英文标识,与question内容对应 + + **question**:AI生成的简洁明确问题,不超过20字 + + **type**:优先级顺序选择 + - single:是否类型或单选题 + - muti:多选题 + - **input**:预期一句话或简短描述 + + **options**:仅single/muti类型需要的选项数组 + + **desc**:可选字段,当字段需要补充说明时使用 + + **weight**:权重分数1-10,最重要的信息为10分,依次递减 + + **4. options数组生成规则** + + + **适用类型**:仅当type为single或muti时需要 + + **选项数量**:single类型2-4个选项,muti类型3-6个选项 + + **选项内容**: + - **id**:英文标识,用于程序处理 + - **label**:中文显示文本,简洁明确 + + **是否类型**:single类型常用于是/否、有/无等二元选择 + + **多选类型**:muti类型用于可选择多个答案的情况 + + **5. desc字段规则** + + + **表单级desc**:表单整体的说明引导 + + **字段级desc**:单个字段的补充说明 + + **长度限制**:不超过100字 + + **作用**:帮助用户理解填写要求 + + **6. 权重评分规则** + + + AI评估每个字段信息对理解用户需求的重要程度 + + 权重越高的字段排在fields数组越前面 + + 权重相同时,优先考虑更基础的信息维度 + + **7. 表单使用约束** + + + **谨慎使用**:表单提问用户体验相对较差 + + **使用条件**:必须是多个相关性高的问题能够一次性收集 + + **替代优先**:单一问题或简单追问优先使用其他交互方式 + + **8. 信息收集原则** + + + 专注基础要素收集,避免深度细节 + + 基于用户已提供信息,只询问缺失部分 + + 为后续交互类型提供足够的上下文信息 + + **9. 字段去重逻辑** + + + AI分析用户输入中已明确表达的信息维度 + + 已知信息对应的字段不再包含在fields中 + + 确保每个字段都有收集价值 + + ### 用户回答的JSON格式 + + + other1,other2 代表用户自己的输入内容 + + **具体示例** + + ```json + { + "questionId": "question_001", + "answer": [ + { + "id": "urgency", + "value": ["urgent"] + }, + { + "id": "required_features", + "value": ["user_login", "payment_system", "other1"] + }, + { + "id": "project_type", + "value": ["website"] + }, + { + "id": "description", + "value": ["需要开发一个电商网站"] + } + ] + } + ``` + + """; +} diff --git a/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QSelectPrompt.java b/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QSelectPrompt.java new file mode 100644 index 0000000..bbecd08 --- /dev/null +++ b/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QSelectPrompt.java @@ -0,0 +1,138 @@ +package io.github.timemachinelab.core.constant; + +public class QSelectPrompt { + + public final static String Q_SELECT_PROMPT = + """ + ## 选项形式提示词 + + ### 描述 + + 针对单一维度问题提供多个预设选项,让用户快速选择而非自由输入。 + + ### 触发条件判断逻辑 + + AI评估用户输入和对话情况: + + + 存在单一明确的选择性问题 + + 可以预设3-6个合理选项覆盖主要情况 + + 选项之间互斥或有明确优先级 + + 用户自由回答可能过于宽泛或低效 + + **优先级**:相比input类型和表单体验更好,应优先考虑使用 + + ### 输出格式规范 + + + 你必须要按照标准的无误的 json 格式给我返回结果,其他的什么都不要给我 + + **单选类型** + + ```json + { + "question": "选择问题描述", + "type": "single", + "parentId": "对话ID", + "options": [ + { + "id": "选项标识", + "label": "选项显示文本" + } + ], + "desc": "问题的详细说明、引导提示或补充解释" // 可选 + } + ``` + + **多选类型** + + ```json + { + "question": "选择问题描述", + "type": "muti", + "parentId": "对话ID", + "options": [ + { + "id": "选项标识", + "label": "选项显示文本" + } + ], + "desc": "问题的详细说明、引导提示或补充解释" // 可选 + } + ``` + + ### 规则 + + **1. question字段生成规则** + + + AI生成清晰的选择性问题 + + 问题表述要让用户明确知道需要选择什么 + + 保持简洁,一般不超过20字 + + **2. type字段规则** + + + single:单选模式,用户只能选择一个选项 + + muti:多选模式,用户可以选择多个选项 + + **判断标准**:问题中包含"哪些"、"都有什么"等多选指向词汇时使用muti + + **3. options数组生成规则** + + + 选项数量:3-6个选项 + + 按weight权重从高到低排序 + + 选项需要覆盖用户可能的主要情况 + + 选项之间应相互独立且具有区分度 + + **4. 单个option对象规则** + + + **id**:使用英文标识,便于程序处理 + + **label**:简洁的中文显示文本,不超过10字 + + **5. desc字段规则** + + + **可选字段**:当问题需要补充说明或引导时使用 + + **内容包含**:问题背景解释、选择引导、注意事项等 + + **长度限制**:不超过100字 + + **作用**:帮助用户理解问题含义和选择标准 + + **6. 选项设计原则** + + + **全面性**:选项应覆盖80%以上的常见情况 + + **互斥性**:单选时选项之间不应重叠 + + **渐进性**:按重要程度或常见程度排序 + + **简洁性**:选项文本清晰易懂 + + **7. 使用场景约束** + + + **优先使用**:相比input类型和表单,选项形式用户体验最佳 + + **适用情况**:问题有明确的选择边界和有限的答案空间 + + **避免滥用**:不适合开放性问题或需要详细描述的情况 + + **8. 权重评分逻辑** + + + 基于选项的常见程度和重要性评分 + + 最符合用户可能需求的选项权重最高 + + 权重相同时按逻辑顺序排列 + + ### 用户回答的JSON格式 + + + other1,other2 代表用户自己的输入内容 + + **具体示例** + + 单选示例: + + ```json + { + "questionId": "project_urgency_001", + "answer": ["urgent", "other1"] + } + ``` + + 多选示例: + + ```json + { + "questionId": "required_features_002", + "answer": ["user_login", "payment_system", "admin_panel", "other1", "other2"] + } + ``` + + """; +} diff --git a/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QuestionPrompt.java b/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QuestionPrompt.java new file mode 100644 index 0000000..b7bc8bd --- /dev/null +++ b/prompto-lab-app/src/main/java/io/github/timemachinelab/core/constant/QuestionPrompt.java @@ -0,0 +1,85 @@ +package io.github.timemachinelab.core.constant; + +public class QuestionPrompt { + + public final static String QUESTION_PROMPT = + """ + ## 问答形式提示词 + + ### 描述 + + 针对开放性问题或需要详细回答的单一问题,引导用户进行自然语言回复。 + + ### 触发条件判断逻辑 + + AI评估用户输入和对话情况: + + + 存在单一关键问题需要深入了解 + + 问题具有开放性,无法用预设选项覆盖 + + 需要用户提供具体描述、案例或详细信息 + + 用户的回答对后续对话走向有重要影响 + + **使用时机**:当单选类型和多选类型都不适用时的fallback方案 + + ### 输出格式规范 + + + 你必须要按照标准的无误的 json 格式给我返回结果,其他的什么都不要给我 + + ```json + { + "question": "问题描述", + "type": "input", + "parentId": "对话ID", + "desc": "问题的详细说明、引导提示或补充解释" // 可选 + } + ``` + + ### 规则 + + **1. question字段生成规则** + + + AI生成具体明确的问题 + + 问题应该有明确的指向性,避免过于宽泛 + + 使用疑问句形式,让用户明确知道需要回答什么 + + 长度控制在15-40字之间 + + **2. desc字段规则** + + + **可选字段**:当问题需要补充说明或引导时使用 + + **内容包含**:问题背景解释、回答引导、示例说明、输入提示等 + + **长度限制**:不超过100字 + + **作用**:帮助用户理解问题含义和回答方向,提供回答示例 + + **3. 问题设计原则** + + + **具体性**:避免"你觉得怎么样"这类过于宽泛的问题 + + **引导性**:问题本身要能引导用户提供有价值的信息 + + **相关性**:与用户当前需求和对话上下文紧密相关 + + **渐进性**:从核心问题开始,逐步深入细节 + + **4. 使用场景约束** + + + **慎重使用**:input类型对用户要求最高,容易造成对话中断 + + **适用情况**:确实需要开放性回答且无法用其他类型替代 + + **优化原则**:能用单选/多选解决的不用input类型 + + **5. 问题优化逻辑** + + + 避免连续多个input类型,容易让用户疲惫 + + 基于用户已提供信息精准定位缺失部分 + + 问题表述要让用户感觉有话可说,而非无从下手 + + ### 用户回答的JSON格式 + + **具体示例** + + 回答示例: + + ```json + { + "questionId": "budget_range_001", + "answer": "预算大概在10-20万之间" + } + ``` + + """; +}