我在自己的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)
你知道为什么会发生这种奇怪的行为吗?我该怎么解决它?谢谢。
1条答案
按热度按时间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)
,这就解决了这个问题。:)