diff --git a/backend/app/engine/__init__.py b/backend/app/engine/__init__.py index d02f7c1..e8be605 100644 --- a/backend/app/engine/__init__.py +++ b/backend/app/engine/__init__.py @@ -14,10 +14,13 @@ from app.api.routers.request.base import ProjectInfo from llama_index.core.response_synthesizers import ResponseMode def getPrjFalg(params:dict=None)->str: - prjFlag = '' - if params is not None: - prjFlag = ProjectInfo().prjFalg(params.get('projectname')) - return prjFlag + if 'prjFalg' in params: + return params.get('prjFalg') + else: + prjFlag = '' + if params is not None: + prjFlag = ProjectInfo().prjFalg(params.get('projectname')) + return prjFlag def get_chat_engine(filters=None, params:dict=None): diff --git a/backend/app/engine/prompt.py b/backend/app/engine/prompt.py index e0b0e21..5e3c954 100644 --- a/backend/app/engine/prompt.py +++ b/backend/app/engine/prompt.py @@ -63,7 +63,7 @@ summary_template_str = ( "- 如果问题能被回答,你的回答必须严格遵循文档内容,即使与事实不符。一定不要做多余解释。\n" "- 如果问题能被回答,直接引用文档的相关信息保证答案准确、完整,并追求简洁。\n" "- 当文档中只有少量信息与问题相关时,重点关注这部分信息,这种情况下一定回答。\n" - "- 当文档中信息与问题无关时,请不要额外发散回答,只需要回答“我不知道这个问题的答案”。\n" + "- 当文档中信息与问题无关时,请不要额外发散回答,只需要回答为' '" "\n" "来自多个来源的文档片段如下,请充分理解以下参考资料内容,组织出满足用户提问的条理清晰的回复。\n" "---------------------\n" diff --git a/backend/unit_test/prompts.py b/backend/unit_test/prompts.py index d5de592..93d59eb 100644 --- a/backend/unit_test/prompts.py +++ b/backend/unit_test/prompts.py @@ -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 = ( "你是一个电力造价工程相关的项目经理,现在给你一些上下文信息," diff --git a/backend/unit_test/test_question.py b/backend/unit_test/test_question.py index b7c65cf..705846f 100644 --- a/backend/unit_test/test_question.py +++ b/backend/unit_test/test_question.py @@ -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 = 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 = 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()