176 lines
16 KiB
Python
Raw Normal View History

2024-12-03 11:50:15 +08:00
import json
2024-12-03 09:40:26 +08:00
2024-12-03 11:50:15 +08:00
from flask_app.general.doubao import doubao_model
from flask_app.general.json_utils import clean_json_string
data={
"服务要求": [
"投标人和制造商在质量保证期内应当为采购人提供以下技术支持和服务:",
"1 电话咨询中标人和制造商应当为采购人提供技术援助电话,解答采购人在使用中遇到的问题,及时为采购人提出解决问题的建议。",
"2 现场响应采购人遇到使用及技术问题,电话咨询不能解决的, 中标人和制造商应在 2 小内到达现场(远郊区 4 小时内到达现场)进行处理,确保产品正常工作;无法在 8 小时内解决的,应在 24 小时内提供备用产品, 使采购人能够正常使用。",
"3 技术升级在质保期内,如果中标人和制造商的产品技术升级,供应商应及时通知采购人,如 采购人有相应要求, 中标人和制造商应对采购人购买的产品进行升级服务。",
"4在质保期内 中标人每年至少主动为使用单位提供一次售后服务, 做好售后服务记录(使用单位签字盖章 作为退还质保金的依据。",
"▲(三) 备品备件及易损件",
"中标人和制造商售后服务中,维修使用的备品备件及易损件应为原厂配件,未经采购人同意不得使用非原厂配件,常用的、容易损坏的备品备件及易损件的价格清单须在投标文件中列出。",
"▲供应商对其提供产品的使用和操作应尽培训义务。供应商应提供对采购人的基本免费培训, 使采购人使用人员能够正常操作。"
],
"商务要求": [
"★交货期要求/工期要求签到合同后 15 日历天/60 日历天",
"★质保要求三年",
"1. 交货期 、交货地点及验收方式",
"(一) 交货期(或为: 实施时间)",
"1 、 中标人应在采购合同签订后 15 个日历日内完成交货;",
"2 、 中标人应在采购合同签订后 60个日历日内完成安装调试并可投入使用。",
"(二) 交货地点(或为: 实施地点)",
"1 、交货地点: 广水市市内各中小学。",
"2 、交货要求:",
"1 中标人提供的全部货物必须完全符合招标文件要求的品种和数量; 规格型号和技术参数必须完全满足招标文件和中标人在投标中承诺的正偏离的要求;货物的品牌 、生产厂家必须符合中标人在投标中承诺的品牌和生产厂家。",
"2 中标人提供的货物未达到招标投标文件规定要求, 且对采购人造成损失的, 由中标人承担一切责任, 并赔偿所造成的损失。",
"3 采购人需要制造商对中标人交付的产品(包括质量 、技术参数等) 进行确认的, 制造商应予以配合, 并出具书面意见。",
"4 产品包装材料归采购人所有。注:本项目为采购人与使用人(用户)分离的项目 。中标人在送货前须按 采购人的要求 制作送货的相关的表格交采购人审核。",
"(三) 验收方式",
"1 、到货验收:到货验收由各项目单位(用户) 和中标人共同负责实施 。货物到达各项目单位(用户) 后, 由各项目单位(用户)组织人员和中标人代表在场当面开箱检查,核对货物的品牌、规格型号,查阅货物技术资料、装箱单、合格证等资, 检查外观, 核实货物数量 。到货验收合格条件如下:",
"1 中标人在合同约定时间内完成交货;",
"2货物的品牌 、规格型号符合中标人投标的承诺;",
"3货物技术资料 、装箱单 、合格证等资料齐全;",
"4货物全新 、完好无损;",
"5货物数量符合采购人指定各项目单位用户 配备数量。",
"2 、项目初验:各项目单位货物安装调试完成,运行正常,相关人员技术培训完成后 。中标人向项目单 位(用户)提供完整的项目实施资料(供货清单,货物和合格证、使用说明书、保修卡,货物安装布线图,培训资料,售后服务联系表。规范装订成册) 。 由各项目单位(用户)组织初验, 初验后按采购人要求填写初验合格证明。",
"3 、项目终验:项目终验由采购人组织并成立验收小组验收 。项目终验合格条件如下:",
"1设备技术参数与投标文件和采购合同一致 性能指标达到 规定的标准;",
"2 本项目所有项目单位(用户)初验合格(提供项单位初验合格证明 ",
"3 项目实施资料完整(按采购人要求提供并规范装订成册 ",
"4 交货 、安装完成时间在合同规定时间内 完成。",
"2. 报价要求",
"本次报价须为人民币报价,包含:产品价、运输费( 含装卸费)、保险费、安装调试费、 税费、培训费等货到采购人指定地点并完成本项目的所有费用。因投标人自身原因造成漏报、 少报皆由其自行承担责任, 采购人不再补偿。",
"3. 质量保证及售后服务",
"▲ 1 、投标人应明确承诺: 所投设备免费质保期三年, 并提供设备生产厂家针对此项目的授权书及售后服务承诺函。",
"2、投标产品属于国家规定“三包 ”范围的,其产品质量保证期不得低于“三包 ”规定。",
"3 、投标人的质量保证期承诺优于国家“三包 ”规定的, 按招标文件要求, 投标人承诺执行。",
"4 、投标产品由制造商(指产品生产制造商, 或其负责销售 、售后 服务机构, 以下同) 负责标准售后服务的, 应当在投标文件中予以明确说明,并附制造商售后服务承诺。",
"2 、质保期外服务要求",
" 1 质量保证期过后, 供应商和制造商应同样提供免费电话咨询服务, 并应承诺提供 产品上门维护服务。",
"2 质量保证期过后, 采购人需要继续由原供应商和制造商提供售后服务 的, 该供应商和制造商应以优惠价格提供售后服务。",
"4. 付款方式",
"(一)中标人在合同约定时间内完成交货,经采购人审核确认后,中标人出具全额发票, 采购人在 10 个工作日内向市财政局提交申请, 支付合同全额的 40%",
"(二)中标人在合同约定时间内完成所供货物 的安装集成并投入正常使用,经采购人组织验收(终验)合格后, 付到合同总额的 9 5% 余额 5%留作质保金。",
"5. 知识产权",
"采购人在中华人民共和国境内使用投标人提供的货物及服务时免受第三方提出的侵犯 其专利权或其它知识产权的起诉。如果第三方提出侵权指控, 中标人应承担由此而引起的一切法律责任和费用。",
"6. 培训",
"▲供应商对其提供产品的使用和操作应尽培训义务。供应商应提供对采购人的基本免费 培训, 使采购人使用人员能够正常操作。",
"7. 投标人及产品制造商要求",
"▲ (一) 投标人",
"投标人(含集团公司旗下专业子公司) 获得 ISO9001 质量管理体系认证 、ISO 14001 环 境管理体系认证及 OHSAS18001 职业健康安全管理体系认证。投标人(含集团公司)具备工信部核发的《中华人民共和国基础电信业务经营许可证》, 具有合法电信网络运营商资格。以上证明资料提供复印件, 加盖制造商公章。",
"▲( 二) 产品制造商",
"为保证系统的安全性, 所投视频监控产品制造商需获得中国信息安全测评中心颁发的 《国家安全信息漏洞库CNNVD 技术支撑单位等级证书》。提供所投网络产品(交换机) 制造商, 近 2 年第三方权威咨询机构IDC 或 CCW 行 业销量排名数据证明。以上证明资料提供复印件, 加盖制造商公章。",
"8. 其他",
"(一)投标人必须在投标文件中对以上条款和服务承诺明确列出,承诺内容必须达到本 篇及招标文件其他条款的要求。",
"(二) 其他未尽事宜由供需双方在采购合同中 详细约定。"
]
}
def extract_business_deviation(procurement):
new_data = {}
counter = 1
if "服务要求" in procurement:
new_data[f"招标要求{counter}"] = procurement["服务要求"]
counter += 1
# Extract "商务要求"
if "商务要求" in procurement:
new_data[f"招标要求{counter}"] = procurement["商务要求"]
counter += 1
# Extract "其他要求"
if "其他要求" in procurement:
new_data[f"招标要求{counter}"] = procurement["其他要求"]
counter += 1
business_requirements_string = json.dumps(new_data, ensure_ascii=False, indent=4)
# print(business_requirements_string)
prompt_template1 = """请帮我从以下文本中摘取商务要求部分,并将信息重新组织,键名为'商务要求',键值为字符串列表,其中每个字符串为一条商务要求,保留三角▲、五角星★(若有),但是去除开头的序号(若有)。
#角色
你是一个专业的招投标业务专家擅长从招标文件中总结商务要求的部分并逐条列出作为编写商务要求偏离表的前置准备
#要求与指南:
1. 每条内容需要有实际的含义要求不能光有标题性质的表述如'售后服务期限(质保期)及要求'
2. 你的回答内容需从所给文本中整理尽量不改变原文的表达请勿擅自添加三角五角星除非以下要求与指南3.的特殊情况
3. 若输入文本中存在嵌套键值对格式且键值本身语义完整且符合'商务要求'可直接将其添加至'商务要求'的键值中若键值本身语义表达不完整可将键值对用冒号''拼接之后作为一条商务要求
4. 对于以三角或五角星开头的字符串
a. 如果该字符串仅为标题性质的表述且不具备实际商务要求的含义请根据语义关联性将其开头的三角或五角星添加到紧随其后的若干可为一内容之后形成完整的商务要求并确保整个内容连贯
默认在该字符串后面的一个字符串开头添加三角或五角星若有明确的序号或者语义表示了其后若干字符串之间的相关性那么可在这些字符串开头都添加三角或五角星作为若干商务要求
b. 如果该字符串已经包含实际的商务要求那么该内容作为一条完整的商务要求保留开头的三角或五角星
- 示例输入
```
"★ 提供高质量的售后服务,服务期限不少于两年。"
```
- 示例输出
```
"★ 提供高质量的售后服务,服务期限不少于两年。"
```
c. 无论哪种情况都需确保不遗漏任何以三角或五角星开头的重要信息
5. 若无商务要求键值为空列表[]
### 示例输入如下:
{{
"招标要求1": ["▲(1)整个平台运行运维服务,须安排人员驻场对平台进行运行维护,采用 4人轮流值班依照 7×12小时对可视化督察巡控平台进行操作确保平台稳定运行。","▲ (一) 投标人","1.投标人需要获得 ISO9001 质量管理体系认证 、ISO 14001 环境管理体系认证及 OHSAS18001 职业健康安全管理体系认证。","2.投标人具备网络运营商资格。"]
"招标要求2": {{
"合同履行期限": ["★交货期(工期):合同签订之日起 15个日历天内完成并通过项目验收。"],
"交货地点": ["采购人指定地点"],
"报价方式": ["1本项目报价须为固定总价包含但不限于采购、实施、调试、试运行、验收、运维等所有完成本项目相关的一切费用。","2)因投标人自身原因造成漏报、少报皆由其自行承担责任,采购人不再补偿。"],
"其他要求": ["无。"]
}}
}}
### 对应的参考输出如下:
{{
"商务要求":[
"▲整个平台运行运维服务,须安排人员驻场对平台进行运行维护,采用 4人轮流值班依照 7×12小时对可视化督察巡控平台进行操作确保平台稳定运行。",
"▲投标人 获得 ISO9001 质量管理体系认证 、ISO 14001 环境管理体系认证及 OHSAS18001 职业健康安全管理体系认证。",
"▲投标人具备网络运营商资格"
"★交货期(工期):合同签订之日起 15个日历天内完成并通过项目验收。",
"交货地点:采购人指定地点",
"本项目报价须为固定总价,包含但不限于:采购、实施、调试、试运行、验收、运维等所有完成本项目相关的一切费用。",
"因投标人自身原因造成漏报、少报皆由其自行承担责任,采购人不再补偿。"
]
}}
文本内容{full_text}
"""
user_query1 = prompt_template1.format(full_text=business_requirements_string)
print(user_query1)
model_res1 = doubao_model(user_query1)
print(model_res1)
# business_req_deviation = clean_json_string(model_res1)
# prompt_template2 = """以下文本是项目采购需求的商务要求部分,请你帮我从键值列表中各字符串中提取带星★或带三角▲的要求项,你的返回格式同输入文本格式,外键名为'商务要求带星',键值为字符串列表,其中每个字符串为带星★或带三角▲的要求项。
# 要求与指南:
# 1. 每个星★或三角▲要求占据一个字符串。
# 2. 若没有带星★或带三角▲的要求项,键值为空列表,即[]
#
# 特殊情况处理:
# 对于输入类似于'技术要求中带★条款项不满足的视为无效投标'这种描述带星★或带三角▲的响应情况的,它本身不是带星或带三角的要求,因此不需要添加进字符串列表中;仅需把本身是带★或带三角▲的要求添加进来。
#
# ### 示例输入如下:
# {{
# "商务要求": [
# "考虑设备兼容性、项目实施、交付及售后服务",
# "★交货期(工期):合同签订之日起 15个日历天内完成并通过项目验收。",
# "▲本项目报价须为固定总价,包含但不限于:采购、实施、调试、试运行、验收、运维等所有完成本项目相关的一切费用。"
# ]
# }}
# ### 对应的输出如下:
# {{
# "商务要求带星": [
# "★交货期(工期):合同签订之日起 15个日历天内完成并通过项目验收。",
# "▲本项目报价须为固定总价,包含但不限于:采购、实施、调试、试运行、验收、运维等所有完成本项目相关的一切费用。"
# ]
# }}
#
# 文本内容:{full_text}
# """
# user_query2 = prompt_template2.format(full_text=model_res1)
# model_res2 = doubao_model(user_query2)
# business_star_req_deviation = clean_json_string(model_res2)
#
# return business_req_deviation, business_star_req_deviation
extract_business_deviation(data)