Skip to main content
工作流应用

概览

工作流应用将复杂的任务拆分成一系列有序执行的步骤,以降低系统复杂度。在阿里云百炼,通过工作流组合使用大模型、API和函数计算等节点,可有效降低编码成本。本文介绍如何创建工作流。

应用介绍

为什么使用工作流应用

工作流是一种将复杂任务拆分为一系列有序步骤的方法,旨在简化系统复杂度,提高工作效率。在现代软件开发和业务流程管理中,工作流应用变得尤为重要。通过在阿里云百炼平台上创建工作流应用,可以清晰地定义任务的执行顺序、责任分配以及各步骤之间的依赖关系,从而实现自动化和优化。 工作流应用有许多使用场景,如:
  • 旅行规划:用户可通过工作流插件选择目的地等参数,自动生成旅行计划,包括航班、住宿、景点推荐等。
  • 报告分析:针对复杂数据集,通过组合数据处理、分析和可视化插件,生成结构化和格式化的分析报告,满足不同业务需求。
  • 客服支持:通过自动化工作流处理客户咨询,包括问题分类等,提高客服响应速度和准确性。
  • 内容创作:实现文章、市场营销文案等内容的生成,用户只需输入主题和要求,系统自动生成符合要求的文稿。
  • 教育培训:通过工作流设计个性化学习方案,包括学习进度跟踪、测评等,实现学生的自主学习。
  • 医疗问诊:根据患者输入的症状,通过组合多种分析工具生成初步诊断或推荐相关检查,辅助医生进行进一步判断。

节点类型

工作流由多种功能节点组合而成。

基础节点

AI 节点

工具节点

数据处理节点

会话变量

会话变量作为全局变量,能够在当前工作流的全生命周期内记录参数信息,并可在各个节点中进行引用。可在画布配置页面右上角单击会话变量图标进行配置。

测试应用

在工作流配置完成后,可以通过测试功能验证工作流的运行效果。单击右上角测试按钮,打开测试面板。测试面板支持多种测试模式,可根据不同的使用场景选择合适的模式测试。

文本对话

文本对话是默认的测试模式,会保留历史对话上下文,支持连续的多轮对话交互。
  1. 在测试面板顶部的下拉框中选择文本对话模式(默认模式)。如果工作流中包含自定义变量,在参数配置区域填写变量值。
  2. 在输入框输入测试内容(支持文本输入和附件上传),单击发送按钮(或按 Enter 键)执行测试。
  3. 查看测试结果,可以单击节点查看详细的输入输出,也可以切换输出格式(Text/JSON 格式)查看结果。
  4. 如需继续多轮对话,在输入框输入下一轮对话内容并发送;如需重新开始对话,可单击清空按钮。

文本生成

文本生成模式为单轮交互,每次测试都是独立的,不会保留历史对话上下文,支持两种模式:
  • 同步运行:适用于执行时间较短的简单任务,工作流执行完成后直接返回结果。
  • 异步运行:适用于执行时间较长的复杂应用,系统返回 Task ID,可通过 Task ID 查询任务执行结果。

同步运行

同步运行模式下,工作流会立即执行并等待完成,执行完成后直接返回结果。
  1. 在输入框中输入测试内容,单击运行按钮执行测试。
  2. 等待工作流运行完成后,切换到结果标签页查看输出结果。可以单击节点查看详细的输入输出,也可以切换输出格式(Text/JSON 格式)查看结果。

异步运行

异步运行模式下,工作流会在后台执行。系统会立即返回 Task ID,可通过 Task ID 查询任务执行结果,也可在任务中心查看历史异步任务。
  1. 在输入框中输入测试内容,单击运行按钮执行测试。系统会立即返回 Task ID。
  2. 异步任务执行过程中,测试面板会显示"执行中"状态,可单击刷新按钮刷新任务状态。
  3. 任务执行完成后,在结果标签页中查看输出结果,结果中会显示"异步"标签和 Task ID。可以单击节点查看详细的输入输出,也可以切换输出格式(Text/JSON 格式)查看结果。

音视频互动

可以将工作流应用发布为音视频实时对话应用,并提供便捷的调试窗口,支持通过 H5/APP 快速体验 demo 效果,也可以通过音视频 SDK 集成到 Web/iOS/Android 应用中。
  • 不推荐使用深度思考模式的模型进行实时音视频对话,会影响对话体验,如 DeepSeek-R1、QwQ 系列模型。
  • DeepSeek V3 模型不支持视频对话功能。
  1. 选择开始节点、大模型节点和结束节点,配置一个可正常执行的工作流。
  2. 通过测试文本对话,先在文本对话中调试出符合预期的应用效果。
  3. 文本会话效果满意后,切换到语音互动视频互动,再单击去配置配置 API Key 用于调用应用。
  4. 进行音视频设置,配置参数后,再单击拨打调试音视频互动效果。其中语音转文字可进行语种选择,文字转语音可进行语音模型选择和音色选择。
  5. 效果测试满意后,单击右上角体验按钮,生成临时体验二维码,通过手机微信/钉钉/浏览器扫码体验交互效果。二维码有效期为 24 小时。
  6. 效果确认后,单击发布按钮发布应用。再进入发布渠道,完成智能媒体服务开通和 SLR 授权后,创建互动智能体。

