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