1

我在我自己的 Jsonlines 文件上使用 Python 客户端进行 GPT 3 搜索模型。当我出于测试目的在 Google Colab Notebook 上运行代码时,它可以正常工作并返回搜索响应。但是,当我在本地机器(Mac M1)上将代码作为 Web 应用程序(在 localhost 上运行)使用烧瓶实现 Web 服务功能时,会出现以下错误:

openai.error.InvalidRequestError: File is still processing.  Check back later.

即使我实现了与 OpenAI 文档中给出的完全相同的示例,也会发生此错误。此处给出了搜索示例的链接。

如果我使用 GPT3 操场使用的完成 API,它在本地机器和 colab 笔记本上运行得非常好。(代码链接在这里

我拥有的代码如下:

import openai

openai.api_key = API_KEY

file = 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)

知道为什么会发生这种奇怪的行为,我该如何解决?谢谢。

4

1 回答 1

0

问题出在这一行:

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 调用和 search 调用位于 2 个不同的单元格中,这使它有时间在我一个接一个地执行单元格时完成处理。如果我在一个单元格中编写所有相同的代码,它会给我同样的错误。

time.sleep(5)因此,在调用 openai.Engine("davinci").search 调用之前,我必须在 openai.File.create 调用之后引入 4-7 秒的等待时间,具体取决于数据的大小,这解决了问题。:)

于 2021-12-20T13:05:32.093 回答