是否曾经想要快速了解一本书的主要内容,而不必逐页阅读?现在,为提供了解决方案。本文将讨论如何使用Python和OpenAI的GPT-3.5在短短10分钟内创建一个书籍摘要生成器。
如何使用ChatGPT API在Python中
抓紧机会!为带来了一个非凡的提议,它将提升技能并拓宽视野。所有数据科学和AI爱好者,不要错过备受期待的DataHack Summit 2023。记下8月2日至5日的日期,并准备在班加罗尔的NIMHANS会议中心大开眼界。这个卓越的活动旨在通过沉浸式的实践课程、行业变革的洞察和无尽的网络机会点燃热情。不要错过这场数据革命——加入,成为这场运动的一部分!
将使用Google Colab来完成这项工作。通常下载的书籍是PDF格式的,因此将安装PyPDF2库。此外,将使用OpenAI的GPT-3.5来完成手头的任务,并使用OpenAI API进行查询。让安装所需的库:
!pip install openai PyPDF2
安装完所需的库后,让导入它们并初始化本地变量。还需要指定PDF文件的位置并添加OpenAI API密钥。
import openai
import PyPDF2
import os
import pandas as pd
import time
filepath= ""
openai.api_key = ""
现在将创建一个查询GPT-3.5 Turbo模型的函数:
def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0, # 这是模型输出随机度的程度
)
return response.choices[0].message["content"]
由于OpenAI对输入提示大小有限制,希望将需要摘要的数据分部分发送。分割文本有多种方法。为了简单起见,将根据页面将整本书分割。更好的策略是按段落分割,但这将增加API调用次数,从而增加总体时间。将每个页面存储在列表中,然后进行摘要。
pdfFileObject = open(filepath, 'rb')
pdfReader = PyPDF2.PdfReader(pdfFileObject)
text=[]
summary=' '
for i in range(0,len(pdfReader.pages)):
pageObj = pdfReader.pages[i].extract_text()
pageObj= pageObj.replace('\t\r','')
pageObj= pageObj.replace('\xa0','')
text.append(pageObj)
现在将开始提示。这是一个实验性的问题,以找出最佳提示。然而,有一些基本的指导方针可以高效地进行提示。在一些即将到来的文章中,将更详细地讨论提示的艺术。现在可以使用这个提示,它对效果很好。也可以尝试调整它:
for i in range(len(text)):
prompt =f"""
Your task is to extract relevant information from a text on the page of a book. This information will be used to create a book summary.
Extract relevant information from the following text, which is delimited with triple backticks.
Be sure to preserve the important details.
Text: ```{text[i]}```
"""
try:
response = get_completion(prompt)
except:
response = get_completion(prompt)
print(response)
summary= summary+' ' +response +'\n\n'
result.append(response)
time.sleep(19) # 可以每分钟免费查询模型3次,所以需要一些延迟
最后,将保存获得的摘要到一个文本文件中:
with open('summary.txt', 'w') as out:
out.write(summary)
使用Python和OpenAI的GPT 3.5创建书籍摘要生成器可以保留所有有用信息,并将文档压缩约75%。为了使其更短,可以在提示中添加那个条款。例如,可以要求它在30或40个单词内提取有帮助的信息。总的来说,这仍然是一个用于个人使用的很好的文本摘要方式。