OpenAI GPT3搜索API无法在本地工作

woobm2wo  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(266)

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

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

即使我实现了OpenAI文档中给出的完全相同的例子,这个错误也会发生。这里给出了搜索例子的链接。
如果我使用GPT3Playground使用的补全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)

你知道为什么会发生这种奇怪的行为吗?我该怎么解决它?谢谢。

t3psigkw

t3psigkw1#

问题出在这一行:
file = openai.File.create(file=open(jsonFileName), purpose="search")
它返回带有文件ID和状态uploaded的调用,这使上载和文件处理看起来好像已经完成,然后我将该fileID传递给搜索API,但实际上它还没有完成处理,因此搜索API抛出错误openai.error.InvalidRequestError: File is still processing. Check back later.
返回的文件对象如下所示(误导):

它在google colab中工作是因为openai.File.create调用和search调用在两个不同的单元格中,这给了它完成处理的时间,因为我一个接一个地执行单元格,如果我在一个单元格中编写所有相同的代码,它会给我同样的错误。
所以,我不得不根据数据的大小引入4-7秒的等待时间,在调用openai.Engine(“davinci”).search调用之前,在openai.File.create调用之后引入time.sleep(5),这就解决了这个问题。:)

相关问题