Merge branch 'develop' into 12-12-testdoubao

# Conflicts:
#	flask_app/general/file2markdown.py
This commit is contained in:
zy123 2024-12-12 16:07:26 +08:00
commit 9fc1a6e64a
12 changed files with 133 additions and 245 deletions

View File

@ -55,7 +55,7 @@ def convert_pdf_to_markdown(file_path):
'page_details': 0, # 不包含页面细节 'page_details': 0, # 不包含页面细节
'markdown_details': 1, 'markdown_details': 1,
'apply_document_tree': 1, 'apply_document_tree': 1,
'dpi': 216 # 分辨率设置为144 dpi 'dpi': 216 # 分辨率设置默认为144 dpi
}) })
print("request time: ", resp.elapsed.total_seconds()) print("request time: ", resp.elapsed.total_seconds())
data = json.loads(resp.text) data = json.loads(resp.text)

View File

@ -239,20 +239,17 @@ def add_keys_to_json(target_dict, source_dict):
return target_dict return target_dict
def rename_outer_key(original_data,new_key): def add_outer_key(original_data, new_key):
# 定义新的键名 """
# new_key = "重新招标, 不再招标和终止招标" 在传入的字典外部增加一个新的外键原始数据保持不变
"""
# 提取原始数据中的唯一外层值(假设只有一个外层键) # 检查输入是否为有效的字典
if not original_data or not isinstance(original_data, dict): if not original_data or not isinstance(original_data, dict):
print("json_utils: Error: Invalid input or input is not a dictionary.") # 如果输入无效或不是字典,则返回空字典 print("json_utils: Error: Invalid input or input is not a dictionary.") # 输入无效或不是字典
return {} return {}
# 使用 next(iter(...)) 提取第一个键的值 # 在原始数据外层增加一个新键
original_value = next(iter(original_data.values()), {}) new_data = {new_key: original_data}
# 创建一个新的字典,使用新的键名
new_data = {new_key: original_value}
return new_data return new_data
def transform_json_values(data): def transform_json_values(data):

View File

@ -1,169 +0,0 @@
{
"营业执照": {
"章节": [
"具有独立承担民事责任能力的法人",
"投标人基本信息表",
"法人或者其他组织的营业执照等证明文件,自然人的身份证明",
"投标人情况介绍",
"投标人简介",
"企业相关证件"
],
"关键字": [
"营业执照",
"自然人的身份证明"
]
},
"开户信息": {
"章节": [
"投标人基本信息表",
"开户信息、银行开户信息、开户证明、开户银行",
"投标人情况介绍",
"企业相关证件",
"履行合同所必需的设备和专业技术能力的证明材料"
],
"关键字": [
"开户信息",
"银行开户信息",
"开户证明",
"开户银行"
]
},
"法定代表人身份证": {
"章节": [
"法人代表身份证(正、反面复印件)",
"法定代表人(负责人)证明"
],
"关键字": [
"法定代表",
"法人代表",
"法定代表人身份证"
]
},
"法定代表人授权人身份证": {
"章节": [
"法人代表授权人身份证复印件",
"法定代表人授权证明"
],
"关键字": [
"法定代表人授权",
"授权人身份证"
]
},
"人员证书": {
"章节": [
"拟任本项目管理及技术人员情况"
],
"关键字": [
"技术人员情况",
"证书",
"人员资质证书"
]
},
"人员社保资料": {
"章节": [
"拟任本项目管理及技术人员情况",
"项目管理机构主要人员表",
"人员社保资料"
],
"关键字": [
"人员情况",
"社保资料",
"社会保险证明",
"社保证明"
]
},
"劳动合同": {
"章节": [
"拟任本项目管理及技术人员情况",
"履行合同所必需的设备和专业技术能力的证明材料"
],
"关键字": [
"劳动合同",
"聘用合同书"
]
},
"企业证书": {
"章节": [
"企业实力",
"企业资质文件",
"履行合同所必需的设备和专业技术能力的证明材料",
"按照“供应商资格要求”规定提交的相关证明材料",
"投标人认为需要提供的其他证明材料",
"投标人基本情况表",
"供应商认为有必要提供的其他资料及方案"
],
"关键字": [
"企业实力",
"企业资质证书",
"安全生产许可证",
"认证证书"
]
},
"企业业绩": {
"章节": [
"近三年同类项目经验案例",
"类似项目业绩表",
"企业业绩一览表",
"相同或类似项目业绩情况表",
"案例与业绩",
"企业经营业绩"
],
"关键字": [
"企业业绩",
"类似项目",
"案例",
"项目情况",
"施工项目"
]
},
"财务审计报告": {
"章节": [
"提供依法缴纳税收和社会保障资金的相关材料",
"具有依法缴纳税收和社会保障资金的良好记录",
"财务状况报告、依法缴纳税收和社会保障资金的相关材料",
"按照“供应商资格要求”规定提交的相关证明材料",
"近年财务状况",
"费用标准证书",
"投标人资质证明文件",
"资格审查资料"
],
"关键字": [
"财务报告",
"财务状况",
"财务会计报表"
]
},
"缴纳税收证明": {
"章节": [
"提供依法缴纳税收和社会保障资金的相关材料",
"具有依法缴纳税收和社会保障资金的良好记录",
"财务状况报告、依法缴纳税收和社会保障资金的相关材料",
"投标人简介",
"按照“供应商资格要求”规定提交的相关证明材料",
"用于评审的证明材料",
"费用标准证书",
"投标人资质证明文件",
"资格审查资料"
],
"关键字": [
"缴纳税收",
"税收缴纳证明"
]
},
"公司缴纳社保证明": {
"章节": [
"投标人资质证明文件",
"按照“供应商资格要求”规定提交的相关证明材料",
"用于评审的证明材料",
"费用标准证书",
"社会保障资金",
"资格审查资料"
],
"关键字": [
"社会保障资金",
"社保资料",
"社会保险证明",
"社保证明"
]
}
}

View File

@ -354,27 +354,42 @@ def get_requirements_with_gpt(merged_baseinfo_path, selection):
# } # }
# } # }
# """, # """,
1:""" 1:"""请根据提供的招标文件内容,提取其中有关投标文件的要求、内容,并以 JSON 格式返回结果。
该招标文件中对投标文件的要求有哪些请以json格式给我返回结果外层键名为文中提到的有关投标文件的若干要求对于各子要求你可以用嵌套键值对组织回答其中嵌套键名为你对相关子要求的总结或是原文中的标题而最内层的键值应该完全与原文内容保持一致若存在多个并列内容那么键值为一个列表列表中包含若干描述该要求的字符串要求键值与原文内容一致不得总结删减 格式要求
其他要求 - 外层键名应为文中提到的有关投标文件相关要求内容的大项概览性标题
1.若原文中为对应内容有表格表述请将该表格用markdown语法返回每行写在键值中的一个字符串中 - 对于每个大项下的具体要求内容有以下两种组织方式
-不使用嵌套键值对
- 如果要求是单一内容键值应为单独的字符串内容必须与原文保持一致不得总结或删减
- 如果要求包含多个并列内容键值应为一个字符串列表数组其中每个元素都是一条子要求
-使用嵌套键值对
-嵌套键名应为原文中的具体标题或对相关子要求的简明总结
-最内层的键值应与原文内容保持一致不得进行任何总结删减或改写默认键值是单独的字符串如果一个子要求包含多个并列内容键值应为一个字符串列表数组其中每个元素都是子要求内容
表格内容处理
- 如果原文中对应内容以表格形式呈现请使用 Markdown 语法准确重现该表格
- 表格的每一行应作为键值中的一个独立字符串保持表格结构和内容的完整性
禁止内容
- 确保所有输出内容均基于提供的实际招标文件内容不使用任何预设的示例作为回答
- 预设的示例中的外层键名仅供格式参考以文中实际内容为主
示例如下仅供格式参考 示例格式**不要**在回答中包含此内容仅供参考
{ {
"编写要求":"编写要求xxx", "投标的语言":"投标人提交的投标文件以及投标人与集中采购机构或采购人就有关投标的所有来往函电均应使用中文。",
"格式要求":{ "格式要求":{
"投标文件格式要求":"投标文件格式要求", "投标文件格式要求":"投标文件格式要求",
"标记要求":"投标文件标记要求", "标记要求":"投标文件标记要求",
"装订要求":"投标文件装订要求", "装订要求":"投标文件装订要求",
"文件数量":"投标文件文件数量要求" "文件数量":"投标文件文件数量要求"
}, },
"承诺书要求":"承诺书要求xxx", "投标报价":[
"递交要求":{ "投标人所提供的货物(工程或服务)均以人民币计价。",
"递交投标文件的截止日期及递交地点":["递交投标文件的截止日期","递交投标文件的递交地点"], "应包含所有相关费用;"
"投标文件交标方式":"交标方式", ]
"投标文件的修改与撤回":["投标文件的修改相关要求","投标文件的撤回相关要求"] "递交要求":{
} "递交投标文件的截止日期及递交地点":["递交投标文件的截止日期xxx","递交投标文件的递交地点xxx"],
} "投标文件交标方式":"交标方式xxx",
"投标文件的修改与撤回":["投标文件的修改相关要求xxx","投标文件的撤回相关要求xxx"]
}
}
""", """,
# 2: """ # 2: """
# 该招标文件中开标、评标、定标要求(或磋商流程内容)是什么?你需要从'开标'、'开标异议'、'评标'、'定标'四个角度回答,其中'评标'可以从特殊情况的处置、评标办法及流程、评标委员会的组建角度来说明,'定标'可以从定标流程、履约能力的审查角度来说明请以json格式返回给我结果外层键名分别为'开标'、'开标异议'、'评标'、'定标',你可以用嵌套键值对组织回答,嵌套键名为你对相关子要求的总结,而嵌套键值应该完全与原文内容保持一致,不得擅自总结删减,如果原文中未提及相关内容,在键值中填'未知'。输出格式示例如下: # 该招标文件中开标、评标、定标要求(或磋商流程内容)是什么?你需要从'开标'、'开标异议'、'评标'、'定标'四个角度回答,其中'评标'可以从特殊情况的处置、评标办法及流程、评标委员会的组建角度来说明,'定标'可以从定标流程、履约能力的审查角度来说明请以json格式返回给我结果外层键名分别为'开标'、'开标异议'、'评标'、'定标',你可以用嵌套键值对组织回答,嵌套键名为你对相关子要求的总结,而嵌套键值应该完全与原文内容保持一致,不得擅自总结删减,如果原文中未提及相关内容,在键值中填'未知'。输出格式示例如下:
@ -392,28 +407,43 @@ def get_requirements_with_gpt(merged_baseinfo_path, selection):
# } # }
# } # }
# """, # """,
2:""" 2:"""该招标文件中有关开标、评标、定标、中标要求、内容(或磋商流程内容)是什么?请以 JSON 格式返回结果。
该招标文件中开评定标要求(或磋商流程内容)是什么请以json格式给我返回结果外层键名为文中提到的有关开评定标要求(或磋商流程内容)的若干要求对于各子要求你可以用嵌套键值对组织回答其中嵌套键名为你对相关子要求的总结或是原文中的标题而最内层的键值应该完全与原文内容保持一致若存在多个并列内容那么键值为一个列表列表中包含若干描述该要求的字符串要求键值与原文内容一致不得总结删减 格式要求
其他要求 - 外层键名应为文中提到的有关开标评标定标中标要求或磋商流程内容的大项概览性标题
1.若原文中为对应内容有表格表述请将该表格用markdown语法返回每行写在键值中的一个字符串中 - 对于每个大项下的子要求使用嵌套的键值对进行组织
-其中嵌套键名应为原文中的具体标题或对相关子要求的简明总结
-最内层的键值应与原文内容保持一致不得进行任何总结删减或改写默认键值是单独的字符串如果一个子要求包含多个并列内容键值应为一个字符串列表数组其中每个元素都是子要求内容
表格内容处理
- 如果原文中对应内容以表格形式呈现请使用 Markdown 语法准确重现该表格
- 表格的每一行应作为键值中的一个独立字符串保持表格结构和内容的完整性
禁止内容
- 确保所有输出内容均基于提供的实际招标文件内容不使用任何预设的示例作为回答
- 预设的示例中的外层键名仅供格式参考以文中实际内容为主
示例如下仅供格式参考 示例格式**不要**在回答中包含此内容仅供参考
{ {
"开标":"招标文件关于项目开标的要求", "开标": {
"开标异议":"招标文件中关于开标异议的项", "开标时间":"2024.10.30",
"评标":{ "开标地点":"洪山区人民政府",
"特殊情况的处置":"因“电子交易系统”系统故障导致无法投标的,交易中心及时通知招标人,招标人视情况决定是否顺延投标截止时间。因投标人自身原因导致无法完成投标的,由投标人自行承担后果。", "资格审查":[
"评标办法及流程":"评标流程", "公开招标采购项目开标结束后,采购人与集中采购机构依据法律、法规及招标文件的规定",
"评标委员会的组建":"评标由招标人依法组建的评标委员会负责。评标委员会由招标人或其委托的招标代理机构熟悉相关业务的代表,以及有关技术、经济等方面的专家组成。" "资格审查详见第四章“资格审查方法及标准”。"
}, ],
"定标":{ },
"定标流程":"定标流程", "评标": {
"履约能力的审查":"履约能力的审查" "特殊情况的处置": "因“电子交易系统”系统故障导致无法投标的,交易中心及时通知招标人,招标人视情况决定是否顺延投标截止时间。因投标人自身原因导致无法完成投标的,由投标人自行承担后果。",
} "评标办法及流程": "评标流程",
} "评标委员会的组建": "评标由招标人依法组建的评标委员会负责。评标委员会由招标人或其委托的招标代理机构熟悉相关业务的代表,以及有关技术、经济等方面的专家组成。"
},
"定标": {
"定标流程": ["定标流程1","定标流程2"],
"履约能力的审查": "履约能力的审查"
}
}
""", """,
3: """ 3: """
该招标文件中重新招标或重新采购不再招标或不再采购终止招标或终止采购的情况分别是什么请以json格式返回给我结果键名分别为'重新招标''不再招标''终止招标'键值应该完全与原文内容保持一致不得擅自总结删减如果原文中未提及相关内容在键值中填'未知'示例输出如下 该招标文件中重新招标或重新采购不再招标或不再采购终止招标或终止采购的情况分别是什么请以json格式返回给我结果键名分别为'重新招标''不再招标''终止招标'键值应该完全与原文内容保持一致不得擅自总结删减如果原文中未提及相关内容在键值中填'未知'
示例输出如下仅供格式参考
{ {
"重新招标":"有下列情形之一的招标人将重新招标1投标截止时间止投标人少于3个的2经评标委员会评审后否决所有投标的", "重新招标":"有下列情形之一的招标人将重新招标1投标截止时间止投标人少于3个的2经评标委员会评审后否决所有投标的",
"不再招标":"重新招标后投标人仍少于3个或者所有投标被否决的属于必须审批或核准的工程建设项目经原审批或核准部门批准后不再进行招标。", "不再招标":"重新招标后投标人仍少于3个或者所有投标被否决的属于必须审批或核准的工程建设项目经原审批或核准部门批准后不再进行招标。",
@ -429,14 +459,14 @@ def get_requirements_with_gpt(merged_baseinfo_path, selection):
return {"error": f"无效的 selection 值: {selection}. 请选择 1、2 或 3。"} return {"error": f"无效的 selection 值: {selection}. 请选择 1、2 或 3。"}
# 调用大模型并处理响应 # 调用大模型并处理响应
try: try:
res = qianwen_long_stream(file_id, user_query,1) res = qianwen_long_stream(file_id, user_query,2)
cleaned_res = clean_json_string(res) cleaned_res = clean_json_string(res)
return cleaned_res return cleaned_res
except Exception as e: except Exception as e:
return {"error": "调用大模型失败"} return {"error": "调用大模型失败"}
if __name__ == "__main__": if __name__ == "__main__":
merged_baseinfo_path = r"D:\flask_project\flask_app\static\output\output1\648e094b-e677-47ce-9073-09e0c82af210\ztbfile_merged_baseinfo.pdf" merged_baseinfo_path = r"D:\flask_project\flask_app\static\output\output1\ce279982-aeeb-4f08-ab39-df6ee2732eae\ztbfile.pdf"
selection=2 selection=1
res=get_requirements_with_gpt(merged_baseinfo_path,selection) res=get_requirements_with_gpt(merged_baseinfo_path,selection)
print(json.dumps(res,ensure_ascii=False,indent=4)) print(json.dumps(res,ensure_ascii=False,indent=4))

View File

@ -57,6 +57,8 @@ def read_file_ids(output_folder):
return file_ids return file_ids
from concurrent.futures import ThreadPoolExecutor, as_completed
def delete_file_by_ids(file_ids): def delete_file_by_ids(file_ids):
""" """
根据传入的 file_id 列表删除指定的文件 根据传入的 file_id 列表删除指定的文件
@ -79,17 +81,25 @@ def delete_file_by_ids(file_ids):
else: else:
valid_file_ids = file_ids valid_file_ids = file_ids
def delete_file(file_id):
try:
# 假设 openai.File.delete 会返回一个文件对象
file_object = client.files.delete(file_id)
return None # 成功返回 None
except Exception as e:
print(f"Failed to delete file with id {file_id}: {e}")
return file_id # 返回失败的 file_id
try: try:
# 删除指定文件 with ThreadPoolExecutor(max_workers=len(valid_file_ids)) as executor:
for file_id in valid_file_ids: # 提交所有删除任务
try: futures = {executor.submit(delete_file, file_id): file_id for file_id in valid_file_ids}
# 假设 openai.File.delete 会返回一个文件对象
file_object = client.files.delete(file_id) # 收集结果
# print(f"Deleted file with id: {file_id} - {file_object}") for future in as_completed(futures):
except Exception as e: result = future.result()
# 处理删除单个文件时的异常 if result is not None: # 如果返回值不是 None表示删除失败
print(f"Failed to delete file with id {file_id}: {e}") failed_file_ids.append(result)
failed_file_ids.append(file_id)
except Exception as e: except Exception as e:
print(f"An error occurred while processing the file_ids: {e}") print(f"An error occurred while processing the file_ids: {e}")
@ -99,5 +109,8 @@ def delete_file_by_ids(file_ids):
return failed_file_ids return failed_file_ids
if __name__ == '__main__': if __name__ == '__main__':
delete_all_files() # delete_all_files()
file_ids=["file-fe-Lu6GKmTR1NjimC2tOebRAIYT"]
delete_file_by_ids(file_ids)

View File

@ -43,7 +43,7 @@ def upload_file(file_path,output_folder=""):
return file_id return file_id
@sleep_and_retry @sleep_and_retry
@limits(calls=4, period=1) # 每秒最多调用4次 @limits(calls=8, period=1) # 每秒最多调用4次
def rate_limiter(): def rate_limiter():
pass # 这个函数本身不执行任何操作,只用于限流 pass # 这个函数本身不执行任何操作,只用于限流

View File

@ -10,7 +10,7 @@ from flask_app.general.json_utils import transform_json_values
from flask_app.工程标.无效标和废标和禁止投标整合 import combine_find_invalid from flask_app.工程标.无效标和废标和禁止投标整合 import combine_find_invalid
from flask_app.工程标.投标人须知正文提取指定内容工程标 import extract_from_notice from flask_app.工程标.投标人须知正文提取指定内容工程标 import extract_from_notice
import concurrent.futures import concurrent.futures
from flask_app.工程标.基础信息整合快速版 import combine_basic_info from flask_app.工程标.基础信息整合工程标 import combine_basic_info
from flask_app.工程标.资格审查模块 import combine_review_standards from flask_app.工程标.资格审查模块 import combine_review_standards
from flask_app.old_version.商务评分技术评分整合 import combine_evaluation_standards from flask_app.old_version.商务评分技术评分整合 import combine_evaluation_standards
from flask_app.general.format_change import pdf2docx, docx2pdf,doc2docx from flask_app.general.format_change import pdf2docx, docx2pdf,doc2docx

View File

@ -4,6 +4,7 @@ from functools import wraps
from flask import request, jsonify, current_app, g from flask import request, jsonify, current_app, g
from flask_app.general.清除file_id import read_file_ids, delete_file_by_ids
from flask_app.logger_setup import create_logger from flask_app.logger_setup import create_logger
@ -113,3 +114,19 @@ def validate_and_setup_logger(f):
# 验证失败,返回错误响应 # 验证失败,返回错误响应
return validation_result return validation_result
return decorated_function return decorated_function
def perform_cleanup(output_folder, logger):
"""
清理逻辑删除临时文件或其他资源
"""
try:
if output_folder:
logger.info(f"正在清理输出文件夹: {output_folder}")
file_ids = read_file_ids(output_folder)
failed_file_ids = delete_file_by_ids(file_ids)
if failed_file_ids:
logger.error(f"以下文件删除失败: {failed_file_ids}")
else:
logger.info("清理完毕!")
except Exception as e:
logger.error(f"清理过程中发生异常: {str(e)}")

View File

@ -14,7 +14,7 @@ from flask_app.general.json_utils import transform_json_values
from flask_app.general.无效标和废标公共代码 import combine_find_invalid from flask_app.general.无效标和废标公共代码 import combine_find_invalid
from flask_app.工程标.投标人须知正文提取指定内容工程标 import extract_from_notice from flask_app.工程标.投标人须知正文提取指定内容工程标 import extract_from_notice
import concurrent.futures import concurrent.futures
from flask_app.工程标.基础信息整合快速版 import combine_basic_info from flask_app.工程标.基础信息整合工程标 import combine_basic_info
from flask_app.工程标.资格审查模块 import combine_review_standards from flask_app.工程标.资格审查模块 import combine_review_standards
from flask_app.general.商务技术评分提取 import combine_evaluation_standards from flask_app.general.商务技术评分提取 import combine_evaluation_standards
from flask_app.general.format_change import pdf2docx, docx2pdf from flask_app.general.format_change import pdf2docx, docx2pdf

View File

@ -2,7 +2,7 @@ import copy
import json import json
import time import time
import concurrent.futures import concurrent.futures
from flask_app.general.json_utils import clean_json_string, rename_outer_key from flask_app.general.json_utils import clean_json_string, add_outer_key
from flask_app.general.通用功能函数 import judge_consortium_bidding, process_judge_questions from flask_app.general.通用功能函数 import judge_consortium_bidding, process_judge_questions
from flask_app.工程标.投标人须知正文提取指定内容工程标 import extract_from_notice from flask_app.工程标.投标人须知正文提取指定内容工程标 import extract_from_notice
from flask_app.工程标.判断是否分包等 import read_questions_from_judge, merge_json_to_list from flask_app.工程标.判断是否分包等 import read_questions_from_judge, merge_json_to_list
@ -180,7 +180,7 @@ def combine_basic_info(merged_baseinfo_path,merged_baseinfo_path_more, tobidders
rebidding_situation = future3.result() # 获取提取失败的情况 rebidding_situation = future3.result() # 获取提取失败的情况
updated_list = update_baseinfo_lists(baseinfo_list1, baseinfo_list2) updated_list = update_baseinfo_lists(baseinfo_list1, baseinfo_list2)
update_json = rename_outer_key(rebidding_situation, "重新招标、不再招标和终止招标") update_json = add_outer_key(rebidding_situation, "重新招标、不再招标和终止招标")
updated_list.append(update_json) updated_list.append(update_json)
aggregated_baseinfo = aggregate_basic_info_engineering(updated_list) aggregated_baseinfo = aggregate_basic_info_engineering(updated_list)

View File

@ -3,7 +3,7 @@ import json
import threading import threading
import time import time
import concurrent.futures import concurrent.futures
from flask_app.general.json_utils import clean_json_string, rename_outer_key from flask_app.general.json_utils import clean_json_string, add_outer_key
from flask_app.general.通用功能函数 import judge_consortium_bidding, process_judge_questions from flask_app.general.通用功能函数 import judge_consortium_bidding, process_judge_questions
from flask_app.general.多线程提问 import read_questions_from_file, multi_threading from flask_app.general.多线程提问 import read_questions_from_file, multi_threading
from flask_app.general.通义千问long import upload_file from flask_app.general.通义千问long import upload_file
@ -154,7 +154,7 @@ def get_base_info(merged_baseinfo_path,clause_path):
# 等待两个任务完成并获取结果 # 等待两个任务完成并获取结果
future1.result() # process_judge_questions 直接修改 baseinfo_list不需要返回值 future1.result() # process_judge_questions 直接修改 baseinfo_list不需要返回值
rebidding_situation = future2.result() rebidding_situation = future2.result()
update_json = rename_outer_key(rebidding_situation, "重新招标、不再招标和终止招标") update_json = add_outer_key(rebidding_situation, "重新招标、不再招标和终止招标")
baseinfo_list.append(update_json) baseinfo_list.append(update_json)
# # judge_file_path = 'D:\\flask_project\\flask_app\\static\\提示词\\是否相关问题货物标.txt' # # judge_file_path = 'D:\\flask_project\\flask_app\\static\\提示词\\是否相关问题货物标.txt'

View File

@ -88,11 +88,11 @@ def extract_from_notice(merged_baseinfo_path, clause_path, type):
#TODO:可以通过判断格式来看是否需要调用GPT 1.1 2.1.... #TODO:可以通过判断格式来看是否需要调用GPT 1.1 2.1....
if __name__ == "__main__": if __name__ == "__main__":
clause_path = r'C:\Users\Administrator\Desktop\fsdownload\550424e5-c105-4ae4-969e-4a80447b4e3f\clause1.json' clause_path = r'D:\flask_project\flask_app\static\output\output1\ce279982-aeeb-4f08-ab39-df6ee2732eae\clause1.json'
merged_baseinfo_path=r"C:\Users\Administrator\Desktop\fsdownload\550424e5-c105-4ae4-969e-4a80447b4e3f\ztbfile_merged_baseinfo.pdf" merged_baseinfo_path=r"D:\flask_project\flask_app\static\output\output1\ce279982-aeeb-4f08-ab39-df6ee2732eae\ztbfile.pdf"
# file_path = 'D:\\flask_project\\flask_app\\static\\output\\fee18877-0c60-4c28-911f-9a5f7d1325a7\\clause1.json' # file_path = 'D:\\flask_project\\flask_app\\static\\output\\fee18877-0c60-4c28-911f-9a5f7d1325a7\\clause1.json'
try: try:
res = extract_from_notice(merged_baseinfo_path,clause_path, 2) # 可以改变此处的 type 参数测试不同的场景 res = extract_from_notice(merged_baseinfo_path,clause_path, 3) # 可以改变此处的 type 参数测试不同的场景
res2=json.dumps(res,ensure_ascii=False,indent=4) res2=json.dumps(res,ensure_ascii=False,indent=4)
print(res2) print(res2)
except ValueError as e: except ValueError as e: