yq 3 meses atrás
pai
commit
7b74f32db4
2 arquivos alterados com 29 adições e 11 exclusões
  1. 18 10
      prompt/prompt.py
  2. 11 1
      strategy_parse.py

+ 18 - 10
prompt/prompt.py

@@ -13,12 +13,15 @@ prompt_parse_node = """
 示例:
 规则集名称:通用规则
 规则集:
-规则1: 变量:年龄 age 逻辑:年龄小于18或大于等于65 输出:1
-规则2: 变量:欠税总额 qsze 逻辑:欠税总额大于500 输出:3
+规则1: 变量:年龄 age 逻辑:年龄小于18或大于等于65 输出:1 结果备注: 1代表好
+规则2: 变量:欠税总额 qsze 逻辑:欠税总额大于500 输出:3 结果备注: 3代表一般
 规则3: 变量:非银行机构未结清贷款机构数 fyjgwjqs 逻辑:非银行机构未结清贷款机构数大于10 输出:2
 输出:
 def handle_general_rules(data:dict):
     # 通用规则
+    # 输出结果备注:
+    # 1代表好
+    # 3代表一般
     age = data.get("age")
     qsze = data.get("qsze")
     fyjgwjqs = data.get("fyjgwjqs")
@@ -42,6 +45,7 @@ def handle_general_rules(data:dict):
 1、只返回功能函数代码,不要多余的输出。
 2、代码逻辑应严格按照待处理要求中的条件,不要自行添加多余的逻辑。
 3、代码的语法要符合python的语法规范,返回的代码应该是可执行的。
+4、规则里有 结果备注 的请在函数中的 输出结果备注 处进行备注,没有的则无输出结果备注
 """
 
 prompt_parse_flow = """
@@ -54,9 +58,7 @@ prompt_parse_flow = """
 {node_func_map}
 请把图中的流程转换为python代码,流程中的各个节点参考给定的函数内容,并构造测试数据data,代码样式如下。
 
-from function1 import function1
-from function2 import function2
-from function3 import function3
+{func_import}
 
 def main(data: dict):
     流程逻辑
@@ -67,9 +69,11 @@ if __name__ == "__main__":
     
 返回结果要求:
 1、function1、function2、function3指代给定的函数,请替换为具体的函数名称。
-2、只返回函数代码,不要多余的输出。
-3、代码逻辑应严格按照图中的逻辑,不要自行添加多余的逻辑。
-4、代码的语法要符合python的语法规范,返回的代码应该是可执行的。
+2、针对流程分支情况请参考给定的函数内容及函数的输出结果备注。
+3、分支的最终节点,无实际意义,分支最终节点直接返回其上一个节点输入的结果。
+4、只返回函数代码,不要多余的输出。
+5、代码逻辑应严格按照图中的逻辑,不要自行添加多余的逻辑。
+6、代码的语法要符合python的语法规范,返回的代码应该是可执行的。
 """
 
 
@@ -77,10 +81,14 @@ def f_get_prompt_parse_node(rules_name: str, rules: str):
     return prompt_parse_node.replace("{rules_name}", rules_name).replace("{rules}", rules)
 
 
-def f_get_prompt_parse_flow(node_list:list):
+def f_get_prompt_parse_flow(node_list: list):
     func = ""
     node_func_map = ""
+    func_import = ""
     for node_name, func_name, code in node_list:
         func = f"{func}{code}\n\n"
         node_func_map = f"{node_func_map}{node_name}: {func_name}\n"
-    return prompt_parse_flow.replace("{func}", func).replace("{node_func_map}", node_func_map)
+        func_import = f"{func_import}from {func_name} import {func_name}\n"
+    return prompt_parse_flow.replace("{func}", func) \
+        .replace("{node_func_map}", node_func_map) \
+        .replace("{func_import}", func_import)

+ 11 - 1
strategy_parse.py

@@ -49,14 +49,24 @@ def _f_parse_flow(ws, node_list: list):
     with open(save_path, mode="w", encoding="utf8") as f:
         f.write("")
 
+
 def _f_parse_node(df: pd.DataFrame, node_name):
     rules = ""
     for idx, row in df.iterrows():
         var_name = row["变量"]
         var_name = var_name.replace("\n", " ")
+
         rule_content = row["逻辑"]
+        rule_content = rule_content.replace("\n", " ")
+
         rule_out = row["输出"]
-        rules = f"{rules}规则{idx + 1}: 变量:{var_name} 逻辑:{rule_content} 输出:{rule_out}\n"
+
+        notes_output = row["结果备注"]
+        if notes_output is None or notes_output != notes_output:
+            notes_output = ""
+        else:
+            notes_output = f" 结果备注: {notes_output}"
+        rules = f"{rules}规则{idx + 1}: 变量:{var_name} 逻辑:{rule_content} 输出:{rule_out}{notes_output}\n"
 
     prompt = f_get_prompt_parse_node(node_name, rules)
     print(prompt)