Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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": ["需要开发一个电商网站"]
}
]
}
```

""";
}
Original file line number Diff line number Diff line change
@@ -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"]
}
```

""";
}
Original file line number Diff line number Diff line change
@@ -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万之间"
}
```

""";
}
Loading