This commit is contained in:
zy123 2024-10-24 14:34:37 +08:00
parent e697c58213
commit 91c7dbcdd1
4 changed files with 105 additions and 23 deletions

View File

@ -0,0 +1,33 @@
1.该文件为投标文件格式要求,请你根据该招标文件回答:法定代表人身份证应该附在哪个地方?你可能需要查找以下章节出现的地方:'法人代表身份证(正、反面复印件)', '法定代表人(负责人)证明';或者可能匹配的关键字:'法定代表', '法人代表',并确定所在章节。
我需要将法定代表人身份证贴在该章节的最后面目前我需要定位到插入的位置请你返回给我插入位置的上下文下文应该是下一章的章节名或开头内容字数限制在30字以内以json格式返回键名分别是'上文','下文',上下文格式内容应完全与原文保持一致,不得擅自删减总结,示例输出如下:
{
"上文":"投标人: (盖单位章)
年 月 日",
"下文":"四、投标保证金
(招标人名称):"
}
2.该文件为投标文件格式要求,请你根据该招标文件回答:法定代表人授权人身份证应该附在哪个地方?你可能需要查找以下章节出现的地方:'法人代表授权人身份证复印件', '法定代表人授权证明';或者可能匹配的关键字:'法定代表人授权', '授权人身份证',并确定所在章节。
我需要将法定代表人授权人身份证贴在该章节的最后面目前我需要定位到插入的位置请你返回给我插入位置的上下文下文应该是下一章的章节名或开头内容字数限制在30字以内以json格式返回键名分别是'上文','下文',上下文格式内容应完全与原文保持一致,不得擅自删减总结,示例输出如下:
{
"上文":"投标人: (盖单位章)
年 月 日",
"下文":"四、投标保证金
(招标人名称):"
}
5.采购人招标人和采购代理机构或招标代理机构和项目的联系方式是请按json格式给我提供信息外层键名分别是'招标人联系方式''招标代理机构联系方式'"项目联系方式",嵌套键名至少包含"名称"和"联系电话",若还有其他字段则添加在后面,若存在未知信息,在对应的键值中填'未知'。示例输出如下:
{
"招标人联系方式":{
"名称":"广水市中医医院",
"联系电话":"13972990000",
"地址":"洪山街道"
},
"招标代理机构联系方式":{
"名称":"湖北众恒永业工程项目管理有限公司广水分公司",
"联系电话":"13972991234"
},
"项目联系方式":{
"名称":"张三",
"联系电话":"未知"
}
}
6.投标文件或响应文件递交截止时间是请按json格式给我提供信息键名是'投标文件递交截止日期',若存在未知信息,在对应的键值中填'未知'。

View File

