使用api调用文档解析工作流-j9九游会登录
在agentarts平台上开发完成工作流时,部分业务场景需要工作流具备文档理解能力,例如:合同审核场景中需读取用户上传的合同文件并提取关键条款。
文档理解能力依赖工作流中的插件节点、mcp节点或代码节点等方式实现。工作流支持在开始节点定义file或array
工作流部署时采用api key认证,api调用也采用该方法。工作流的搭建、参数配置详见步骤一:搭建文档解析工作流。
- 工作流本身,支持doc、docx、txt、pdf、csv、xlsx、xls、pptx、ppt。单文件大小限制128mb。
- 用户上传总量:200 mb/24h,同一用户24小时内累计不超过200mb。
- 用户上传次数:20次/5min,同一用户5分钟内最多上传20次。
- 案例中使用的“文件解析”插件,可以解析txt、doc、docx、csv和xlsx类型的文件。文档解析的能力与用户选择的插件或mcp相关。案例的“文件解析”插件一次解析一个,用户上传多个文档时,需要将“文件解析”插件放在工作流循环节点中。
- 待识别的文档请提前上传至obs服务中,生成的文档链接需要公网可访问。有关obs(对象存储服务)介绍请参考obs快速入门。
步骤一:搭建文档解析工作流
本案例中使用“文件解析”插件构造一个简单的工作流,该插件一次只能解析一个文档。工作流支持在开始节点定义file或array
- 搭建单文档解析工作流
创建一个任务型工作流,各节点配置如下。
图1 单文档解析工作流
表1 单文档解析工作流 节点
配置说明
开始节点
新增一个参数。
- 参数名称:doc
- 参数类型:file/doc
- 必填:勾选

插件节点
添加“文件解析”插件。
file_url参数引用开始节点的doc参数。

大模型节点
- 模型:deepseek-v4-flash
- 输出格式:文本,开启流式输出
- 输入参数:
- query:引用开始节点的query
- doc:引用文件解析节点的content
- 输出参数:使用默认的raw_output,不改动
- 系统提示词:不填写
- 用户提示词:根据用户问题{{query}}结合{{doc}}回答问题
结束节点
输入参数:result,引用大模型节点的raw_output。

- 搭建多文档解析工作流
创建一个任务型工作流,各节点配置如下。
图2 多文档解析工作流
表2 多文档解析工作流 节点
配置说明
开始节点
新增一个参数。
- 参数名称:doc
- 参数类型:array
/doc - 必填:勾选

循环节点
循环类型:使用数组循环。
循环数组:使用默认参数,值引用开始节点的doc。
输出参数:output,只引用“文件解析”插件的content(提前将文件解析插件放在循环体内再设置参数)。

插件节点
添加“文件解析”插件,放在循环体内,并连接循环输入、循环输出。
输入参数:file_url,值引用循环体的item参数。

大模型节点
- 模型:deepseek-v4-flash
- 输出格式:文本,开启流式输出
- 输入参数:
- query:引用开始节点的query
- doc:引用循环节点的output
- 输出参数:使用默认的raw_output,不改动
- 系统提示词:不填写
- 用户提示词:根据用户问题{{query}}结合{{doc}}回答问题

结束节点
输入参数:result,引用大模型节点的raw_output。

