我构建了一个自动生成提案的LLM,并拿到GitHub上开源了它 原创
现有的大模型无法解决我的问题,于是我自己构建了一个开源工具,用于高效地自动生成提案。
最近,我没有像以前那样频繁地更新开源文章,倒不是由于我停止写文章,而是由于开源商业化方面的进展很大,没完没了地起草提案这项任务消耗了我的太多时间。
作为一家本土的开源商业公司,WhaleOps雇佣的大多是工程师。要求这些开源贡献者编写提案浪费了他们的开发时间,他们的提案并不总是符合质量标准。与大公司的管理不同,身为初创公司的首席执行官意味着担任公司需要的任何角色。每次战略会议结束后,我都是第一个卷起袖子、处理最紧急的任务。因此,我没有时间写文章,因为有限的时间主要用于创建遵循正式模板风格的提案。尤其是最近,由于忙着竞标,我发现自己都忙晕了。
作为一名技术人员,我总是寻找工具来解决问题。我自然想到了大模型,但它们不能完全理解我们产品的细微差别,而且经常生成不可靠的输出。此外,交付工作的是你,而不是模型。
于是,我决定使用Python和兼容的大模型(与ChatGPT兼容),开发一个基于大模型的提案生成工具。这个工具可以自动从你的产品文档生成提案,将产品手册分解为特征点。基于人为创建的这些特征点到需求的映射,它生成提案的Word版本和Excel偏差表。模型可以根据需要来精简或扩展内容,或者只是复制相关功能。
开源提案工具的功能特性
这个工具的功能很简单,最具挑战性的部分是Word格式(Word中的格式始终很痛苦)。我尝试了几种方法来确保它遵循Word模板中正确的标题1、标题2、标题3、正文、表格和图片格式。为了恪守开源精神,我已将这个工具上传到了我的个人GitHub上,采用Apache许可证,所以如果你需要它,可以随意使用。该工具的功能如下:
- 将你的产品手册分解为一组可重用的详细文档,减少在起草提案时重复引用源文档的需要。你还可以定制特定的功能(默认文件名为“Template.docx”)。
- 基于某个人填写的需求表,它自动生成点对点响应格式的提案,包括所有标题和内容,并使用正确的标题1、标题2和标题3格式,并自动组织正文文本、图片和要点(默认需求表是“requirements_table.xlsx”,生成的内容在“proposal_content.docx”中)。
- 对于相应功能部分中的任何产品需求,它会自动将产品手册内容复制到点对点响应部分,保留图片、表格和要点。你还可以重写产品描述以适应不同的提案需求。如果没有匹配的功能,模型会自动生成相关内容(根据需要进行检查和修改)。
- 通过在“requirements_table.xlsx”中自动填写响应,完成技术需求偏差表,响应格式为“答案:完全支持,{基于项目需求的模型生成文本}”,并包含与提案对应的节号。
使用该工具,你可以随意快速修改和生成提案。可以在这里得到它:https://github.com/William-GuoWei/ProposalLLM。
提案生成流程
首先运行Extract_Word.py,将产品特征点生成为Word文档,然后运行Generate.py。如果缺少某个特征点,可以在Excel文件中输入“X”,模型会生成符合需求的内容。然而,我强烈建议手工检查。生成后,你会看到使用由内容表、正文、图片、表格和要点格式化的提案,所有这些都是自动组织的。
整个提案是根据客户的要求以顺序格式构建的,包括小标题、内容、图片和点对点响应。这承担了所有的重复性工作。
自动生成的偏差表包括所有内容,无论内容是否由模型生成以及相应的节号。你只需要根据最终需求用“&”符号来完成偏差表,模型已为你写好了。
对我来说,这个工具将过去8小时的工作减少到30分钟左右,甚至我们的业务团队也可以使用模板生成业务提案部分。总而言之,这将我们为期一周的提案时间缩短至1-2天,所需的人力减少了80%。
如何使用它?
首先,从GitHub下载所有代码到一个目录中:Proposal Large Model(中文版),即https://github.com/William-GuoWei/ProposalLLM。
安装Python环境和软件包:pip install openpyxl, docx, openai, requests, docx, Python -docx。
申请ChatGPT或百度千帆大模型密钥(我使用了ERNIE-Speed-8K,免费),记录token,放入到相关代码段中。
将你的产品手册复制到Template.docx。确保使用所提供的正文、标题1、标题2和标题3样式,其他格式可能会导致问题。
运行Extract_Word.py,从产品手册生成特征点文档(支持多达3个标题级别)。如果列表格式出现异常,别担心,最终格式会正确对齐。
填写B栏和C栏(自动生成二级和三级标题)以及G栏(相应的产品手册章节)。如果缺少一章,请输入“X”。注意,如果没有相应的章节或输入“X”,模型会自动生成内容。
查看“proposal_content.docx”文档,并保留想要开始生成提案的那一章节。你可以修改正文和标题1、2和3的样式;只是别重命名样式,否则可能会有错误。
调整Generate.py中的参数:
- API_KEY和SECRET_KEY:百度云大模型密钥。
- MAX_WIDTH_CM:最大图片宽度;大于此值的图片将自动调整大小。
- 用于生成内容的提示已针对大数据场景进行了定制,但你可以随意修改它们。
- MoreSection=1将读取列C以生成详细的三级标题(默认为开启)。
- ReGenerateText=0将自动为不同的提案需求重新生成文本内容(默认为关闭)。
- DDDAnswer=1在每个特征点的顶部生成点对点响应内容(默认为开启)。
- key_flag =1将每个需求的重要性级别添加到提案标题中(默认为开启)。
- Last_heading_1 =2指定“proposal_content.docx”中技术解决方案的起始章节。
运行Generate.py。
总结
使用此工具,你只需要根据提案需求检查产品特征,并且大多数提案内容是自动生成的。业务提案部分也可以以类似的方式生成,因此创建1000页长的提案现在只需要几分钟。
原文标题:I Built an Automatic Proposal Generation LLM and Open-Sourced It on GitHub,作者:William Guo