question_extractor
1.0.0
可以用一组问题和答案调整大型语言模型。但是,要进一步调整自己的数据模型,您需要大量有关数据的问题和答案。产生这些问题和答案可能是很多手动工作。
该存储库可让您使用非最终调整的语言模型(CHATGPT)从现有的文本数据中自动提取问答对,从而消除所有手动工作。
要运行此代码,您将需要克隆此存储库,然后安装以下Python软件包:
tiktoken ,Openai令牌,openai ,官方OpenAI API客户,langchain ,用于结合型号和实用程序的胶代码。 该脚本旨在将Markdown( .md )文档的文件夹转换为一个.json文件,其中包含用于生产它们的源文档的问题,答案和路径列表。
要运行代码,请在question_extractor.py文件(输入文件夹和输出路径)中设置相关文件路径,并确保您的OpenAI API密钥在环境中。然后用Python运行脚本:
python3 question_extractor.py
完成后,所有问题/答案都将写为输出路径中的.json文件。
所有文件上的代码循环,对于每个文件,它都会使用以下提示提取问题列表,然后是一部分文本:
You are an expert user extracting information to quiz people on documentation. You will be passed a page extracted from the documentation, write a numbered list of questions that can be answered based *solely* on the given text.
然后,它可以循环解决问题,通过传递以下提示来产生答案,然后是一部分文字和一个问题:
You are an expert user answering questions. You will be passed a page extracted from a documentation and a question. Generate a comprehensive and informative answer to the question based *solely* on the given text.
代码的实际逻辑中的大部分逻辑都致力于同时处理文件(以速度),并确保传递给模型的文本块足够小,足以留下足够的令牌来回答。
如果文本太长以至于无法将其发送到模型,则它会沿其最高的Markdown标题级别进行拆分(如果需要,可以递归地重复该过程,直到我们到达单段为止)。
在性能方面,此脚本可以在6分钟内处理完整的NERSC文档1 。以29美元的价格将318个Markdown文件变成8005个问题。
以型号限制的93%运行。 ↩