步骤二:部署工作流
本示例中的工作流部署时采用api key认证,api调用也采用该方法。
- 工作流运行无问题后,单击“提交版本”,需要勾选“部署至实例”选项。勾选后单击“确定”。 图3 提交版本
- 入站身份认证选择“api key”,并勾选日志记录、指标、调用链。其余配置可以使用默认值。 图4 选择入站身份认证
- 单击“确定”部署智能体。
步骤三:获取api调用凭证(获取authorization)
- 在左侧导航栏中选择“开发中心 > 智能体管理”选择需要调用的工作流,并复制id。
被调用的工作流需要是“已提交”状态。如果显示“未提交”,请单击工作流的名称,进入编辑页面,进行“提交版本”及部署操作。未部署状态的工作流无法获取调用凭证。
图5 获取id
- 获取id后,在“部署运行 > 智能体运行时”页面搜索id。 图6 搜索id
- 单击id名称,进入基本信息页面,找到“访问与权限控制”对应的urn。单击urn名称。 图7 单击urn名称
- 在页面中获取api key的取值。
获取api key的值后,在api key值前加上“bearer ”即为authorization的值(注意bearer后有一个空格)。
图8 获取api key取值
步骤四:调用文档解析工作流
api接口:
post /runtimes/{runtime_name}/invocations
api接口获取方法:
- 登录。
- 在左侧导航栏中选择“开发中心 > 智能体管理”,在“单智能体”页签选择所需的单智能体应用。
- 复制调用路径。(注意智能体需要经过发布,显示为“已提交”状态) 图9 获取api接口
工作流支持传入单个文档和多个文档两种调用方式,区别在于开始节点中文档参数的类型选择不同,进而影响api请求体中参数值的构造方式:
- file类型(单文档):参数值为文档url字符串,无需转义。
- array
类型(多文档) :参数值为文档url数组,多个url放入数组中。
工作流的文档参数直接作为inputs中的字段传入,文档需先上传至obs并获取公网可访问的url,无需像单智能体那样将url数组序列化后嵌入query字段,因此不存在转义问题。
方式一:file类型(单文档调用)
开始节点中文档参数选择file类型。
python调用示例:
import requests
import json
url = "https://{endpoint}/runtimes/{runtime_name}/invocations"
payload = json.dumps({
"inputs": {
"doc": "https://obs-url...",
"query": "识别文档内容"
}
})
headers = {
'content-type': 'application/json',
'authorization': 'bearer 您的apikey,获取方法参考步骤三',
'x-hw-agentarts-session-id': '您的会话id,由用户自定义,由英文、数字、"-"、"_"组成,不超过64位字符。'
}
response = requests.request("post", url, headers=headers, data=payload)
print(response.text) curl调用示例:
针对不同操作系统,命令的转义和换行符有所不同。
- windows
在cmd(命令提示符)中执行如下命令:
curl --location --request post "https://{endpoint}/runtimes/{runtime_name}/invocations" ^ --header "authorization: bearer {apikey}" ^ --header "x-hw-agentarts-session-id: 123456789" ^ --header "content-type: application/json" ^ --data-raw "{ \"inputs\": { \"doc\": \"https://obs-url...\", \"query\": \"识别文档内容\" } }" - linux/macos
在terminal(终端)中执行如下命令:
curl --location --request post 'https://{endpoint}/runtimes/{runtime_name}/invocations' \ --header 'authorization: bearer {apikey}' \ --header 'x-hw-agentarts-session-id: 123456789' \ --header 'content-type: application/json' \ --data-raw '{ "inputs": { "doc": "https://obs-url...", "query": "识别文档内容" } }'
方式二:array
开始节点中文档参数选择array
python调用示例:
import requests
import json
url = "https://{endpoint}/runtimes/{runtime_name}/invocations"
payload = json.dumps({
"inputs": {
"doc": [
"https://obs-urlfile1...",
"https://obs-urlfile2..."
],
"query": "识别文档内容"
}
})
headers = {
'content-type': 'application/json',
'authorization': 'bearer 您的apikey,获取方法参考步骤三',
'x-hw-agentarts-session-id': '您的会话id,由用户自定义,由英文、数字、"-"、"_"组成,不超过64位字符。'
}
response = requests.request("post", url, headers=headers, data=payload)
print(response.text) curl调用示例:
针对不同操作系统,命令的转义和换行符有所不同。
- windows
在cmd(命令提示符)中执行如下命令:
curl --location --request post "https://{endpoint}/runtimes/{runtime_name}/invocations" ^ --header "authorization: bearer {apikey}" ^ --header "x-hw-agentarts-session-id: 123456789" ^ --header "content-type: application/json" ^ --data-raw "{ \"inputs\": { \"doc\": [\"https://obs-urlfile1...\", \"https://obs-urlfile2...\"], \"query\": \"识别文档内容\" } }" - linux/macos
在terminal(终端)中执行如下命令:
curl --location --request post 'https://{endpoint}/runtimes/{runtime_name}/invocations' \ --header 'authorization: bearer {apikey}' \ --header 'x-hw-agentarts-session-id: 123456789' \ --header 'content-type: application/json' \ --data-raw '{ "inputs": { "doc": [ "https://obs-urlfile1...", "https://obs-urlfile2..." ], "query": "识别文档内容" } }'
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