| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- import json
- from config import simplemodel
- from template import xuanxiang
- with open("cuoshi_corpus.txt", "r") as f:
- content = f.read()
- pairs = content.split("\n")
- with open("name_label", "r") as f:
- content = f.read()
- label = json.loads(content)
- pair_tuple = []
- i = 0
- while i < len(pairs):
- pair_tuple.append([pairs[i], pairs[i+1]])
- i = i + 2
- chaogao = [label['19-' + str(i+1)][30:] for i in range(18)]
- jiangshui = [
- [label['22-11'], label['22-12'], label['22-13']],
- [label['22-14'], label['22-15'], label['22-16']],
- [label['22-17'], label['22-19'], label['22-20']]
- ]
- def handle_jichu(
- A,
- B, #data
- aiclient, sfclient):
- completion = aiclient.chat.completions.create(
- model="glm-4.5-air",
- messages=[
- {"role": "system", "content": "You are a helpful assistant."},
- {"role": "user", "content": "问题描述: 设备基础一般可分成块体设备基础(记作A)和框架设备基础(记作B)。给定一段工作内容: " + B['label'] + " " + B['mc'] + " " + B['tz'] + "," + "请判断描述的设备基础属于A还是B,并返回结果。如果无法确定,则返回A。"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- answer = 'A'
- if len(json_string) < 5:
- if 'B' in json_string :
- answer = 'B'
- 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的英文字母作为答案,请返回这个英文字母结果,不要输出分析过程"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- answer='A'
- if 'B' in json_string :
- answer = 'B'
- if answer == 'A':
- return [label['21-14']]
- else:
- return [label['21-18']]
- def handle_water(
- A,
- B, #data
- aiclient, sfclient):
- hit = False
- hit_group = []
- for entry in A:
- if hit:
- break
- for group in jiangshui:
- if entry in group:
- hit = True
- hit_group = group
- break
- return hit_group
- def handle_chaogao(
- B, #data
- aiclient, sfclient):
- options=[]
- letters = "ABCDEFGHIJKLMNOPQRST"
- for i in range(18):
- options.append("给定选项" + letters[i]+",内容为"+chaogao[i])
- completion = aiclient.chat.completions.create(
- model="glm-4.5-air",
- messages=[
- {"role": "system", "content": "You are a helpful assistant."},
- {"role": "user", "content": "问题描述: 给定一段工作内容: " + B['label'] + " " + B['mc'] + " " + B['tz'] + "," + ",".join(options) + "。请选出最匹配的选项,并返回结果。如果无法确定,则选择A。请输出英文字母选项作为答案,不要输出选项对应的文字描述"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- answer = 'A'
- if len(json_string) < 8:
- if 'B' in json_string :
- answer = 'B'
- if 'C' in json_string :
- answer = 'C'
- if 'D' in json_string :
- answer = 'D'
- if 'E' in json_string :
- answer = 'E'
- if 'F' in json_string :
- answer = 'F'
- if 'G' in json_string :
- answer = 'G'
- if 'H' in json_string :
- answer = 'H'
- if 'I' in json_string :
- answer = 'I'
- if 'J' in json_string :
- answer = 'J'
- if 'K' in json_string :
- answer = 'K'
- if 'L' in json_string :
- answer = 'L'
- if 'M' in json_string :
- answer = 'M'
- if 'N' in json_string :
- answer = 'N'
- if 'O' in json_string :
- answer = 'O'
- if 'P' in json_string :
- answer = 'P'
- if 'Q' in json_string :
- answer = 'Q'
- if 'R' in json_string :
- answer = 'R'
- 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的英文字母作为答案,请返回这个英文字母结果,不要输出分析过程"},
- ],
- extra_body={"thinking": {"type": "disabled"}},
- )
- json_string = completion.choices[0].message.content
- print(json_string)
- answer='A'
- if 'B' in json_string :
- answer = 'B'
- if 'C' in json_string :
- answer = 'C'
- if 'D' in json_string :
- answer = 'D'
- if 'E' in json_string :
- answer = 'E'
- if 'F' in json_string :
- answer = 'F'
- if 'G' in json_string :
- answer = 'G'
- if 'H' in json_string :
- answer = 'H'
- if 'I' in json_string :
- answer = 'I'
- if 'J' in json_string :
- answer = 'J'
- if 'K' in json_string :
- answer = 'K'
- if 'L' in json_string :
- answer = 'L'
- if 'M' in json_string :
- answer = 'M'
- if 'N' in json_string :
- answer = 'N'
- if 'O' in json_string :
- answer = 'O'
- if 'P' in json_string :
- answer = 'P'
- if 'Q' in json_string :
- answer = 'Q'
- if 'R' in json_string :
- answer = 'R'
- if answer == 'A':
- return [label['19-1']]
- if answer == 'B':
- return [label['19-2']]
- if answer == 'C':
- return [label['19-3']]
- if answer == 'D':
- return [label['19-4']]
- if answer == 'E':
- return [label['19-5']]
- if answer == 'F':
- return [label['19-6']]
- if answer == 'G':
- return [label['19-7']]
- if answer == 'H':
- return [label['19-8']]
- if answer == 'I':
- return [label['19-9']]
- if answer == 'J':
- return [label['19-10']]
- if answer == 'K':
- return [label['19-11']]
- if answer == 'L':
- return [label['19-12']]
- if answer == 'M':
- return [label['19-13']]
- if answer == 'N':
- return [label['19-14']]
- if answer == 'O':
- return [label['19-15']]
- if answer == 'P':
- return [label['19-16']]
- if answer == 'Q':
- return [label['19-17']]
- if answer == 'R':
- return [label['19-18']]
- return [label['19-1']]
- 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['label'] + " " + 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)
- if len(json_string) < 8:
- if 'A' in json_string and len(A) > 0:
- answer.append(A[0])
- if 'B' in json_string and len(A) > 1:
- answer.append(A[1])
- if 'C' in json_string and len(A) > 2:
- answer.append(A[2])
- if 'D' in json_string and len(A) > 3:
- answer.append(A[3])
- if 'E' in json_string and len(A) > 4:
- answer.append(A[4])
- if 'F' in json_string and len(A) > 5:
- answer.append(A[5])
- if 'G' in json_string and len(A) > 6:
- answer.append(A[6])
- return answer
- 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 and len(A) > 0:
- answer.append(A[0])
- if 'B' in json_string and len(A) > 1:
- answer.append(A[1])
- if 'C' in json_string and len(A) > 2:
- answer.append(A[2])
- if 'D' in json_string and len(A) > 3:
- answer.append(A[3])
- if 'E' in json_string and len(A) > 4:
- answer.append(A[4])
- if 'F' in json_string and len(A) > 5:
- answer.append(A[5])
- if 'G' in json_string and len(A) > 6:
- answer.append(A[6])
- if 'H' in json_string and len(A) > 7:
- answer.append(A[7])
- return answer
- def postprocess0117(selected, data, aiclient, sfclient):
- water = 0
- non_water = 0
- for entry in selected:
- if '施工排水' in entry:
- water = water + 1
- else:
- non_water = non_water + 1
- if water > non_water:
- return handle_water(selected, data, aiclient, sfclient)
- jichu = 0
- non_jichu = 0
- for entry in selected:
- if '设备基础' in entry:
- jichu = jichu + 1
- else:
- non_jichu = non_jichu + 1
- if jichu > non_jichu:
- return handle_jichu(selected, data, aiclient, sfclient)
- if '超高增加' in data['mc'] or '超高增加' in data['tz'] or '超高施工增加' in data['mc'] or '超高施工增加' in data['tz']:
- return handle_chaogao(data, aiclient, sfclient)
- correct=[]
- for entry in selected:
- correct.append(entry)
- for item in pair_tuple:
- if entry in item:
- correct = correct + item
- correct = list(set(correct))
- return aifilter(correct, data, aiclient, sfclient)
|