mianji.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. def adjust(
  2. selected,
  3. data,
  4. aiclient,
  5. qwclient,
  6. sfclient
  7. ):
  8. options=[
  9. ['第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼地面单块0.4m2以内地砖 干硬性水泥砂浆', '第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼地面单块0.4m2以外地砖 干硬性水泥砂浆'],
  10. ['第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼地面单块0.4m2以内地砖 水泥砂浆', '第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼地面单块0.4m2以外地砖 水泥砂浆'],
  11. ['第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼地面单块0.4m2以内地砖 干粉型粘结剂','第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼地面单块0.4m2以外地砖 干粉型粘结剂'],
  12. ['第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼梯单块0.1m2以内地砖 水泥砂浆', '第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼梯单块0.4m2以内地砖 水泥砂浆', '第十三章 楼地面工程 13.4 块料面层 13.4.4 地砖、橡胶塑料板 楼梯单块0.4m2以外地砖 水泥砂浆'],
  13. ['第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.06m2以内墙砖 砂浆粘贴 墙面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以内墙砖 砂浆粘贴 墙面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以上墙砖 砂浆粘贴 墙面'],
  14. ['第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.06m2以内墙砖 砂浆粘贴 柱、梁、零星面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以内墙砖 砂浆粘贴 柱、梁、零星面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以上墙砖 砂浆粘贴 柱、梁、零星面'],
  15. ['第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.06m2以内墙砖 干粉型粘结剂粘贴 墙面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以内墙砖 干粉型粘结剂粘贴 墙面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以上墙砖 干粉型粘结剂粘贴 墙面'],
  16. ['第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.06m2以内墙砖 干粉型粘结剂粘贴 柱、梁、零星面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以内墙砖 干粉型粘结剂粘贴 柱、梁、零星面', '第十四章 墙柱面工程 14.3 镶贴块料面层及幕墙 14.3.1 瓷砖 单块面积0.18m2以上墙砖 干粉型粘结剂粘贴 柱、梁、零星面']
  17. ]
  18. hit = []
  19. hit_group = []
  20. for entry in selected:
  21. for group in options:
  22. if entry in group:
  23. hit = [entry]
  24. hit_group = group
  25. if len(hit) == 0:
  26. return selected
  27. xuanxiang=[]
  28. choice=[]
  29. letters='ABC'
  30. for i in range(len(hit_group)):
  31. xuanxiang.append("给定一个选项:" + hit_group[i] + ', 记作' + letters[i])
  32. completion = aiclient.chat.completions.create(
  33. model="glm-4.5-air",
  34. messages=[
  35. {"role": "system", "content": "You are a helpful assistant."},
  36. {"role": "user", "content": "长度单位可以是米,是厘米,是毫米。如果未注明,则默认是毫米."},
  37. {"role": "user", "content": "以下是一段工作内容的描述: " + data['tz'] + '\n其中可能包括了地砖或者墙砖的尺寸。譬如,10厚800X800防滑地砖,就表明地砖尺寸为800毫米乘以800毫米\n根据尺寸可以算出单块砖的面积0.64m2。再例如,10厚600X600地砖,尺寸600毫米,面积0.36m2' + ';'.join(xuanxiang) + "\n请根据工作内容计算出面积,并从上述选项中选择单块面积最恰当的一个选项并返回。请给出分析过程并返回A或者B或者C作为答案.如果无法确定,请返回A"},
  38. ],
  39. extra_body={"thinking": {"type": "disabled"}},
  40. )
  41. json_string = completion.choices[0].message.content
  42. print(json_string)
  43. if len(json_string) < 8:
  44. if 'A' in json_string:
  45. choice=[hit_group[0]]
  46. if 'B' in json_string:
  47. choice=[hit_group[1]]
  48. if 'C' in json_string:
  49. choice=[hit_group[2]]
  50. else:
  51. completion = aiclient.chat.completions.create(
  52. model="glm-4.5-flash",
  53. messages=[
  54. {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
  55. {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一个类似于A或者B或者C的选项作为答案,请将该答案输出"},
  56. ],
  57. extra_body={"thinking": {"type": "disabled"}},
  58. )
  59. json_string = completion.choices[0].message.content
  60. print(json_string)
  61. if 'A' in json_string:
  62. choice=[hit_group[0]]
  63. if 'B' in json_string:
  64. choice=[hit_group[1]]
  65. if 'C' in json_string:
  66. choice=[hit_group[2]]
  67. selected = [x for x in selected if x not in hit]
  68. selected = selected + choice
  69. return selected