chatgpt大模型
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
5.1 KiB

  1. #coding:utf8
  2. import re
  3. from jsonpath_ng import parse
  4. import json
  5. import traceback
  6. def parse_data(raw_data,para):
  7. all_result = raw_data['data']
  8. param_split = str(para).split(":")
  9. datasourcestr = all_result[param_split[0]]
  10. datasource = json.loads(datasourcestr)
  11. # 创建 JsonPath 表达式对象
  12. expr = parse(param_split[1])
  13. # 使用表达式来选择 JSON 元素
  14. match = [match.value for match in expr.find(datasource)]
  15. val = match[0]
  16. return val
  17. def get_content(inputdata,logging):
  18. """
  19. 重新组装参数
  20. :param inputdata:原json数据
  21. :return: 组装的prompt及其他参数
  22. """
  23. res={}
  24. input=inputdata["input"]
  25. data=inputdata["data"]
  26. prompt=input["prompt"]
  27. if_data=re.findall("@@(.*?)@@",prompt)
  28. # if_user=re.findall("{{(.*)}}",prompt)
  29. # if if_user != []:
  30. # user_data=inputdata["metadata"]["user"]
  31. # if if_user[0] in user_data.keys():
  32. # tmp=user_data[if_user[0]]
  33. # prompt=re.sub("{{(.*)}}",tmp,prompt)
  34. if if_data!=[] :
  35. for rule in if_data:
  36. try:
  37. if "#json#" in rule:
  38. parm = rule.split("#json#")
  39. data1 = parse_data(inputdata, parm[0])
  40. data1_json = json.loads(data1)
  41. expr = parse(parm[1])
  42. result = str([match.value for match in expr.find(data1_json)][0])
  43. rep = "@@{}@@".format(rule)
  44. # 增加转义字符
  45. rep_escaped = re.escape(rep)
  46. prompt = re.sub(rep_escaped, result, prompt)
  47. elif ":" in rule:
  48. result = parse_data(inputdata, rule)
  49. rep = "@@{}@@".format(rule)
  50. rep_escaped = re.escape(rep)
  51. prompt = re.sub(rep_escaped, result, prompt)
  52. else:
  53. if rule in data.keys():
  54. tmp1=data[rule]
  55. rep = "@@{}@@".format(rule)
  56. prompt=re.sub(rep,tmp1,prompt)
  57. except:
  58. # print(traceback.format_exc())
  59. rep = "@@{}@@".format(rule)
  60. prompt = prompt.replace(rep,'')
  61. logging.info("动态字段获取数据失败。{}-{}".format(rule, traceback.format_exc()))
  62. logging.info("拼接后的问题:{}".format(prompt))
  63. res["prompt"]=prompt
  64. res["authorization"]=input["authorization"]
  65. res["model"]=input["model"]
  66. res["temperature"]=input["temperature"]
  67. res["authorization"]=input["authorization"]
  68. res["top_p"]=input["top_p"]
  69. res["n"]=input["n"]
  70. return res
  71. # def get_content(inputdata,logging):
  72. # """
  73. # 重新组装参数
  74. # :param inputdata:原json数据
  75. # :return: 组装的prompt及其他参数
  76. # """
  77. # res={}
  78. # admin=inputdata["metadata"]["admin"]
  79. # data=inputdata["data"]
  80. # prompt=admin["prompt"]
  81. # if_user=re.findall("{{(.*)}}",prompt)
  82. # if_data=re.findall("@@(.*)@@",prompt)
  83. # if if_user != []:
  84. # user_data=inputdata["metadata"]["user"]
  85. # if if_user[0] in user_data.keys():
  86. # tmp=user_data[if_user[0]]
  87. # prompt=re.sub("{{(.*)}}",tmp,prompt)
  88. # if if_data!=[] and if_data[0] in data.keys():
  89. # tmp1=data[if_data[0]]
  90. # prompt=re.sub("@@(.*)@@",tmp1,prompt)
  91. # res["prompt"]=prompt
  92. # res["authorization"]=admin["authorization"]
  93. # res["model"]=admin["model"]
  94. # res["temperature"]=admin["temperature"]
  95. # res["authorization"]=admin["authorization"]
  96. # res["top_p"]=admin["top_p"]
  97. # res["n"]=admin["n"]
  98. # return res
  99. if __name__=="__main__":
  100. inputdata={
  101. "output":{
  102. "id":"id",
  103. "content":"content"
  104. },
  105. "address":"http://172.18.1.181:9011/chatGpt/",
  106. "input":{
  107. "authorization":"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",
  108. "top_p":"1",
  109. "temperature":"1",
  110. "model":"gpt-3.5-turbo-16k",
  111. "prompt":"根据下面内容:@@1_Youtube采集:$['content']#json#$['test1']@@。生成一条@@1_Youtube采集:$['Count']@@字的关于中国正面的新闻,标题用title,内容用content,以json格式输出。",
  112. "n":"1"
  113. },
  114. "data":{
  115. "1_Youtube采集":"{\"isDownload\":\"true\",\"content\":\"{\\\"test1\\\":\\\"22222\\\"}\",\"Count\":\"555\"}"
  116. },
  117. "created":1691004265000,
  118. "module":"ChatGPT",
  119. "start_tag":"false",
  120. "multi_branch":0,
  121. "last_edit":1698927821000,
  122. "next_app_id":[
  123. {
  124. "start_id":316,
  125. "edge_id":200,
  126. "end_id":317
  127. }
  128. ],
  129. "transfer_id":3,
  130. "version":1,
  131. "blueprint_id":12,
  132. "scenes_id":12,
  133. "scenario":{
  134. "dataloss":1,
  135. "autoCommitTriggerLast":1,
  136. "maxErrors":3,
  137. "autoCommit":1,
  138. "freshVariables":1
  139. },
  140. "wait_condition":[
  141. ],
  142. "scheduling":{
  143. "interval":-1,
  144. "type":"single"
  145. },
  146. "name":"正面引导",
  147. "businessKey":"78278a5168e45304",
  148. "id":316,
  149. "position":[
  150. 100,
  151. 200
  152. ],
  153. "describe":"正面引导"
  154. }
  155. a=get_content(inputdata,"")
  156. print(a)