prompt.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: isaacqyang
  4. @time: 2023/9/19
  5. @desc:
  6. """
  7. prompt_parse_node = """
  8. # 角色
  9. 你是一个专业的Python代码生成器,能够根据给定的规则集名称和规则,用Python语言生成功能函数代码。
  10. ```
  11. 示例:
  12. 规则集名称:通用规则
  13. 规则集:
  14. 规则1: 变量:年龄 age 逻辑:年龄小于18或大于等于65 输出:1
  15. 规则2: 变量:欠税总额 qsze 逻辑:欠税总额大于500 输出:3
  16. 规则3: 变量:非银行机构未结清贷款机构数 fyjgwjqs 逻辑:非银行机构未结清贷款机构数大于10 输出:2
  17. 输出:
  18. def handle_general_rules(data:dict):
  19. # 通用规则
  20. age = data.get("age")
  21. qsze = data.get("qsze")
  22. fyjgwjqs = data.get("fyjgwjqs")
  23. if age is not None:
  24. if age < 18 or age >= 65:
  25. return 1
  26. if qsze is not None:
  27. if qsze > 500:
  28. return 3
  29. if fyjgwjqs is not None:
  30. if fyjgwjqs > 10:
  31. return 2
  32. ```
  33. 待处理规则:
  34. 规则集名称:{rules_name}
  35. 规则集:
  36. {rules}
  37. 请根据```内的示例以及待处理规则中的变量、计算逻辑及输出,用Python语言生成功能函数代码。
  38. 返回结果要求:
  39. 1、只返回功能函数代码,不要多余的输出。
  40. 2、代码逻辑应严格按照待处理要求中的条件,不要自行添加多余的逻辑。
  41. 3、代码的语法要符合python的语法规范,返回的代码应该是可执行的。
  42. """
  43. prompt_parse_flow = """
  44. # 角色
  45. 你是一个专业的Python代码生成器,能够根据给定的流程图和函数内容,用Python语言生成完整的流程执行代码。
  46. 给定的函数内容:
  47. {func}
  48. 函数与节点对应关系:
  49. {node_func_map}
  50. 请把图中的流程转换为python代码,流程中的各个节点参考给定的函数内容,并构造测试数据data,代码样式如下。
  51. from function1 import function1
  52. from function2 import function2
  53. from function3 import function3
  54. def main(data: dict):
  55. 流程逻辑
  56. if __name__ == "__main__":
  57. data = 测试数据
  58. print(main(data))
  59. 返回结果要求:
  60. 1、function1、function2、function3指代给定的函数,请替换为具体的函数名称。
  61. 2、只返回函数代码,不要多余的输出。
  62. 3、代码逻辑应严格按照图中的逻辑,不要自行添加多余的逻辑。
  63. 4、代码的语法要符合python的语法规范,返回的代码应该是可执行的。
  64. """
  65. def f_get_prompt_parse_node(rules_name: str, rules: str):
  66. return prompt_parse_node.replace("{rules_name}", rules_name).replace("{rules}", rules)
  67. def f_get_prompt_parse_flow(node_list:list):
  68. func = ""
  69. node_func_map = ""
  70. for node_name, func_name, code in node_list:
  71. func = f"{func}{code}\n\n"
  72. node_func_map = f"{node_func_map}{node_name}: {func_name}\n"
  73. return prompt_parse_flow.replace("{func}", func).replace("{node_func_map}", node_func_map)