OpenAI GPT3 搜索 API 无法在本地运行

Posted

技术标签:

【中文标题】OpenAI GPT3 搜索 API 无法在本地运行【英文标题】:OpenAI GPT3 Search API not working locally 【发布时间】:2022-01-21 06:34:10 【问题描述】:

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

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

即使我实现了与 OpenAI 文档中给出的完全相同的示例,也会发生此错误。 search example is given here的链接。

如果我使用 GPT3 游乐场使用的完成 API,它在本地机器和 colab 笔记本上运行得非常好。 (code link here)

我的代码如下:

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】:

问题出在这一行:

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

因此,我不得不根据您的数据大小引入 4-7 秒的等待时间,time.sleep(5) 在 openai.File.create 调用之后,然后再调用 openai.Engine("davinci").search 调用和解决了这个问题。 :)

【讨论】:

以上是关于OpenAI GPT3 搜索 API 无法在本地运行的主要内容,如果未能解决你的问题,请参考以下文章

ChatGPT没有API?OpenAI官方API带你起飞

Python调用GPT3.5接口的最新方法

基于GPT3.5实现本地知识库解决方案-利用向量数据库和GPT向量接口-实现智能回复并限制ChatGPT回答的范围...

开源大模型(large language model, LLM)介绍

js调用gpt3.5

GPT-4 和ChatGPT API的定价分析