使用api调用图像理解工作流-j9九游会登录
本案例中搭建一个图像理解工作流,实现通过多模态模型进行图像识别,并通过标准的restful api进行调用。
工作流部署时采用api key认证,api调用也采用该方法。图像理解工作流的搭建、参数配置和文本类工作流存在差异,详见步骤一:搭建图像理解工作流。
使用api调用图像理解工作流时,图片约束如下:
- 上传格式:.png、.jpg、.jpeg、.bmp、.gif,需使用图片的url地址,除支持公网图片地址外,支持使用华为云obs服务的图片地址。图片地址需要公网可访问。
- 上传大小:≤5 mb
- 用户上传总量:200 mb/24h,同一用户24小时内累计不超过200mb
- 用户上传次数:20次/5min,同一用户5分钟内最多上传20次
步骤一:搭建图像理解工作流
- 登录。
- 在左侧导航栏中选择“开发中心 > 智能体管理”,并进入“工作流”页签。
- 单击“创建工作流”,选择“任务型工作流”,填写名称、描述后,单击“立即创建”。 创建完成后,平台会创建一个由“开始节点 - 大模型节点 - 结束节点”构成的工作流。图1 创建任务型工作流
- 单击“开始节点”。添加一个image参数,参数类型选择“array
image”,描述填写“图片”。 图2 配置开始节点
- 单击“大模型节点”,选择一个图像理解模型(如qwen2.5-vl-72b)。模型选择完成后,配置页面会新增一个“视觉理解输入”参数,选择开始节点中新增的image参数。 大模型节点的其他参数保持默认。图3 选择图像理解模型
图4 配置视觉理解输入
- 结束节点保持默认,工作流搭建完成后,单击“试运行”,输入准备好的图片和问题进行测试。 图5 工作流试运行
图6 查看运行结果
步骤二:部署工作流
本示例中的工作流部署时采用api key认证,api调用也采用该方法。
- 工作流试运行无问题后,单击“提交版本”,需要勾选“部署至实例”选项。勾选后单击“确定”。 图7 提交版本
- 入站身份认证选择“api key”,并勾选日志记录、指标、调用链。其余配置可以使用默认值。 图8 选择入站身份认证
- 单击“确定”部署工作流。
步骤三:获取api调用凭证(获取authorization)
- 在左侧导航栏中选择“开发中心 > 智能体管理”选择需要调用的工作流,并复制id。
被调用的工作流需要是“已提交”状态。如果显示“未提交”,请单击工作流的名称,进入编辑页面,进行“提交版本”及部署操作。未部署状态的工作流无法获取调用凭证。
图9 获取id
- 获取id后,在“部署运行 > 智能体运行时”页面搜索id。 图10 搜索id
- 单击id名称,进入基本信息页面,找到“访问与权限控制”对应的urn。单击urn名称。 图11 单击urn名称
- 在页面中获取api key的取值。
获取api key的值后,在api key值前加上“bearer ”即为authorization的值(注意bearer后有一个空格)。
图12 获取api key取值
步骤四:调用图像理解工作流
api接口:
post /runtimes/{runtime_name}/invocations
api接口获取方法:
- 在左侧导航栏中选择“开发中心 > 智能体管理”,在“工作流”页签选择所需的工作流应用。
- 复制调用路径。(注意智能体需要经过发布,显示为“已提交”状态) 图13 获取api接口
图片约束:
- 上传格式:.png、.jpg、.jpeg、.bmp、.gif,需使用图片的url地址,除支持公网图片地址外,支持使用华为云obs服务的图片地址。图片地址需要公网可访问。
- 上传大小:≤5 mb
- 用户上传总量:200 mb/24h,同一用户24小时内累计不超过200mb
- 用户上传次数:20次/5min,同一用户5分钟内最多上传20次
核心请求参数说明:
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| authorization | 是 | string | 参数解释: 鉴权参数。获取方式请参考步骤三:获取api调用凭证(获取authorization)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| x-invoke-mode | 否 | string | 参数解释: 该参数用于标识运行时运行的模式。 约束限制: 不涉及。 取值范围:
默认取值: published。 |
| x-hw-agentarts-session-id | 是 | string | 参数解释: 会话id,每个会话的唯一标识符。用户可将会话id设置为任意字符串,例如“123e4567e89b12d3a456426614174000”,由用户自定义,无需在其他地方获取。 约束限制: 不涉及。 取值范围: 由英文、数字、“-”、“_”组成,不超过64位字符。 默认取值: 不涉及。 |
| x-request-id | 否 | string | 参数解释: 调用链id,每个请求的唯一标识符。用于日志中跟踪整个请求的调用链路。用户可将调用链id设置为任意字符串,例如“123e4567e89b12d3a4564266141740”,无需在其他地方获取。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| content-type | 是 | string | 参数解释: 发送的实体的mime类型。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: application/json。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| inputs | 是 | map | 参数解释: 在调用工作流接口时,inputs对象中的字段(key)并非api预留的固定字段,而是取决于您在工作流“开始节点”中定义的变量名。 图片传参示例: {
"inputs": {
"query": "这个图片里面是什么",
"image": [
"https://support.huaweicloud.com/api-ocr/zh-cn_image_0000001746560801.png"
]
}
} 约束限制: 为确保工作流正常运行,请遵循以下原则判断哪些变量需要传入:
取值范围: 不涉及。 默认取值: 不涉及。 |
python调用示例:
import requests
import json
# 替换为真实的api接口
url = "https://{endpoint}/runtimes/{runtime_name}/invocations"
# 构造请求体:inputs 内部的 key 需对应工作流开始节点的变量定义
payload = json.dumps({
"inputs": {
"query": "这个图片里面是什么",
"image": [
"https://your-image-url.png"
]
}
})
headers = {
'content-type': 'application/json',
'authorization': '您的authorization',
'x-hw-agentarts-session-id': '您的会话id,由用户自定义,由英文、数字、“-”、“_”组成,不超过64位字符。'
}
response = requests.request("post", url, headers=headers, data=payload)
print(response.text) curl调用示例:
针对不同操作系统,命令的转义和换行符有所不同。
- windows
在cmd(命令提示符)中执行如下命令:
curl -x post "https://{endpoint}/runtimes/{runtime_name}/invocations" ^ -h "content-type: application/json" ^ -h "authorization: 您的authorization" ^ -h "x-hw-agentarts-session-id: 您的会话id" ^ -d "{ \"inputs\": { \"query\": \"这个图片里面是什么\", \"image\": [\"https://your-image-url.png\"] } }" - linux/macos
在terminal(终端)中执行如下命令:
curl -x post "https://{endpoint}/runtimes/{runtime_name}/invocations" \ -h "content-type: application/json" \ -h "authorization: 您的authorization" \ -h "x-hw-agentarts-session-id: 您的会话id" \ -d '{ "inputs": { "query": "这个图片里面是什么", "image": [ "https://your-image-url.png" ] } }'
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨
