11.25 资格符合审查偏离表bug修改
This commit is contained in:
parent
8b24d52208
commit
557e278b2e
@ -38,25 +38,31 @@ def prepare_for_zige_info(zige_review):
|
|||||||
# 检查是否存在"资格性和符合性审查"
|
# 检查是否存在"资格性和符合性审查"
|
||||||
if "资格性和符合性审查" in zige_review:
|
if "资格性和符合性审查" in zige_review:
|
||||||
# 情况3:只有"申请人资格要求"和"资格性和符合性审查"
|
# 情况3:只有"申请人资格要求"和"资格性和符合性审查"
|
||||||
|
if zige_review.get("申请人资格要求", {}) or zige_review.get("资格性和符合性审查", {}):
|
||||||
zigefuhe_info = json.dumps({
|
zigefuhe_info = json.dumps({
|
||||||
"申请人资格要求": zige_review.get("申请人资格要求", "未提供"),
|
"申请人资格要求": zige_review.get("申请人资格要求", {}),
|
||||||
"资格性和符合性审查": zige_review.get("资格性和符合性审查", "未提供")
|
"符合性审查": zige_review.get("资格性和符合性审查", {})
|
||||||
}, ensure_ascii=False, indent=4)
|
}, ensure_ascii=False, indent=4)
|
||||||
else:
|
else:
|
||||||
# 情况1和2:存在分开的资格审查和符合性审查
|
# 情况1和2:存在分开的资格审查和符合性审查
|
||||||
|
if zige_review.get("申请人资格要求", {}) or zige_review.get("资格性审查", {}):
|
||||||
zige_info = json.dumps({
|
zige_info = json.dumps({
|
||||||
"申请人资格要求": zige_review.get("申请人资格要求", "未提供"),
|
"申请人资格要求": zige_review.get("申请人资格要求", {}),
|
||||||
"资格性审查": zige_review.get("资格性审查", "未提供")
|
"资格性审查": zige_review.get("资格性审查", {})
|
||||||
}, ensure_ascii=False, indent=4)
|
}, ensure_ascii=False, indent=4)
|
||||||
|
|
||||||
# 处理符合性审查的两种可能的键名
|
# 检查符合性审查的键值是否为空
|
||||||
fuhe_key = "符合性审查" if "符合性审查" in zige_review else "符合性审查(以下情况不得出现)"
|
fuhe_key = "符合性审查" if "符合性审查" in zige_review else "符合性审查(以下情况不得出现)"
|
||||||
|
if zige_review.get(fuhe_key, {}):
|
||||||
fuhe_info = json.dumps({
|
fuhe_info = json.dumps({
|
||||||
fuhe_key: zige_review.get(fuhe_key, "未提供")
|
"符合性审查": zige_review.get(fuhe_key, {})
|
||||||
}, ensure_ascii=False, indent=4)
|
}, ensure_ascii=False, indent=4)
|
||||||
return zige_info,fuhe_info,zigefuhe_info
|
|
||||||
|
return zige_info, fuhe_info, zigefuhe_info
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
print(f"缺少关键字: {e}")
|
print(f"缺少关键字: {e}")
|
||||||
|
# 异常时直接返回空字符串
|
||||||
|
return "", "", ""
|
||||||
def extract_zige_deviation_table(zige_info, fuhe_info, zigefuhe_info):
|
def extract_zige_deviation_table(zige_info, fuhe_info, zigefuhe_info):
|
||||||
prompt_template1 = """
|
prompt_template1 = """
|
||||||
任务:给出一份文本,根据文本提取资格性检查的具体评审标准。
|
任务:给出一份文本,根据文本提取资格性检查的具体评审标准。
|
||||||
@ -122,22 +128,31 @@ def extract_zige_deviation_table(zige_info, fuhe_info, zigefuhe_info):
|
|||||||
zigefuhe_deviation = clean_json_string(model_res3)
|
zigefuhe_deviation = clean_json_string(model_res3)
|
||||||
result["资格审查"] = zigefuhe_deviation
|
result["资格审查"] = zigefuhe_deviation
|
||||||
else:
|
else:
|
||||||
# 使用原有逻辑处理分开的资格审查和符合性审查
|
zige_deviation = {}
|
||||||
user_query1 = prompt_template1.format(full_text=zige_info)
|
fuhe_deviation = {}
|
||||||
user_query2 = prompt_template2.format(full_text=fuhe_info)
|
# 提交 zige_info 和 fuhe_info 的模型调用
|
||||||
|
|
||||||
# 使用 ThreadPoolExecutor 并行执行两个模型调用
|
|
||||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||||
future1 = executor.submit(get_model_response, user_query1)
|
futures = {}
|
||||||
future2 = executor.submit(get_model_response, user_query2)
|
if zige_info != "":
|
||||||
model_res1 = future1.result()
|
user_query1 = prompt_template1.format(full_text=zige_info)
|
||||||
model_res2 = future2.result()
|
futures["zige"] = executor.submit(get_model_response, user_query1)
|
||||||
|
if fuhe_info != "":
|
||||||
zige_deviation = clean_json_string(model_res1)
|
user_query2 = prompt_template2.format(full_text=fuhe_info)
|
||||||
fuhe_deviation = clean_json_string(model_res2)
|
futures["fuhe"] = executor.submit(get_model_response, user_query2)
|
||||||
|
# 获取结果
|
||||||
|
for key, future in futures.items():
|
||||||
|
try:
|
||||||
|
model_res = future.result()
|
||||||
|
if key == "zige":
|
||||||
|
zige_deviation = clean_json_string(model_res)
|
||||||
|
elif key == "fuhe":
|
||||||
|
fuhe_deviation = clean_json_string(model_res)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error processing {key}: {e}")
|
||||||
|
# 合并结果
|
||||||
result["资格审查"] = {
|
result["资格审查"] = {
|
||||||
**zige_deviation,
|
"资格性检查": zige_deviation.get("资格性检查", zige_deviation),
|
||||||
**fuhe_deviation
|
"符合性检查": fuhe_deviation.get("符合性检查", fuhe_deviation),
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
def extract_business_deviation(procurement):
|
def extract_business_deviation(procurement):
|
||||||
|
@ -1,35 +1,148 @@
|
|||||||
|
import concurrent.futures
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
from flask_app.general.doubao import doubao_model
|
||||||
|
from flask_app.general.json_utils import clean_json_string
|
||||||
|
|
||||||
def prepare_for_zige_info(zige_review):
|
|
||||||
try:
|
def extract_zige_deviation_table(zige_info, fuhe_info, zigefuhe_info):
|
||||||
zige_info = ""
|
prompt_template1 = """
|
||||||
fuhe_info = ""
|
任务:给出一份文本,根据文本提取资格性检查的具体评审标准。
|
||||||
zigefuhe_info = ""
|
输出要求:
|
||||||
# 检查是否存在"资格性和符合性审查"
|
1.以json格式返回结果,不要输出其他内容。
|
||||||
if "资格性和符合性审查" in zige_review:
|
2.键名为"资格性检查",键值为字符串列表,每个字符串为一条评审标准,评审标准不分先后,不要有序号标注。
|
||||||
# 情况3:只有"申请人资格要求"和"资格性和符合性审查"
|
要求与指南:
|
||||||
zigefuhe_info = json.dumps({
|
1. 评审标准是具体的内容,不要返回诸如'本项目的特定资格要求:'这种标题性质且不能体现具体评审标准的内容。
|
||||||
"申请人资格要求": zige_review.get("申请人资格要求", "未提供"),
|
2. 若文本中存在相同或相似的表述,仅需取其中一个作为键值中的一条即可。
|
||||||
"资格性和符合性审查": zige_review.get("资格性和符合性审查", "未提供")
|
|
||||||
}, ensure_ascii=False, indent=4)
|
文本内容:{full_text}
|
||||||
|
"""
|
||||||
|
|
||||||
|
prompt_template2 = """
|
||||||
|
任务:给出一份文本,根据文本提取符合性检查的具体评审标准。
|
||||||
|
输出要求:
|
||||||
|
1.以json格式返回结果,不要输出其他内容。
|
||||||
|
2.键名为"符合性检查",键值为字符串列表,每个字符串为一条评审标准,评审标准不分先后,不要有序号标注。
|
||||||
|
3.仔细检查你所选取的标准,若发现这些标准实际上是在描述不允许出现的符合性审查情况,则将外键替换为'符合性检查(以下情况不得出现)',并将这些标准写入其中。
|
||||||
|
要求与指南:
|
||||||
|
1. 评审标准应该是具体的内容,不要返回诸如'本项目的特定符合性要求:'这种标题性质且不能体现具体评审标准的内容。
|
||||||
|
2. 若文本中存在相同或相似的表述,仅需取其中一个作为键值中的一条即可。
|
||||||
|
输出示例1:
|
||||||
|
{{
|
||||||
|
"符合性检查": [
|
||||||
|
"因素1",
|
||||||
|
"因素2",
|
||||||
|
...
|
||||||
|
]
|
||||||
|
}}
|
||||||
|
输出示例2:
|
||||||
|
{{
|
||||||
|
"符合性检查(以下情况不得出现)": [
|
||||||
|
"因素1",
|
||||||
|
"因素2",
|
||||||
|
...
|
||||||
|
]
|
||||||
|
}}
|
||||||
|
|
||||||
|
文本内容:{full_text}
|
||||||
|
"""
|
||||||
|
prompt_template3 = """
|
||||||
|
任务:给出一份文本,根据文本提取资格性检查和符合性检查的具体评审标准。
|
||||||
|
输出要求:
|
||||||
|
1.以json格式返回结果,不要输出其他内容。
|
||||||
|
2.键名为"资格性和符合性检查",键值为字符串列表,每个字符串为一条评审标准,评审标准不分先后,不要有序号标注。
|
||||||
|
要求与指南:
|
||||||
|
1. 评审标准应该是具体的内容,不要返回诸如'本项目的特定符合性要求:'这种标题性质且不能体现具体评审标准的内容。
|
||||||
|
2. 若文本中存在相同或相似的表述,仅需取其中一个作为键值中的一条即可。
|
||||||
|
|
||||||
|
文本内容:{full_text}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_model_response(query):
|
||||||
|
return doubao_model(query)
|
||||||
|
|
||||||
|
result = {"资格审查": {}}
|
||||||
|
|
||||||
|
if zigefuhe_info:
|
||||||
|
# 如果zigefuhe_info非空,使用prompt_template3
|
||||||
|
user_query3 = prompt_template3.format(full_text=zigefuhe_info)
|
||||||
|
model_res3 = get_model_response(user_query3)
|
||||||
|
zigefuhe_deviation = clean_json_string(model_res3)
|
||||||
|
result["资格审查"] = zigefuhe_deviation
|
||||||
else:
|
else:
|
||||||
# 情况1和2:存在分开的资格审查和符合性审查
|
zige_deviation = {}
|
||||||
zige_info = json.dumps({
|
fuhe_deviation = {}
|
||||||
"申请人资格要求": zige_review.get("申请人资格要求", "未提供"),
|
# 提交 zige_info 和 fuhe_info 的模型调用
|
||||||
"资格性审查": zige_review.get("资格性审查", "未提供")
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||||
}, ensure_ascii=False, indent=4)
|
futures = {}
|
||||||
|
if zige_info != "":
|
||||||
# 处理符合性审查的两种可能的键名
|
user_query1 = prompt_template1.format(full_text=zige_info)
|
||||||
fuhe_key = "符合性审查" if "符合性审查" in zige_review else "符合性审查(以下情况不得出现)"
|
futures["zige"] = executor.submit(get_model_response, user_query1)
|
||||||
fuhe_info = json.dumps({
|
if fuhe_info != "":
|
||||||
fuhe_key: zige_review.get(fuhe_key, "未提供")
|
user_query2 = prompt_template2.format(full_text=fuhe_info)
|
||||||
}, ensure_ascii=False, indent=4)
|
futures["fuhe"] = executor.submit(get_model_response, user_query2)
|
||||||
return zige_info,fuhe_info,zigefuhe_info
|
# 获取结果
|
||||||
except KeyError as e:
|
for key, future in futures.items():
|
||||||
print(f"缺少关键字: {e}")
|
try:
|
||||||
|
model_res = future.result()
|
||||||
|
if key == "zige":
|
||||||
|
zige_deviation = clean_json_string(model_res)
|
||||||
|
elif key == "fuhe":
|
||||||
|
fuhe_deviation = clean_json_string(model_res)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error processing {key}: {e}")
|
||||||
|
# 合并结果
|
||||||
|
result["资格审查"] = {
|
||||||
|
"资格性检查": zige_deviation.get("资格性检查", zige_deviation),
|
||||||
|
"符合性检查": fuhe_deviation.get("符合性检查", fuhe_deviation),
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
a="""
|
||||||
|
"申请人资格要求": [
|
||||||
|
"1.满足《中华人民共和国政府采购法》第二十二条规定;即:1)具有独立承担民事责任的能力; 2)具有良好的商业信誉和健全的财务会计制度; 3)具有履行合同所必须的设备和专业技术能力; 4)有依法交纳税收和社会保障资金的良好记录; 5)参加政府采购活动前三年内,在经营活动中没有重大违法记录; 6)法律、行政法规规定的其他条件。",
|
||||||
|
"2.单位负责人为同一人或者存在直接控股、管理关系的不同投标人,不得参加本项目同一合同 项下的政府采购活动。",
|
||||||
|
"3.未被列入“信用中国”网站(www.creditchina.gov.cn)失信被执行人、重大税收违法案件当事人名 单、政府采购严重违法失信名单和“中国政府采购”网站(www.ccgp.gov.cn)政府采购严重违法失信 行为记录名单(以磋商公告发布之日起查询结果为准)。",
|
||||||
|
"4.落实政府采购政策需满足的资格要求: 本项目(是/否)专门面向中小微型企业:否 。需落实的节能环保、中小微型企业扶持(含支 持监狱企业发展、促进残疾人就业)等相关政府采购政策详见磋商文件。"
|
||||||
|
],
|
||||||
|
"资格性审查": {
|
||||||
|
"资格要求": "符合本采购文件第一章第二款要求,并提供合格有效的证明材料。",
|
||||||
|
"其他要求": [
|
||||||
|
"符合竞争性磋商文件规定的其他要求",
|
||||||
|
"是否符合竞争性磋商采购文件中的其他规定"
|
||||||
|
],
|
||||||
|
"磋商报价": [
|
||||||
|
"每一种采购内容是否只有一个报价",
|
||||||
|
"报价金额是否超过采购预算"
|
||||||
|
],
|
||||||
|
"磋商书签字盖章": "是否有法定代表人或其委托代理人签字并加盖单位公章",
|
||||||
|
"磋商结果有效期": "投标有效期满足招标文件要求。",
|
||||||
|
"信誉情况": "无不良经济纠纷记录和违法行为的;",
|
||||||
|
"采购需求响应": [
|
||||||
|
"是否实质性响应采购文件采购技术要求的",
|
||||||
|
"是否有提出采购人不能接受的合同条件的"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
b="""
|
||||||
|
"符合性审查": {
|
||||||
|
"磋商报价": [
|
||||||
|
"每一种采购内容是否只有一个报价",
|
||||||
|
"报价金额是否超过采购预算"
|
||||||
|
],
|
||||||
|
"磋商书签字盖章": "是否有法定代表人或其委托代理人签字并加盖单位公章",
|
||||||
|
"磋商结果有效期": "投标有效期满足招标文件要求。",
|
||||||
|
"信誉情况": "无不良经济纠纷记录和违法行为的;",
|
||||||
|
"采购需求响应": [
|
||||||
|
"是否实质性响应采购文件采购技术要求的",
|
||||||
|
"是否有提出采购人不能接受的合同条件的"
|
||||||
|
],
|
||||||
|
"其他要求": "是否符合竞争性磋商采购文件中的其他规定"
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
c=""
|
||||||
|
res=extract_zige_deviation_table(a,b,c)
|
||||||
|
print(json.dumps(res,ensure_ascii=False,indent=4))
|
||||||
data={
|
data={
|
||||||
"资格审查": {
|
|
||||||
"申请人资格要求": [
|
"申请人资格要求": [
|
||||||
"1.满足《中华人民共和国政府采购法》第二十二条规定;即:1)具有独立承担民事责任的能力; 2)具有良好的商业信誉和健全的财务会计制度; 3)具有履行合同所必须的设备和专业技术能力; 4)有依法交纳税收和社会保障资金的良好记录; 5)参加政府采购活动前三年内,在经营活动中没有重大违法记录; 6)法律、行政法规规定的其他条件。",
|
"1.满足《中华人民共和国政府采购法》第二十二条规定;即:1)具有独立承担民事责任的能力; 2)具有良好的商业信誉和健全的财务会计制度; 3)具有履行合同所必须的设备和专业技术能力; 4)有依法交纳税收和社会保障资金的良好记录; 5)参加政府采购活动前三年内,在经营活动中没有重大违法记录; 6)法律、行政法规规定的其他条件。",
|
||||||
"2.单位负责人为同一人或者存在直接控股、管理关系的不同投标人,不得参加本项目同一合同 项下的政府采购活动。",
|
"2.单位负责人为同一人或者存在直接控股、管理关系的不同投标人,不得参加本项目同一合同 项下的政府采购活动。",
|
||||||
@ -68,9 +181,5 @@ data={
|
|||||||
],
|
],
|
||||||
"其他要求": "是否符合竞争性磋商采购文件中的其他规定"
|
"其他要求": "是否符合竞争性磋商采购文件中的其他规定"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
zige_info,fuhe_info,zigefuhe_info=prepare_for_zige_info(data)
|
|
||||||
print(zigefuhe_info)
|
|
||||||
print(zige_info)
|
|
||||||
print(fuhe_info)
|
|
Loading…
x
Reference in New Issue
Block a user