| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- import json
- from config import simplemodel
- from template import xuanxiang
- def huitianfilter(A, #options
- B, #data
- aiclient, sfclient):
- options=[]
- letters = "ABCDEFGHIJKLMN"
- for i in range(len(A)):
- options.append("给定选项" + letters[i]+",内容为"+A[i])
- completion = aiclient.chat.completions.create(
- model="glm-4.5-flash",
- messages=[
- {"role": "system", "content": "You are a helpful assistant."},
- {"role": "user", "content": " 背景知识:回填方一般不使用单轮车或者双轮车运输"},
- {"role": "user", "content": " 背景知识:室内回填、房心回填一般不使用压路机、挖掘机、推土机、单轮车、双轮车"},
- {"role": "user", "content": " 背景知识:回填方时,挖掘机挖土与自卸汽车运土需要配套使用,也就是说,如果选择两者之一,另一个也不许选择。如果不选择两者之一,则另一个也不能选择"},
- {"role": "user", "content": " 背景知识:回填方时,挖掘机挖土与推土机推土二者著能选择其一,不能同时选择"},
- {"role": "user", "content": "问题描述: 给定一段回填方工作内容: " + B['mc'] + " " + B['tz'] + "," + ",".join(options) + "。请筛选出恰当的选项,并返回结果。例如,如果处理完后剩余A,B,C三个选项,请返回[A,B,C]"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- completion = sfclient.chat.completions.create(
- model=simplemodel(),
- messages=xuanxiang(json_string),
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- answer=[]
- if 'A' in json_string:
- answer.append(A[0])
- if 'B' in json_string:
- answer.append(A[1])
- if 'C' in json_string:
- answer.append(A[2])
- if 'D' in json_string:
- answer.append(A[3])
- if 'E' in json_string:
- answer.append(A[4])
- if 'F' in json_string:
- answer.append(A[5])
- if 'G' in json_string:
- answer.append(A[6])
- if 'H' in json_string:
- answer.append(A[7])
- return answer
- def aifilter(A, #options
- B, #data
- aiclient, sfclient):
- options=[]
- letters = "ABCDEFGHIJKLMN"
- for i in range(len(A)):
- options.append("给定选项" + letters[i]+",内容为"+A[i])
- completion = aiclient.chat.completions.create(
- model="glm-4.5-flash",
- messages=[
- {"role": "system", "content": "You are a helpful assistant."},
- {"role": "user", "content": " 背景知识:如果工作内容中没有明确要求使用人工挖土石方或者人工运土石方,则去掉给定选项中的人工挖土石方、运土石方选项"},
- {"role": "user", "content": "问题描述: 给定一段工作内容: " + B['mc'] + " " + B['tz'] + "," + ",".join(options) + "。请做出处理,并返回结果。例如,如果处理完后剩余A,B,C三个选项,请返回[A,B,C]"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- completion = sfclient.chat.completions.create(
- model=simplemodel(),
- messages=xuanxiang(json_string),
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- answer=[]
- if 'A' in json_string:
- answer.append(A[0])
- if 'B' in json_string:
- answer.append(A[1])
- if 'C' in json_string:
- answer.append(A[2])
- if 'D' in json_string:
- answer.append(A[3])
- if 'E' in json_string:
- answer.append(A[4])
- if 'F' in json_string:
- answer.append(A[5])
- if 'G' in json_string:
- answer.append(A[6])
- if 'H' in json_string:
- answer.append(A[7])
- return answer
- def ai(A, #options
- B, #data
- aiclient, sfclient):
- options=[]
- letters = "ABCDEFGHIJKLMN"
- for i in range(len(A)):
- options.append("给定选项" + letters[i]+",内容为"+A[i])
- completion = aiclient.chat.completions.create(
- model="glm-4.5-flash",
- messages=[
- {"role": "system", "content": "You are a helpful assistant."},
- {"role": "user", "content": " 背景知识:平整场地可以使用人工的方法,也可以使用机械的方法,机械的方法更经济"},
- {"role": "user", "content": "问题描述: " + ",".join(options) + "。请从上述选项中选择一更经济的选项,并返回代号。例如,如果A选项最恰当,请返回A"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- if len(json_string) < 4:
- if 'A' in json_string:
- return A[0]
- if 'B' in json_string:
- return A[1]
- if 'C' in json_string:
- return A[2]
- if 'D' in json_string:
- return A[3]
- if 'E' in json_string:
- return A[4]
- if 'F' in json_string:
- return A[5]
- if 'G' in json_string:
- return A[6]
- if 'H' in json_string:
- return A[7]
- if 'I' in json_string:
- return A[8]
- if 'J' in json_string:
- return A[9]
- 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的表达式作为答案,请将该最终答案输出.例如,文字提到答案为A,请输出A;文字提到答案是B,请输出B"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- answers = json_string.split("\n")
- answers = [x for x in answers if ':' in x]
- print(answers)
- if len(answers) == 0:
- return A[0]
- answer2 = answers[0].split(":")[1].replace(" ", "")
- if 'A' in answer2:
- return A[0]
- if 'B' in answer2:
- return A[1]
- if 'C' in answer2:
- return A[2]
- if 'D' in answer2:
- return A[3]
- if 'E' in answer2:
- return A[4]
- if 'F' in answer2:
- return A[5]
- if 'G' in answer2:
- return A[6]
- if 'H' in answer2:
- return A[7]
- if 'I' in answer2:
- return A[8]
- if 'J' in answer2:
- return A[9]
- def tihuan(selected):
- hit = False
- for entry in selected:
- if '自动平地机' in entry:
- hit = True
- if hit:
- left = [x for x in selected if '自动平地机' not in x]
- left.append('第一章 土、石方工程 1.2 机械土、石方 1.2.9 平整场地、碾压 平整场地(厚300mm以内) 推土机(kW以内) 75')
- return left
- else:
- return selected
- def postprocess0101(selected, data, aiclient, sfclient):
- if data['bianma'].startswith("010101001"):##平整场地
- if len(selected) > 1:
- return tihuan([ai(selected, data, aiclient, sfclient)])
- else:
- return tihuan(selected)
- elif data['bianma'].startswith("010103"):##回填
- return huitianfilter(selected, data, aiclient, sfclient)
- else:
- return aifilter(selected, data, aiclient, sfclient)
|