Featured image of post Confused OpenAI SDK Compatibility.md

Confused OpenAI SDK Compatibility.md

令人困惑的 openai sdk 兼容性

需求

为了分析一个 pdf 文件,我尝试使用 openai sdk 来调用 qwen 的接口。因为 qwen 声称了 openai 接口的兼容性,因此我尝试了一下。

方案

我在调用client.files.create接口时,是这样的:

1
2
3
4
5
    # self.client = OpenAI(api_key='...', base_url='qwen...')
    file_object = self.client.files.create(
      file=file_path,
      purpose=self.file_purpose,
    )

起初,我将self.file_purpose="file-extract"

但是调用之后,我得到了一个这样的错误:

1
openai.BadRequestError: Error code: 400 - {'error': {'message': 'file purpose must be batch_output.', 'type': 'invalid_request_error', 'param': None, 'code': None}}

好吧,那我将其设置为batch_output.

1
self.file_purpose="batch_output"

我得到了新的错误:

1
openai.BadRequestError: Error code: 400 - {'error': {'message': "'purpose' must be one of ['file-extract', 'batch']", 'type': 'invalid_request_error', 'param': 'purpose', 'code': None}}

然后我改回了

1
self.file_purpose="file-extract"

然后我又得到了原来的错误:

1
openai.BadRequestError: Error code: 400 - {'error': {'message': 'file purpose must be batch_output.', 'type': 'invalid_request_error', 'param': None, 'code': None}}

暂时没有解决方案。给大家看个乐子。

后续

我将 API 地址切换成了 zhipu。

1
2
3
4
5
6
7
8
9
class Zhipu(Chat):
  def __init__(self):
    super().__init__()
    self.client = OpenAI(
      api_key=os.getenv("ZHIPU_API_KEY"),
      base_url="https://open.bigmodel.cn/api/paas/v4",
    )
    self.support_file_id = True
    self.file_purpose = "file-extract"

一次就跑通了。

后续 2

百联平台,我找到了对应的接口文档

有空再测测。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计