更新时间:2026-07-17 GMT+08:00
分享

使用API调用文档解析工作流

在AgentArts平台上开发完成工作流时,部分业务场景需要工作流具备文档理解能力,例如:合同审核场景中需读取用户上传的合同文件并提取关键条款。

文档理解能力依赖工作流中的插件节点、MCP节点或代码节点等方式实现。工作流支持在开始节点定义File或Array<File>类型的文档参数,单文档时使用File类型;多文档时使用Array<File>类型。两种类型的参数构造方式不同,详见后续步骤。

工作流部署时采用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<File>类型的文档参数,File类型对应传1个文档;Array<File>类型对应传多个文档,传多个文档时,需要将插件放在循环节点中,按照上传的文档数量依次解析。

  • 搭建单文档解析工作流

    创建一个任务型工作流,各节点配置如下。

    图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<File>/Doc
    • 必填:勾选

    循环节点

    循环类型:使用数组循环。

    循环数组:使用默认参数,值引用开始节点的doc。

    输出参数:output,只引用“文件解析”插件的content(提前将文件解析插件放在循环体内再设置参数)。

    插件节点

    添加“文件解析”插件,放在循环体内,并连接循环输入、循环输出。

    输入参数:file_url,值引用循环体的item参数。

    大模型节点

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

    结束节点

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

步骤二:部署工作流

本示例中的工作流部署时采用API Key认证,API调用也采用该方法。

  1. 工作流运行无问题后,单击“提交版本”,需要勾选“部署至实例”选项。勾选后单击“确定”。

    图3 提交版本

  2. 入站身份认证选择“API Key”,并勾选日志记录、指标、调用链。其余配置可以使用默认值。

    图4 选择入站身份认证

  3. 单击“确定”部署智能体。

步骤三:获取API调用凭证(获取Authorization)

  1. 在左侧导航栏中选择“开发中心 > 智能体管理”选择需要调用的工作流,并复制ID。

    被调用的工作流需要是“已提交”状态。如果显示“未提交”,请单击工作流的名称,进入编辑页面,进行“提交版本”及部署操作。未部署状态的工作流无法获取调用凭证。

    图5 获取ID

  2. 获取ID后,在“部署运行 > 智能体运行时”页面搜索ID。

    图6 搜索ID

  3. 单击ID名称,进入基本信息页面,找到“访问与权限控制”对应的URN。单击URN名称。

    图7 单击URN名称

  4. 在页面中获取API Key的取值。

    获取API Key的值后,在API Key值前加上“Bearer ”即为Authorization的值(注意Bearer后有一个空格)。

    图8 获取API Key取值

步骤四:调用文档解析工作流

API接口:

POST /runtimes/{runtime_name}/invocations

API接口获取方法:

  1. 登录AgentArts智能体平台
  2. 在左侧导航栏中选择“开发中心 > 智能体管理”,在“单智能体”页签选择所需的单智能体应用。
  3. 复制调用路径。(注意智能体需要经过发布,显示为“已提交”状态)

    图9 获取API接口

工作流支持传入单个文档和多个文档两种调用方式,区别在于开始节点中文档参数的类型选择不同,进而影响API请求体中参数值的构造方式:

  • File类型(单文档):参数值为文档URL字符串,无需转义。
  • Array<File>类型(多文档):参数值为文档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<File>类型(多文档调用)

开始节点中文档参数选择Array<File>类型。

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": "识别文档内容"
      }
    }'

相关文档