需求
为了分析一个 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
百联平台,我找到了对应的接口文档。
有空再测测。