fuzhu_util.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from config import simplemodel
  2. def fuzhu_util(
  3. label,
  4. options,
  5. work,
  6. aiclient,
  7. qwclient,
  8. sfclient
  9. ):
  10. xuanxiang=[]
  11. choice=[]
  12. letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  13. for i in range(len(options)):
  14. xuanxiang.append("给定修正、补充选项:" + options[i] + ', 记作' + letters[i])
  15. completion = aiclient.chat.completions.create(
  16. model="glm-4.5-air",
  17. messages=[
  18. {"role": "system", "content": "You are a helpful assistant."},
  19. {"role": "user", "content": "以下是一段工作内容的描述:" + work + '\n'},
  20. {"role": "user", "content": "该工作内容的描述中包含了一道工序如下:" + label + '\n'},
  21. {"role": "user", "content": "该工序与工作内容可能有稍许偏差,需要修正或补充。施工地区设定在南通市." + '; '.join(xuanxiang) + "\n请从上述选项中选择出符合工作内容描述,有明确依据确实可以修正、补充的选项并返回。例如,选项中如果有除锈等级的修正,则你需要分析工作内容描述中是否明确除锈等级。如果明确除锈等级,你应该选择对应选项。如果没有,则不得选择。再比如,选项中提及原材料每米重量5kg以内为小型构件。那么你要分析工作内容中是否给出原材料每米重量,如果给出,则你可以据此做出选择,如果没有给出,你不得选择该选项。再比如,选项中提及,(如果)设计采用螺栓的,如何如何,那么你要分析工作内容,如果工作内容明确描述设计使用螺栓的,你可以据此做出选择,如果没有,则你不得选择。再比如,选项中提到坡度大于10°的斜板,那么你要分析工作内容,如果工作内容提及斜板并且明确提及坡度,并且该坡度大于10°,则你可以据此做出选择,如果没有,则你不的选择。请给出分析并返回类似[A, B]这样的数组。如果没有任何选项符合,则返回空数组[]"},
  22. ],
  23. extra_body={"thinking": {"type": "disabled"}},
  24. )
  25. json_string = completion.choices[0].message.content
  26. print(json_string)
  27. if len(json_string) < 8:
  28. for i in range(len(options)):
  29. if letters[i] in json_string:
  30. choice.append(letters[i])
  31. else:
  32. completion = sfclient.chat.completions.create(
  33. model=simplemodel(),
  34. messages=[
  35. {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
  36. {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一个 数组作为答案,数组可能是个空数组,也可能包含了类似A、B、C的字母,请将该答案输出。清直接输出答案,不用输出过程"},
  37. ],
  38. extra_body={"thinking": {"type": "disabled"}},
  39. )
  40. json_string = completion.choices[0].message.content
  41. print(json_string)
  42. for i in range(len(options)):
  43. if letters[i] in json_string:
  44. choice.append(letters[i])
  45. return choice