调整问题生成的提示词

This commit is contained in:
wanyaokun
2024-09-12 16:49:55 +08:00
parent c262aec6bd
commit e18e4f22db
4 changed files with 31 additions and 16 deletions
+3
View File
@@ -14,6 +14,9 @@ from app.api.routers.request.base import ProjectInfo
from llama_index.core.response_synthesizers import ResponseMode
def getPrjFalg(params:dict=None)->str:
if 'prjFalg' in params:
return params.get('prjFalg')
else:
prjFlag = ''
if params is not None:
prjFlag = ProjectInfo().prjFalg(params.get('projectname'))
+1 -1
View File
@@ -63,7 +63,7 @@ summary_template_str = (
"- 如果问题能被回答,你的回答必须严格遵循文档内容,即使与事实不符。一定不要做多余解释。\n"
"- 如果问题能被回答,直接引用文档的相关信息保证答案准确、完整,并追求简洁。\n"
"- 当文档中只有少量信息与问题相关时,重点关注这部分信息,这种情况下一定回答。\n"
"- 当文档中信息与问题无关时,请不要额外发散回答,只需要回答“我不知道这个问题的答案”。\n"
"- 当文档中信息与问题无关时,请不要额外发散回答,只需要回答' '"
"\n"
"来自多个来源的文档片段如下,请充分理解以下参考资料内容,组织出满足用户提问的条理清晰的回复。\n"
"---------------------\n"
+16 -4
View File
@@ -13,19 +13,31 @@ Attribute_Prompt = (
# "你是一个电力造价工程相关的项目经理,现在给你一些上下文信息,"
# "你需要根据现有的上下文信息,来生成{num_questions_per_chunk}个电力造价工程相关的问题和对应的回答,"
# "现在需要你针对上下文信息中的金额或者合价进行提问和回答。"
# "问题和回答的示例应该是这种类型的,示例:项目建设技术服务费的金额,项目建设技术服务费的金额是16855957065.4302; 架空输电线路本体工程的金额,架空输电线路本体工程的金额是55105688268.5176; 工程静态投资的金额,工程静态投资的金额是715035853336.391。"
# "问题和回答的示例应该是这种类型的,示例:项目建设技术服务费的金额,项目建设技术服务费的金额是16855957065.4302"
# "你生成的回答必须严格按照示例中的格式:('问题, 回答')。不允许有丝毫的变动,问题和回答应该在一个单引号内。"
# "这种类似的问题和答案,生成的问题和答案必须一一对应,要符合文件里的内容,不要生成一些无关的问题,不要生成一些重复的问题,"
# "不要生成一些过于简单的问题,不要生成一些过于复杂的问题。"
# )
###MarkDown格式的提示词
Amount_Prompt = """\
上下文信息是一张JSON格式的数据,请根据数据表中内容进行生成{num_questions_per_chunk}个和金额有关的问题。
生成规则推荐使用表中记录行的“代码、其他费、单位投资、合计费、安装费、序号"等字段的值来查询“金额”字段值是多少钱的方式。 例如:
记录行中代码字段的值是3A000000,则生成的问题为:代码为3A000000的金额是多少?
上下文信息是一张表格数据,请根据数据表中内容进行生成{num_questions_per_chunk}个和金额有关的问题。
生成规则推荐使用表中某行数据的某个值来查询“金额”字段值是多少钱的方式。
你生成的回答必须严格按照指定的格式生成,格式为:xxxx的金额是多少。其中xxxx表示的是某行的某个数据的值(金额字段的值除外)。
当文档中信息与金额无关时,请不要额外发散回答,只需要回答为' '
不要生成一些无关的问题,不要生成一些重复的问题
"""
###Json格式的提示词
# Amount_Prompt = """\
# 上下文信息是Json结构的数据,请根据数据表中内容进行生成{num_questions_per_chunk}个和金额有关的问题。
# 生成规则推荐使用某个属性的值来查询“金额”属性值是多少钱的方式。
# 你生成的回答必须严格按照指定的格式生成,格式为:xxxx的金额是多少。其中xxxx表示的是某个属性的值(金额属性的值除外)。
# 当文档中信息与金额无关时,请不要额外发散回答,只需要回答为' '
# 不要生成一些无关的问题,不要生成一些重复的问题
# """
Units_Prompt = (
"你是一个电力造价工程相关的项目经理,现在给你一些上下文信息,"
+7 -7
View File
@@ -79,7 +79,7 @@ class FileLoader:
parser = {
".md" : ChunkMarkdownReader(),
}
return parser
return None
# 定义中文提示词和Python代码中提示词名称的映射
prompt_mapping = {
@@ -168,13 +168,13 @@ def main(documents:List[Document], table_names:List[str],num_questions_per_promp
# 获取命令行参数
if __name__ == "__main__":
if len(sys.argv) != 2:
raise ValueError("Usage: python script.py <table_names_input> <prompt_categories_input> <num_questions_per_prompt>")
table_names_input = sys.argv[0]
num_questions_per_prompt = int(sys.argv[1])
# if len(sys.argv) != 2:
# raise ValueError("Usage: python script.py <table_names_input> <prompt_categories_input> <num_questions_per_prompt>")
# table_names_input = sys.argv[0]
# num_questions_per_prompt = int(sys.argv[1])
# table_names_input = '[总算表]'
# num_questions_per_prompt = 2
table_names_input = '[总算表]'
num_questions_per_prompt = 10
que_Dir = os.path.join(os.getcwd(),f'unit_test\\Quetions')
loader = FileLoader()