检查清单

在检查清单中可以查看为确保工作流成功运行所需进行的配置。可在画布配置页面右上角单击检查清单图标查看。

发布与调用

完成工作流配置和测试后,单击右上角发布按钮发布应用。发布后可通过 API 调用工作流应用。
如需使用 Responses API 调用,请参阅 Responses API 调用

前提条件

  1. 已获取 API Key 并配置 API Key 到环境变量。
  2. 已创建工作流应用,并在应用管理页面的应用卡片上获取 APP_ID。
  3. 若通过 DashScope SDK 调用,需要安装 DashScope SDK。

快速开始

import os
from http import HTTPStatus
from dashscope import Application

response = Application.call(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    app_id='APP_ID',  # 替换为实际的应用 ID
    prompt='你是谁?')

if response.status_code != HTTPStatus.OK:
    print(f'request_id={response.request_id}')
    print(f'code={response.status_code}')
    print(f'message={response.message}')
else:
    print(response.output.text)

节点执行状态

响应中的 output.thoughts[] 按执行顺序返回各节点的运行信息。数组每个元素的 response 字段是一段 JSON 字符串,包含以下字段:
字段类型说明
nodeIdstring节点 ID。
nodeNamestring节点名称。
nodeTypestring节点类型,如 StartLLMScript
nodeStatusstring节点执行状态,取值见下表。
nodeResultstring节点输出结果,JSON 字符串。开始节点等无输出节点不返回该字段。
nodeExecTimestring节点执行耗时,如 1167ms。节点执行中时不返回该字段。
nodeStatus 取值:
取值说明
success节点执行成功。
fail节点执行失败。
skip节点被跳过,未执行。
executing节点执行中,nodeResult 为空。流式输出时,节点先返回 executing,执行完成后再返回最终状态。

多轮对话

相比于单轮对话,多轮对话可以让大模型参考历史对话信息,更符合日常交流的场景。
import os
from http import HTTPStatus
from dashscope import Application

def call_with_session():
    response = Application.call(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        app_id='APP_ID',
        prompt='你是谁?')

    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        return response

    responseNext = Application.call(
                api_key=os.getenv("DASHSCOPE_API_KEY"),
                app_id='APP_ID',
                prompt='你有什么技能?',
                session_id=response.output.session_id)

    if responseNext.status_code != HTTPStatus.OK:
        print(f'request_id={responseNext.request_id}')
        print(f'code={responseNext.status_code}')
        print(f'message={responseNext.message}')
    else:
        print('%s\n session_id=%s\n' % (responseNext.output.text, responseNext.output.session_id))

if __name__ == '__main__':
    call_with_session()

自定义参数传递

调用工作流应用时,动态参数统一封装在 input 对象中,该对象包含两个关键字段:
  • prompt:传递用户的主要输入内容。这部分内容会自动映射到工作流中名为 {{query}} 的内置变量,无需手动定义。
  • biz_params:以键值对形式传递自定义的业务参数(例如 {"city": "杭州"})。这些参数需要在工作流的开始节点中预先定义,之后便可作为全局变量在流程中的任意节点中通过 {{参数名}} 的方式引用。
详细使用说明请参阅通过 API 传递自定义参数