@ -1,24 +1,64 @@
import json
from flask_app.general.json_utils import clean_json_string
from flask_app.general.多线程提问 import multi_threading,read_questions_from_file
from flask_app.general.通义千问long import upload_file,qianwen_long
file_path="C:\\Users\\Administrator\\Desktop\\招标文件\\招标test文件夹\\zbtest19\\zbtest19_214-320.pdf"
user_query="""该文件为投标文件格式要求,请你根据该招标文件回答:营业执照应该附在哪个地方?你可能需要查找以下章节出现的地方:'具有独立承担民事责任能力的法人','投标人基本信息表','法人或者其他组织的营业执照等证明文件,自然人的身份证明','投标人情况介绍','投标人简介','企业相关证件'
我需要将营业执照贴在该章节的最后面目前我需要定位到插入的位置请你返回给我插入位置的上下文字数限制在30字以内以json格式返回键名分别是'上文','下文'上下文格式内容应完全与原文保持一致不得擅自删减总结示例输出如下
{
"上文":"投标人: (盖单位章)
",
"下文":"四、投标保证金
招标人名称"
}
"""
user_query2="""该文件为投标文件格式要求,请你根据该招标文件回答:法定代表人身份证应该附在哪个地方?你可能需要查找以下章节出现的地方:'法人代表身份证(正、反面复印件)','法定代表人(负责人)证明';或者可能匹配的关键字:'法定代表','法人代表'
我需要将法定代表人身份证贴在该章节的最后面目前我需要定位到插入的位置请你返回给我插入位置的上下文下文应该是下一章的章节名或开头内容字数限制在30字以内以json格式返回键名分别是'上文','下文'上下文格式内容应完全与原文保持一致不得擅自删减总结示例输出如下
{
# 从json文件中读取数据
with open('test.json', 'r', encoding='utf-8') as f:
data_dict = json.load(f)
# 定义目标名称列表
target_names = [
"营业执照",
"开户信息",
"法定代表人身份证",
"法定代表人授权人身份证",
# "人员证书",
# "人员社保资料",
# "劳动合同",
# "企业证书",
# "企业业绩",
# "财务信息(财务审计报告)",
# "财务信息(缴纳税收证明)",
# "财务信息(缴纳社保证明)"
]
# 定义user_query模板
def generate_user_query(target, chapters, keywords):
template = f"""该文件为投标文件格式要求的部分,请你根据该招标文件回答:{target}应该附在该文件哪个地方?你可能需要查找以下章节(若有):{', '.join([f"'{chapter}'" for chapter in chapters])};或者查找以下关键字出现的地方:{', '.join([f"'{kw}'" for kw in keywords])},你需要确定相关信息所在章节。
我需要将{target}贴在该章节的最后面但是在下一章别的内容之前目前我需要定位到插入的位置请你返回给我插入位置的上下文其中下文应该是下一章的章节名或开头内容字数限制在30字以内以json格式返回键名分别是'上文','下文'上下文格式内容应完全与原文保持一致不得擅自删减总结示例输出如下
{{
"上文":"投标人: (盖单位章)
",
"下文":"四、投标保证金
招标人名称"
}
}}
"""
file_id=upload_file(file_path)
res=qianwen_long(file_id,user_query2)
print(res)
return template
# 生成user_query_list
user_query_list = []
for target in target_names:
if target in data_dict:
chapters = data_dict[target]["章节"]
keywords = data_dict[target]["关键字"]
user_query = generate_user_query(target, chapters, keywords)
user_query_list.append({
"target": target,
"query": user_query
})
else:
print(f"警告:'{target}'未在数据字典中找到相关信息。")
# 将生成的查询添加到queries列表
queries = [item['query'] for item in user_query_list]
truncate_file="C:\\Users\\Administrator\\Desktop\\招标文件\\招标test文件夹\\zbtest19\\zbtest19_214-320.pdf"
# 上传文件并获取file_id
file_id = upload_file(truncate_file)
# 使用multi_threading并行处理查询
results = multi_threading(queries, "", file_id, 2)
# 清理返回结果并输出
baseinfo_list = [clean_json_string(res) for _, res in results] if results else []
for i in baseinfo_list:
print(json.dumps(i, ensure_ascii=False, indent=4))

View File

@ -586,6 +586,15 @@ def truncate_pdf_main(input_path, output_folder, selection, output_suffix="defau
r'^第[一二三四五六七八九十百千]+(?:章|部分)\s*[\u4e00-\u9fff]+',re.MULTILINE
)
local_output_suffix = "notice"
elif selection==6: #投标文件格式
begin_page=5
begin_pattern=re.compile(
r'^第[一二三四五六七八九十百千]+(?:章|部分).*?(?:格式).*'
)
end_pattern=re.compile(
r'^第[一二三四五六七八九十百千]+(?:章|部分)\s*[\u4e00-\u9fff]+', re.MULTILINE
)
local_output_suffix = "format"
else:
print("无效的选择:请选择1-5")
return None

View File

@ -90,7 +90,7 @@ def get_technical_requirements(file_id):
if no_keys_added:
final_res = postprocess(cleaned_res)
else:
user_query_template = "这是一份货物标中采购要求部分的内容,请你给出\"{}\"的技术参数(或采购要求)和数量请以json格式返回结果外层键名为\"{}\", 键值对中的键是你对该要求的总结,而值需要完全与原文保持一致,不可擅自总结删减。"
user_query_template = "这是一份货物标中采购要求部分的内容,请你给出\"{}\"的技术参数(或采购要求)请以json格式返回结果外层键名为\"{}\", 键值对中的键是你对该要求的总结,而值需要完全与原文保持一致,不可擅自总结删减。"
queries = []
for key in keys_list:
# 将键中的 '.' 替换为 '下的'