feat:问题生成过程优化及COT数据生成优化 (#169)

* fix(chart): update Helm chart helpers and values for improved configuration

* feat(SynthesisTaskTab): enhance task table with tooltip support and improved column widths

* feat(CreateTask, SynthFileTask): improve task creation and detail view with enhanced payload handling and UI updates

* feat(SynthFileTask): enhance file display with progress tracking and delete action

* feat(SynthFileTask): enhance file display with progress tracking and delete action

* feat(SynthDataDetail): add delete action for chunks with confirmation prompt

* feat(SynthDataDetail): update edit and delete buttons to icon-only format

* feat(SynthDataDetail): add confirmation modals for chunk and synthesis data deletion

* feat(DocumentSplitter): add enhanced document splitting functionality with CJK support and metadata detection

* feat(DataSynthesis): refactor data synthesis models and update task handling logic

* feat(DataSynthesis): streamline synthesis task handling and enhance chunk processing logic

* feat(DataSynthesis): refactor data synthesis models and update task handling logic

* fix(generation_service): ensure processed chunks are incremented regardless of question generation success

* feat(CreateTask): enhance task creation with new synthesis templates and improved configuration options

* feat(CreateTask): enhance task creation with new synthesis templates and improved configuration options

* feat(CreateTask): enhance task creation with new synthesis templates and improved configuration options

* feat(CreateTask): enhance task creation with new synthesis templates and improved configuration options
This commit is contained in:
Dallas98
2025-12-18 16:51:18 +08:00
committed by GitHub
parent 761f7f6a51
commit e0e9b1d94d
14 changed files with 1362 additions and 571 deletions

View File

@@ -1,71 +1,138 @@
from app.module.generation.schema.generation import SynthesisType
QA_PROMPT="""# 角色
你是一位专业的AI助手,擅长从给定的文本中提取关键信息并创建用于教学和测试的问答对。
QUESTION_GENERATOR_PROMPT=f"""# Role: 文本问题生成专家
## Profile:
- Description: 你是一名专业的文本分析与问题设计专家,能够从复杂文本中提炼关键信息并产出可用于模型微调的高质量问题集合。
- Input Length: {{textLength}}
- Output Goal: 生成不少于 {{number}} 个高质量问题,用于构建问答训练数据集。
# 任务
请根据用户提供的原始文档,生成一系列高质量、多样化的问答对
## Skills:
1. 能够全面理解原文内容,识别核心概念、事实与逻辑结构
2. 擅长设计具有明确答案指向性的问题,覆盖文本多个侧面。
3. 善于控制问题难度与类型,保证多样性与代表性。
4. 严格遵守格式规范,确保输出可直接用于程序化处理。
# 输入文档
{document}
## Workflow:
1. **文本解析**:通读全文,分段识别关键实体、事件、数值与结论。
2. **问题设计**:基于信息密度和重要性选择最佳提问切入点。
3. **质量检查**:逐条校验问题,确保:
- 问题答案可在原文中直接找到依据。
- 问题之间主题不重复、角度不雷同。
- 语言表述准确、无歧义且符合常规问句形式。
# 要求与指令
1. **问题类型**:生成 {synthesis_count} 个左右的问答对。问题类型应多样化,包括但不限于:
* **事实性**:基于文本中明确提到的事实
* **理解性**:需要理解上下文和概念
* **归纳性**:需要总结或归纳多个信息点
2. **答案来源**:所有答案必须严格基于提供的文档内容,不得编造原文不存在的信息
3. **语言**:请根据输入文档的主要语言进行提问和回答。
4. **问题质量**:问题应清晰、无歧义,并且是读完文档后自然会产生的问题。
5. **答案质量**:答案应准确、简洁、完整。
## Constraints:
1. 所有问题必须严格依据原文内容,不得添加外部信息或假设情境。
2. 问题需覆盖文本的不同主题、层级或视角,避免集中于单一片段
3. 禁止输出与材料元信息相关的问题(如作者、章节、目录等)
4. 提问时请假设没有相应的文章可供参考,因此不要在问题中使用"这个""这些"等指示代词,也不得包含“报告/文章/文献/表格中提到”等表述
5. 输出不少于 {{number}} 个问题,问题语言与原文主要语言保持一致
# 输出格式
请严格按照以下JSON格式输出,保持字段顺序,确保没有额外的解释或标记:
[
{{"instruction": "问题1","input": "参考内容1","output": "答案1"}},
{{"instruction": "问题2","input": "参考内容1","output": "答案2"}},
...
]
## Output Format:
- 使用合法的 JSON 数组,仅包含字符串元素。
- 字段必须使用英文双引号。
- 严格遵循以下结构:
```
["问题1", "问题2", "..."]
```
## Output Example:
```
["人工智能伦理框架应包含哪些核心要素", "民法典对个人数据保护有哪些新规定?"]
```
## 参考原文:
{{text}}
"""
ANSWER_GENERATOR_PROMPT=f"""# Role: 微调数据生成专家
## Profile:
- Description: 你是一名微调数据生成专家,擅长基于给定内容生成准确对应的问题答案,确保答案的准确性、相关性和完整性,能够直接输出符合模型训练要求的结构化数据。
COT_PROMPT="""# 角色
你是一位专业的数据合成专家,擅长基于给定的原始文档和 COT(Chain of Thought,思维链)逻辑,生成高质量、符合实际应用场景的 COT 数据。COT 数据需包含清晰的问题、逐步推理过程和最终结论,能完整还原解决问题的思考路径。
## Skills:
1. 严格基于给定内容生成答案,不添加任何外部信息
2. 答案需准确无误、逻辑通顺,与问题高度相关
3. 能够精准提取给定内容中的关键信息,并整合为自然流畅的完整答案
4. 输出结果必须符合指定的结构化格式要求
# 任务
请根据用户提供的原始文档,生成一系列高质量、多样化的 COT 数据。每个 COT 数据需围绕文档中的关键信息、核心问题或逻辑关联点展开,确保推理过程贴合文档内容,结论准确可靠。
## Workflow:
1. 分析给定的参考内容,梳理核心信息和逻辑框架
2. 结合提出的具体问题,从参考内容中提取与之匹配的关键依据
3. 基于提取的依据,生成准确、详尽且符合逻辑的答案
4. 将依据内容和答案分别填入指定字段,形成结构化输出
5. 校验输出内容,确保格式正确、信息完整、无引用性表述
# 输入文档
{document}
## Output Format:
输出格式为固定字典结构:
```json
{{
"input": "此处填入回答问题所依据的完整参考内容",
"output": "此处填入基于参考内容生成的准确答案"
}}
```
# 要求与指令
1. **数量要求**:生成 {synthesis_count} 条左右的 COT 数据。
2. **内容要求**:
* 每条 COT 数据需包含 “问题”“思维链推理”“最终结论” 三部分,逻辑闭环,推理步骤清晰、连贯,不跳跃关键环节。
* 问题需基于文档中的事实信息、概念关联或逻辑疑问,是读完文档后自然产生的有价值问题(避免无意义或过于简单的问题)。
* 思维链推理需严格依据文档内容,逐步推导,每一步推理都能对应文档中的具体信息,不编造原文不存在的内容,不主观臆断。
* 最终结论需简洁、准确,是思维链推理的合理结果,与文档核心信息一致。
3. **多样化要求**:
* 问题类型多样化,包括但不限于事实查询类、逻辑分析类、原因推导类、方案对比类、结论归纳类。
* 推理角度多样化,可从不同角色(如项目参与者、需求方、测试人员)或不同维度(如功能实现、进度推进、问题解决)展开推理。
4. **语言要求**:
* 语言通顺、表达清晰,无歧义,推理过程口语化但不随意,符合正常思考逻辑,最终结论简洁规范。
* 请根据输入文档的主要语言进行提问和回答。
## Constrains:
1. `input`字段必须根据给定的参考内容填入回答问题的依据,不得更改原文含义
2. `output`字段的答案必须完全基于`input`中的内容,严禁编造、添加外部信息
3. 答案需充分详细,包含回答问题的所有必要信息,满足大模型微调训练的数据要求
4. 答案中不得出现「参考」「依据」「文献中提到」等任何引用性表述,仅呈现最终结论
5. 必须严格遵守指定的字典输出格式,不得额外添加其他内容
# 输出格式
请严格按照以下 JSON 格式输出,保持字段顺序,确保没有额外的解释或标记,每条 COT 数据独立成项:
[
{{"question": "具体问题","chain_of_thought": "步骤 1:明确问题核心,定位文档中相关信息范围;步骤 2:提取文档中与问题相关的关键信息 1;步骤 3:结合关键信息 1 推导中间结论 1;步骤 4:提取文档中与问题相关的关键信息 2;步骤 5:结合中间结论 1 和关键信息 2 推导中间结论 2;...(逐步推进);步骤 N:汇总所有中间结论,得出最终结论","conclusion": "简洁准确的最终结论"}},
## Reference Content
------ 参考内容 Start ------
{{text}}
------ 参考内容 End ------
{{"question": "具体问题","chain_of_thought": "步骤 1:明确问题核心,定位文档中相关信息范围;步骤 2:提取文档中与问题相关的关键信息 1;步骤 3:结合关键信息 1 推导中间结论 1;步骤 4:提取文档中与问题相关的关键信息 2;步骤 5:结合中间结论 1 和关键信息 2 推导中间结论 2;...(逐步推进);步骤 N:汇总所有中间结论,得出最终结论","conclusion": "简洁准确的最终结论"}},
...
]
## Question
{{question}}
"""
COT_GENERATOR_PROMPT=f"""# Role: 微调数据生成专家
## Profile:
- Description: 你是一名微调数据生成专家,擅长基于给定参考内容,通过**思维链(COT)逐步推理**生成准确、完整的答案,输出符合大模型微调训练要求的结构化COT数据,还原从信息提取到结论推导的全思考路径。
## Skills:
1. 严格基于给定参考内容开展推理,不引入任何外部信息
2. 能够拆解问题逻辑,按步骤提取关键信息并推导,确保推理过程连贯、无跳跃
3. 生成的答案精准对应问题,逻辑通顺,与参考内容高度一致
4. 输出结果严格符合指定的结构化COT格式要求
## Workflow:
1. 分析给定参考内容,梳理核心信息、概念及逻辑关联
2. 结合具体问题,明确推理起点与目标,划定参考内容中的相关信息范围
3. 分步推导:提取关键信息→推导中间结论→结合更多信息完善逻辑→形成最终结论
4. 将完整推理过程、最终答案填入指定字段,生成结构化COT数据
5. 校验:确保推理每一步均对应参考内容,无编造信息,格式合规,无引用性表述
## Output Format:
输出固定JSON结构,包含思维链推理、最终答案两部分:
```json
{{
"chain_of_thought": "基于参考内容逐步推理的完整思维链,详述每一步提取的信息和推导的逻辑过程",
"output": "此处填入基于思维链推理得出的准确、详细的最终结论"
}}
```
## Constrains:
2. `chain_of_thought`字段需还原完整推理路径,每一步推导均需对应`Reference Content`中的具体内容,严禁主观臆断
3. `output`字段的答案必须完全来源于`Reference Content`和`chain_of_thought`的推导,不添加任何外部信息,满足大模型微调对数据质量的要求
4. 整个输出中不得出现「参考」「依据」「文献中提到」等引用性表述,仅呈现推理过程与结论
5. 必须严格遵守指定JSON格式,字段顺序固定,无额外解释或标记内容
## Reference Content
------ 参考内容 Start ------
{{text}}
------ 参考内容 End ------
## Question
{{question}}
"""
def get_prompt(synth_type: SynthesisType):
if synth_type == SynthesisType.QA:
return QA_PROMPT
return ANSWER_GENERATOR_PROMPT
elif synth_type == SynthesisType.COT:
return COT_PROMPT
return COT_GENERATOR_PROMPT
elif synth_type == SynthesisType.QUESTION:
return QUESTION_GENERATOR_PROMPT
else:
raise ValueError(f"Unsupported synthesis type: {synth_type}")