文档中心 > AI PAAS

调用工作流

更新时间:2026/02/11 访问次数:408

方式1:在Agent中调用工作流

在Agent配置页面选择【已发布】的工作流(如下图),然后以SDK或HTTP方式调用Agent即可;如何调用Agent参考:Agent调用文档

 

方式2:不依赖Agent,直接调用工作流

类似Agent的调用方式,平台提供JAVA SDK和HTTP两种调用方式(推荐使用JAVA SDK),具体如下:

HTTP 调用

工作流执行分为同步和异步调用,均是流式返回结果。默认是同步调用,即调用后等待结果的输出;如果主动选择异步调用,则还需要配套监听开放平台的TMC消息(topic:taobao_agent_WorkflowAsyncResult)获取到工作流执行的结果。

POST /open/api/v1/workflow/execute

https://open-agent-runtime.taobao.com/open/api/v1/workflow/execute

必须的请求头(requestHeader)

X-App-Key: your_app_key // 应用appkey
X-Timestamp: 1640995200000  // 获取系统当前时间戳
X-Nonce: abc123def456ghi789jkl012mno345pqr //随机字符串(建议32位),每次请求都得重新生成
X-Signature: a1b2c3d4e5f678901234567890abcdef123456789 // 使用签名算法计算得出,每次请求都得重新生成
X-Signature-Algorithm: HMAC-SHA256 // 固定值
X-Signature-Version: v1 // 固定值
  • X-Signature参数的 算法逻辑:
function generateSignature(appKey, appSecret, timestamp, nonce, method, path, openIdAppKey = null) {
    // 1. 构造签名字符串
    signString = "appKey=" + appKey +
                 "&timestamp=" + timestamp +
                 "&nonce=" + nonce +
                 "&method=" + method.toUpperCase() +
                 "&path=" + path

    if (openIdAppKey != null && openIdAppKey != "") {
        signString = signString + "&openIdAppKey=" + openIdAppKey
    }

    // 注意:签名字符串不包含body内容

    // 2. 确定签名密钥
    signSecret = appSecret
    if (openIdAppKey != null && openIdAppKey != "" && openIdAppKey != appKey) {
        signSecret = appSecret + "|" + openIdAppSecret  // 使用openIdAppSecret
    }

    // 3. 使用HMAC-SHA256生成签名
    signature = hmac_sha256(signString, signSecret)

    // 4. 转换为十六进制字符串
    return hex(signature)
}

requestBody:

{
    "openId": "AAH4C_-NAOaPuehU232fefe",  // openId定位唯一用户
    "workflowCode": "workflow_19810auczs", // 必选,工作流的标识
    "sync": true,    // true表示同步,false表示异步,默认是true
    "query": "1231234",  //可选,查询文本,工作流可以基于此查询进行语义理解和任务分发。
    "input": {
        "question": "11",
        "text": "{\"chill\":\"1\"}"
    },   //工作流输入参数集合
    "systemParams": {
        "tbOauthToken": "61028165fdb2ba488256ebc41c772474b09016934"
    },   // 系统参数
    "originBizParams":{
        "messageIds":[
            "3434343",
            "4343432"
        ]
    } // 业务参数,当前可选,主要用于业务数据埋点使用,后续会以具体业务场景模式进行规范
}

Respons Body:

{
    "workflowInstanceId": "214003",   // 工作流实例ID
    "workflowCode": "workflow_19810auczs", // 工作流标识
    "status": "RUNNING"   // 工作流执行状态
}

{
    "workflowInstanceId": "214003", // 工作流实例ID
    "workflowCode": "workflow_19810auczs", // 工作流标识
    "status": "SUCCESS",  // 工作流执行状态
    "result": {
        "output": 293334304,
        "qwere": "23",
        "qwdqw": "e"
    }   // 工作流执行完成后的最终结果集
  }

 

Java SDK(强烈建议使用sdk)

jar 包地址:

支持jdk8;11.18日更新

https://open-agent-sdk.oss-cn-beijing.aliyuncs.com/last/open-tao-agent-light-sdk-1.0.22-log-SNAPSHOT-with-dependencies.jar

Tip:1、若启动报错 Caused by: java.lang.NoSuchMethodError: 'void reactor.core.publisher.Hooks.enableAutomaticContextPropagation()',说明 reactor-core 存在依赖冲突,需确保实际使用的 reactor-core 版本为 3.7.6。

初始化sdk client

public static OpenTaoAgentClient createClient() {
        // 配置环境header
        OkHttpOption httpOption = OkHttpOption.builder()
                .build();

        return OpenTaoAgentClient.builder()
                .appKey("xxx")
                .appSecret("xxxx")
                .apiKey(API_KEY)
                .httpOption(httpOption)
                .build();
}
// API_KEY 暂时固定传递TOP_SDK_INVOKE
OpenTaoAgentClient client = createClient();

请求参数

名称

类型

必填

描述

示例值

workflowCode

string

工作流标识

workflow_19810auczs

workflowVersion

sting

工作流发布上线的版本号

1.0.0

openId

string

openId,平台使用该参数定位用户(商家或消费者),用于工作流等;如果工作流中用到了用户维度的工作调用等等,该参数则为必填

xxxxx

sellerOpenId

string

sellerOpenId,平台使用该参数定位商家,用于专属知识库调用等;

 

sync

boolean

true表示同步,false表示异步;默认是同步,如果是异步,则需要配合开放平台的TMC消息进行结果的获取

true

query

String

查询文本,用于传递用户的自然语言查询。工作流可以基于此查询进行语义理解和任务分发。

 

input

Map<String,Object>

工作流开始节点使用的参数集合,会直接传递给工作流的第一个节点

 

systemParams

Map<String,Object>

系统参数集合

 

originBizParams

Map<String,Object>

业务参数集合,后续指定业务需要传入固定格式的业务数据便于埋点

 
Map<String, Object> promptParams = new HashMap<>();
            promptParams.put("question", "11");
            promptParams.put("text", "{\"chill\":\"1\"}");

Map<String, Object> systemParams = new HashMap<>();
systemParams.put("tbOauthToken", "61028165fdb2b56ebc41c772474b4a2f2211509016934");

WorkflowInput input = WorkflowInput.builder()
                .workflowCode("workflow_19810auczs")
                .workflowVersion("1.0.0")
                // 同步调用
                .sync(true)
                .query("1231234")
                .input(promptParams)
                .openId("AAH4C_-NAOaPuehU0Z84Kf")
                .systemParams(systemParams)
                .build();

client.executeWorkflow(input)......

常见错误码

MISSING_AUTH_HEADERS:缺少必要的认证头

INVALID_APP_KEY:无效的应用标识

TIMESTAMP_EXPIRED:时间戳已过期

DUPLICATE_NONCE:随机数重复

SIGNATURE_VERIFY_FAILED:签名验证失败

 

 

更新记录

1、支持版本管理

2、mcp节点、workflow节点支持选择版本号

3、llm节点支持List

4、查看历史已上线工作流搭建详情

5、修复运行时相关bug

6、mcp节点支持array复杂对象

7、支持并行调用

8、支持日志运维

 

FAQ

Q:通过 sdk 发起工作流调用报错

A:请确保填写正确的线上版本号,版本号可在工作流列表中查看

Q:如何查看工作流日志

A:操作路径:agent 管理 -> 日志 -> 工作流 tab 

FAQ

关于此文档暂时还没有FAQ
返回
顶部