You've already forked DataMate
feat: Implement data synthesis task management with database models and API endpoints (#122)
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
from app.module.generation.schema.generation import SynthesisType
|
||||
|
||||
QA_PROMPT="""
|
||||
# 角色
|
||||
你是一位专业的AI助手,擅长从给定的文本中提取关键信息并创建用于教学和测试的问答对。
|
||||
|
||||
# 任务
|
||||
请根据用户提供的原始文档,生成一系列高质量、多样化的问答对。
|
||||
|
||||
# 输入文档
|
||||
{document}
|
||||
|
||||
# 要求与指令
|
||||
1. **问题类型**:生成{synthesis_count - 1}-{synthesis_count + 1}个问答对。问题类型应多样化,包括但不限于:
|
||||
* **事实性**:基于文本中明确提到的事实。
|
||||
* **理解性**:需要理解上下文和概念。
|
||||
* **归纳性**:需要总结或归纳多个信息点。
|
||||
2. **答案来源**:所有答案必须严格基于提供的文档内容,不得编造原文不存在的信息。
|
||||
3. **语言**:请根据输入文档的主要语言进行提问和回答。
|
||||
4. **问题质量**:问题应清晰、无歧义,并且是读完文档后自然会产生的问题。
|
||||
5. **答案质量**:答案应准确、简洁、完整。
|
||||
|
||||
# 输出格式
|
||||
请严格按照以下JSON格式输出,确保没有额外的解释或标记:
|
||||
[
|
||||
{{"instruction": "问题1","input": "参考内容1","output": "答案1"}},
|
||||
{{"instruction": "问题2","input": "参考内容1","output": "答案2"}},
|
||||
...
|
||||
]
|
||||
"""
|
||||
|
||||
|
||||
COT_PROMPT="""
|
||||
# 角色
|
||||
你是一位专业的数据合成专家,擅长基于给定的原始文档和 COT(Chain of Thought,思维链)逻辑,生成高质量、符合实际应用场景的 COT 数据。COT 数据需包含清晰的问题、逐步推理过程和最终结论,能完整还原解决问题的思考路径。
|
||||
|
||||
# 任务
|
||||
请根据用户提供的原始文档,生成一系列高质量、多样化的 COT 数据。每个 COT 数据需围绕文档中的关键信息、核心问题或逻辑关联点展开,确保推理过程贴合文档内容,结论准确可靠。
|
||||
|
||||
# 输入文档
|
||||
{document}
|
||||
|
||||
# 要求与指令
|
||||
1. **数量要求**:生成 {min\_count}-{max\_count} 条 COT 数据(min\_count={synthesis\_count-1},max\_count={synthesis\_count+1})。
|
||||
2. **内容要求**:
|
||||
* 每条 COT 数据需包含 “问题”“思维链推理”“最终结论” 三部分,逻辑闭环,推理步骤清晰、连贯,不跳跃关键环节。
|
||||
* 问题需基于文档中的事实信息、概念关联或逻辑疑问,是读完文档后自然产生的有价值问题(避免无意义或过于简单的问题)。
|
||||
* 思维链推理需严格依据文档内容,逐步推导,每一步推理都能对应文档中的具体信息,不编造原文不存在的内容,不主观臆断。
|
||||
* 最终结论需简洁、准确,是思维链推理的合理结果,与文档核心信息一致。
|
||||
3. **多样化要求**:
|
||||
* 问题类型多样化,包括但不限于事实查询类、逻辑分析类、原因推导类、方案对比类、结论归纳类。
|
||||
* 推理角度多样化,可从不同角色(如项目参与者、需求方、测试人员)或不同维度(如功能实现、进度推进、问题解决)展开推理。
|
||||
4. **语言要求**:
|
||||
* 语言通顺、表达清晰,无歧义,推理过程口语化但不随意,符合正常思考逻辑,最终结论简洁规范。
|
||||
* 请根据输入文档的主要语言进行提问和回答。
|
||||
|
||||
# 输出格式
|
||||
请严格按照以下 JSON 格式输出,确保没有额外的解释或标记,每条 COT 数据独立成项:
|
||||
[
|
||||
{{"question": "具体问题","chain_of_thought": "步骤 1:明确问题核心,定位文档中相关信息范围;步骤 2:提取文档中与问题相关的关键信息 1;步骤 3:结合关键信息 1 推导中间结论 1;步骤 4:提取文档中与问题相关的关键信息 2;步骤 5:结合中间结论 1 和关键信息 2 推导中间结论 2;...(逐步推进);步骤 N:汇总所有中间结论,得出最终结论","conclusion": "简洁准确的最终结论"}},
|
||||
|
||||
{{"question": "具体问题","chain_of_thought": "步骤 1:明确问题核心,定位文档中相关信息范围;步骤 2:提取文档中与问题相关的关键信息 1;步骤 3:结合关键信息 1 推导中间结论 1;步骤 4:提取文档中与问题相关的关键信息 2;步骤 5:结合中间结论 1 和关键信息 2 推导中间结论 2;...(逐步推进);步骤 N:汇总所有中间结论,得出最终结论","conclusion": "简洁准确的最终结论"}},
|
||||
...
|
||||
]
|
||||
"""
|
||||
|
||||
def get_prompt(synth_type: SynthesisType):
|
||||
if synth_type == SynthesisType.QA:
|
||||
return QA_PROMPT
|
||||
elif synth_type == SynthesisType.COT:
|
||||
return COT_PROMPT
|
||||
else:
|
||||
raise ValueError(f"Unsupported synthesis type: {synth_type}")
|
||||
Reference in New Issue
Block a user