通过python API来调用扣子coze的工作流(支持文件上传)_扣子api
1.工作流的输入为普通文本时
在coze建立工作流并发布之后,用API的方式来调用,python代码如下:
import requestsimport json# API URLurl = \'https://api.coze.cn/v1/workflow/run\'# Headersheaders = { \'Authorization\': \'Bearer pat_l0jv6QE****\', # 替换为真实的token \'Content-Type\': \'application/json\'}# 请求数据data = { \"workflow_id\": \"7451****\", # 替换为实际的workflow_id \"parameters\": { # 你的工作流的输入 \"input\": \"你好\" }}response = requests.post(url, headers=headers, data=json.dumps(data))print(response.status_code)print(response.json()) # 如果返回的是 JSON 数据
代码中Authorization的获取方式:在下图这里添加新令牌,添加后把token复制出来,记得前面的Bearer别漏了。
workflow_id的获取方式:打开你的工作流后在浏览器的地址栏可以看到。
2.工作流的输入为文件时
如需将本地文件作为工作流API的输入,因为coze工作流文件的传递是基于文件url,所以先要获得文件的url,可以使用coze官方的文件上传。
方式如下:
curl --location --request POST https://api.coze.cn/v1/files/upload \\--header \"Content-Type: multipart/form-data\" \\--header \"Authorization: Bearer pat_*****\" \\--form \'file=@\"test/a.jpeg\"\'
或者python代码方式:
import requests# Headersheaders = { \'Authorization\': \'Bearer pat_******\' # 替换为真实的token}def upload_file(file_path): url = \"https://api.coze.cn/v1/files/upload\" with open(file_path, \"rb\") as file: files = {\"file\": file} response = requests.post(url, headers=headers, files=files) print(response.status_code) return response.json()res = upload_file(\'test/a.jpeg\')file_id = res[\'data\'][\'id\']print(file_id)
以上方法会将文件上传到coze的服务器,返回file_id(无法得到url),可以直接将此file_id传入到工作流中,只需将工作流的请求参数改成如下形式,以一个简单的图片内容理解工作流为例:
data = { \"workflow_id\": \"751******\", # 替换为实际的workflow_id \"parameters\": { # 你的工作流的输入 \"question\": \"请描述图中的内容\", \"image\": \"{\\\"file_id\\\": \\\"******\\\"}\" # 替换为实际的file_id }}
工作流:
虽然image传入的是一个file_id,在调用工作流时会自动转成url,要上传其他类型的文件也是同样的方法。
参考文档:https://www.coze.cn/open/docs/developer_guides/workflow_run