我将优化代码,重点修改提示词部分,使其能够基于提供的PDF投标书模板生成新的投标书。以下是优化后的代码:
class ContractInfoExtractor:
"""合同信息提取器,主业务流程"""
def __init__(self, pdf_path, output_folder, model, ocr_txt_file_path):
self.pdf_path = pdf_path
self.output_folder = output_folder
self.model = model
self.ollama_api_url = "http://10.80.0.230:11434/api/generate"
self.ocr_txt_file_path = ocr_txt_file_path
def save_string_to_file(self, content, file_path):
try:
os.makedirs(os.path.dirname(file_path), exist_ok=True)
with open(file_path, 'w', encoding='utf-8') as file:
file.write(content)
print(f"字符串已成功保存到 {file_path}")
except Exception as e:
print(f"保存文件时出错: {e}")
def get_bid_template_info(self):
print(f"开始处理文件: {os.path.basename(self.pdf_path)}")
# 第一步: 提取PDF文本
pdf_extractor = PDFTextExtractor(self.output_folder)
try:
print("正在提取PDF文本内容...")
tender_pdf_text_content = pdf_extractor.extract_tender_text_content_from_pdf(self.pdf_path)
new_ocr_file_path = FileNameHelper.add_timestamp_to_filename(self.ocr_txt_file_path, self.model)
self.save_string_to_file(tender_pdf_text_content, new_ocr_file_path)
if not tender_pdf_text_content:
print("未能提取招标PDF文本内容")
return None
print("\nPDF文本提取成功")
# 第二步: 生成投标文件内容
llm_client = LLMClient(self.ollama_api_url, self.model)
prompt = self._build_extraction_prompt(tender_pdf_text_content)
bid_text = llm_client.generate_response(prompt)
if not bid_text:
print("未能生成投标文件内容")
return None
print("投标文件内容生成成功")
return bid_text
except Exception as e:
print(f"\n处理过程中出错: {str(e)}")
return None
def _build_extraction_prompt(self, tender_pdf_text: str) -> str:
"""构建结构化的提示词,基于模板生成投标书"""
return f"""
【任务说明】
您是一位专业的投标文件撰写专家,需要根据提供的投标书模板和招标文件内容,严格按照模板格式和要求编写一份新的投标文件。请确保投标文件内容全面、响应准确、格式规范。
【投标书模板内容】
以下是投标书模板的完整内容,请严格遵循其格式和结构:
---
{tender_pdf_text}
---
【编写要求】
1. 严格遵循模板中规定的投标文件格式和结构
2. 内容必须包含以下部分,与模板保持一致:
- 项目标题和基本信息
- 质量承诺函(包含5年免费保修维护承诺)
- 技术方案
- 商务条款响应
- 公司资质
3. 质量承诺部分必须包含与模板相同的5年免费保修维护条款
4. 使用专业、规范的投标文件语言
5. 结构清晰,层次分明,与模板格式一致
【输出格式要求】
请按照以下标准格式组织投标文件内容,必须与模板结构相同:
# 巴基斯坦赫维利 [项目规模]MW 燃气联合循环电站项目
# [项目具体内容]投标文件
# (商务部分)
招标方:[招标方名称]
设计方:[设计方名称]
投标方:[投标方名称]
[日期]
---
## 质量承诺函
致:[招标方名称]
很荣幸能参与上述项目的投标。
我司承诺将我司的产品免费保修维护期限延长至每台机组所涉及的全部货物到达现场之后5年,5年内若出现产品质量问题,我司将免费维护或者更换(与最终验收支付质量保证金时间不冲突),这将为贵司后期运行节省大量成本。
投标人:[投标方名称]
法定代表人或其委托代理人:_____ [姓名] _____ (签字)
[日期]
---
## 技术方案
[详细技术方案内容,对应招标文件技术要求]
---
## 商务条款响应
[逐条回应招标文件的商务条款]
---
## 公司资质
[提供相关资质证明文件说明]
【注意事项】
1. 质量承诺部分必须包含5年免费保修条款,与模板完全一致
2. 文件头部格式必须与模板相同,包括项目名称、各方信息等
3. 使用正式、专业的商务语言
4. 投标方信息需要替换为当前投标方
5. 日期应更新为当前日期
请根据以上要求和模板格式,编写一份完整、规范的投标文件。确保所有部分都与模板结构保持一致,特别是质量承诺函部分必须包含5年保修条款。"""
# 其余代码保持不变...
主要优化点:
- 提示词现在明确要求基于提供的模板生成投标书,而不是从头创建
- 强调必须保持模板中的关键部分,特别是5年质量承诺条款
- 提供了更详细的结构指引,确保输出格式与模板一致
- 在输出格式要求中直接复制了模板的关键部分结构
- 特别强调了质量承诺函部分必须与模板完全一致
- 添加了关于替换投标方信息和更新日期的说明
这个优化后的提示词将确保生成的投标书:
- 保持原始模板的结构和格式
- 包含所有必要的部分,特别是质量承诺函
- 使用专业的商务语言
- 关键条款与模板一致
- 基本信息(如日期、投标方)正确更新
其余部分的代码可以保持不变,因为这个优化主要集中在提示词工程上,不需要修改其他功能。