工作流导入/导出

  1. 导入/导出阿里云百炼工作流 单击工作流页面上方的更多图标,选择导出 DSL导入阿里云百炼 DSL
  2. 导入 Dify 工作流 支持一键导入 Dify 工作流,便于迁移和复用。
    1. 单击工作流页面上方的更多图标,选择导入 Dify DSL
    2. 调整各节点的参数配置。节点兼容性详情如下:
    Dify 节点对应的阿里云百炼节点兼容性
    开始开始sys.query 对应阿里云百炼的 querysys.dialogue_count 对应阿里云百炼的最大记忆轮次。
    LLM大模型模型:阿里云百炼不支持的模型会置空,需自行选择,阿里云百炼支持模型完全兼容;Prompt:Dify 的 System 对应阿里云百炼的提示词,User 对应用户提示词;视觉能力完全一致;上下文:阿里云百炼将 Dify 上下文的原始字段直接纳入 System Prompt。
    知识检索知识库输入:统一引入 content 字段作为输入;知识库:导入后置空,需手动关联;召回设置:Dify 的 Top-k 映射为阿里云百炼的召回片段数。
    直接回复输出节点完全兼容。
    Agent仅保留名称,需单击以选择具体的阿里云百炼节点进行替换。
    问题分类器意图分类阿里云百炼不支持的模型会置空,需自行选择,阿里云百炼支持模型完全兼容。
    迭代批处理输入对应阿里云百炼的批处理数组;输出变量对应阿里云百炼的输出变量。
    循环循环完全兼容。
    代码执行脚本区分 Python 和 JavaScript 脚本。
    模板转换不兼容,生成自定义节点。
    变量聚合器变量处理对应阿里云百炼变量处理节点的聚合分组输出模型。
    文档提取器不兼容,生成自定义节点。
    变量赋值变量设置完全兼容。
    参数提取器参数提取阿里云百炼不支持推理模式,其余完全兼容。
    HTTP 请求API完全兼容,但需要重新鉴权。
    列表操作不兼容,生成自定义节点。
    工具插件、MCP不兼容,生成自定义节点。
    注释不兼容。
    结束结束若 Dify 工作流中存在多个结束节点,阿里云百炼会将其转换为一个变量聚合节点和一个结束节点。

查看工作流应用版本

  1. 单击工作流配置页面右上角的发布,在发布对话框中输入版本信息(例如 1.0.0)后,单击确定
  2. 单击页面顶部的版本管理,可在历史版本面板按需查看或使用(单击覆盖当前草稿回到当前版本)当前工作流应用的不同版本。也可以单击顶部的 DSL 导出该版本,导出所选历史版本工作流的 DSL。
  3. (可选)在节点库中查看或搜索节点。

删除与复制工作流应用

可以在应用管理找到已发布的应用卡片,单击更多图标,进行删除与复制工作流、修改应用名操作。

常见问题

工作流应用相关

  1. 怎么把工作流运行的结果写入数据库? 使用脚本转换节点,可将上一节点的内容写入数据库。
  2. 如何上传文件? 可以在工作流应用中加入一个 API 节点来实现文件上传功能。
  3. 如何上传图片? 使用 VL 模型,通过指定参数传入图片 URL 地址。
  4. 能否在工作流应用里使用异步任务 API? 工作流应用超时时间为 600 秒,不建议在流程里使用异步任务 API。
  5. 工作流前端应该怎么调用 API 并且流式输出? 暂时不支持前端调用。
  6. 工作流无法导入单独的 .yaml 文件? 不支持单独导入 .yaml 文件,需提供包含 md5 文件的压缩包,建议重新生成 MD5。
  7. 工作流变量名可以为中文吗? 变量名不支持使用中文。
  8. 对话记录存储问题? 工作流应用仅保存一个月数据,需自行保存对话记录,session_id 有效时间为一小时。

节点相关

  1. 若意图分类节点开启上下文,运行报错? 若意图分类节点开启上下文,则传入该节点的变量类型需为 List 类型。
  2. API 节点使用流式输出报错? 工作流中的 API 节点不支持流式输出,HTTP API 本身是支持的。
  3. 如何处理条件判断节点响应速度慢?
    • 检查工作流配置:确保每个节点配置正确,尤其是条件判断节点,避免不必要的复杂计算或数据处理。
    • 优化代码逻辑:如果条件判断中涉及自定义脚本,尝试优化脚本逻辑,减少不必要的循环或数据处理。
    • 批量测试:批量测试当前工作流的平均响应时间,以确定是否存在特定条件下的性能瓶颈。
  4. 大模型节点流式如何输出思考过程? 需要在大模型节点后添加文本转换节点并配置 reasoning_content 变量,打开结果返回开关。返回条件需要结束节点接收。
  5. 大模型节点输出参数无法自定义?
    • 使用脚本节点处理输出:在大模型节点之后添加一个脚本节点,通过脚本处理大模型节点的输出,将其转换为需要的格式或添加额外的输出参数。
    • 配置批量节点:如果在批量节点中使用大模型节点,可以在批量节点的配置中选择大模型节点的输出作为最终输出 resultList
    更多详细信息,请参阅通过 API 传递自定义参数
  6. 工作流 API 调用节点无返回结果及参数传递问题? 确认 API Key 和 Base URL 正确。确认输入参数配置正确,调整字段输入类型,通过模型观测查看模型使用详情。
  7. 调用知识库的 Excel 数据问题? 无法直接调用本地文件,可通过 MCP 实现本地调用;知识库节点输出需自行处理文字内容,建议增加大模型完成表格转换后再传入脚本处理。