通过python API来调用扣子coze的工作流(支持文件上传)
·
1.工作流的输入为普通文本时
在coze建立工作流并发布之后,用API的方式来调用,python代码如下:
import requests
import json
# API URL
url = 'https://api.coze.cn/v1/workflow/run'
# Headers
headers = {
'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
# Headers
headers = {
'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
更多推荐
所有评论(0)