我在自己的Jsonlines文件上使用GPT 3搜索模型的Python客户端。当我在Google Colab Notebook上运行代码进行测试时,它运行良好并返回搜索结果。但是,当我在本地机器(Mac M1)上作为一个运行在localhost上的Web应用程序使用Flask进行Web服务功能时,它会出现以下错误:
openai.error.InvalidRequestError: File is still processing. Check back later.
即使我按照OpenAI文档中给出的完全相同的示例来实现,也会出现这个错误。搜索示例的链接在这里提供:搜索示例链接。
如果我使用GPT3 playground使用的完成API,它在本地机器和colab notebook上运行得非常好。(代码链接)
我的代码如下所示:
import openaiopenai.api_key = API_KEYfile = openai.File.create(file=open(jsonFileName), purpose="search")response = openai.Engine("davinci").search( search_model = "davinci", query = query, max_rerank = 5, file = file.id )for res in response.data: print(res.text)
有什么想法能解释这种奇怪的行为是如何发生的,以及我该如何解决吗?谢谢。
回答:
问题出在这行代码上:
file = openai.File.create(file=open(jsonFileName), purpose="search")
它返回带有文件ID和上传状态的调用,这使得看起来上传和文件处理已经完成。然后我将该文件ID传递给搜索API,但实际上它尚未完成处理,因此搜索API抛出了错误openai.error.InvalidRequestError: File is still processing. Check back later.
返回的文件对象看起来像这样(误导性):
它在Google Colab中工作是因为openai.File.create调用和搜索调用在两个不同的单元格中,这给了它时间在逐个执行单元格时完成处理。如果我在一个单元格中编写所有相同的代码,它也会在那里出现相同的错误。
因此,我不得不根据数据大小引入4-7秒的等待时间,在openai.File.create调用后使用time.sleep(5)
,然后再调用openai.Engine(“davinci”).search,这解决了问题。:)