工作流节点参考

更新时间:
复制为 MD 格式

本文介绍LangStudio工作流应用开发中的AI能力节点,包括流程控制、大模型、Python开发、Agent、知识库检索、文档解析、语音识别、联网搜索等预置组件的配置和使用方法。

流程控制

开始(Start)

说明

一个应用流中只能有一个开始节点。

开始节点用于标识应用流的运行起始状态,并可以配置应用流的输入参数。

  • 对于对话型应用流,系统会默认提供对话历史和对话输入两个默认字段,您可以根据需求添加自定义变量(支持定义类型为File的输入变量,用于接收用户上传的文件,详见文件类型输入输出)。

    image

  • 在运行应用流时,通过对话面板配置当前会话的输入参数。

    image

条件分支(Condition

该节点主要用于流程控制。主要实现if-else逻辑,若设定的条件成立则仅运行对应的分支,若均不成立则运行else分支。需搭配工作流应用开发节点使用。

  • 配置界面

    image

  • 输入(Input)

    配置分支条件时,需注意:

    • 每个分支代表一个执行路线,最后一个分支为else分支,代表没有匹配到任何分支,不可编辑。

    • 每个分支可包含多个条件,条件之间支持and/or聚合。

    • 注意上游节点输出、匹配符(如=为空不包括等)以及匹配值,以确保条件的准确性和有效性。

  • 输出(Output)

    无输出。

  • 使用案例

    在连接条件分支组件与下游节点时,每个分支在组件上都有一个对应的连线端口。当某个分支条件被触发时,该分支将执行连接的下游节点,而其他分支节点则会被跳过。之后,可以通过工作流应用开发组件收集各个条件分支的执行结果(即下游节点的输出)。

    image

变量聚合(Variable Aggregate

该节点负责整合不同分支的输出结果,确保无论哪个分支被执行,其结果都能通过一个统一的变量来引用和访问。这在多分支的情况下非常有用,可将不同分支下相同作用的变量映射为一个输出变量,避免下游节点重复定义。

  • 配置界面

    image.png

  • 输入(Input)

    配置变量分组时,需注意:

    • 上游一般是工作流应用开发/工作流应用开发产生的多个执行分支。

    • 同一分组中变量必须同类型,第一个非空输出值即为该组的输出。

    • 由于条件分支/意图识别仅会触发一个分支,所以每组有且仅有一个非空值,通过变量聚合节点即可提取出该值,方便下游使用。

    • 如果每个条件分支/意图识别的分支有多个需要的输出,可以添加多个分组,分别提取对应输出值。

  • 输出(Output)

    输出变量会根据所添加的分组进行动态调整。如果存在多个分组,节点将输出多个键值对(Key-Value),其中,Key为组名,Value为组内第一个非空的变量值。

  • 使用案例

    请参见工作流应用开发组件的使用案例。

循环(Loop)

循环节点用于执行需要依赖前一轮结果的重复任务,直至满足退出条件或达到预设的最大循环次数。在循环节点内,可以配置一个子流程,系统会根据循环变量重复执行子流程中的逻辑,直到触发终止条件或达到执行次数上限。

  • 配置界面

    image

  • 输入(Input)

    • 循环变量:用于在循环的各个轮次间传递数据,并在循环结束后继续供下游节点使用。支持配置多个循环变量,其值可以手动输入或从上游节点的输出中选择。

    • 循环退出条件:可基于循环变量进行配置,当指定的循环变量满足预设条件时,循环将终止。

    • 最大循环次数:用于限制循环的最大执行次数,以防止出现无限循环。

  • 输出(Output)

    节点输出为当前循环执行之后循环变量的值。只有通过变量赋值节点才能更新循环变量,如果没有该节点,经过N轮循环后,循环节点的输出将仍然保持为初始输入。

  • 相关节点

    循环相关的节点仅限在循环内使用。您可以通过单击循环内指定节点右侧的“+”来添加以下相关节点:

    • 退出循环(Break Loop)

      退出循环,上游一般是工作流应用开发节点。

    • 变量赋值(Variable Assigner)

      将循环内子节点输出结果赋值给循环变量。

    image

直接输出

直接输出节点可以通过输出模板配置直接回复的消息内容,它支持使用 {{node.variable}} 语法引用上游节点的输出,支持流式输出。

使用示例:在大模型节点前,增加直接输出节点,先返回一条消息给用户。

image

image

批处理

批处理节点用于对列表数据进行批量并行处理,每个列表元素都会经过相同的子流程定义进行处理,通过并行处理可显著提升处理效率。

输入

  • 输入列表:待处理的数据列表,列表内每个元素将作为一个独立的处理项,分发到批处理体内的子流程执行。

  • 输出字段:选择批处理子流程内的某个节点的输出变量,作为批处理任务的输出结果。

  • 并行数量:选填,用于控制同时执行的任务数,默认值为4,取值范围为1~10。

输出

result:所有批处理任务的输出结果列表,聚合了批处理节点输入中所填写“输出字段”的实际输出值。

相关节点

批处理开始节点

批处理开始节点(Batch Start)是批处理体的入口,提供以下输出变量供子流程中的后续节点引用:

  • item:当前正在处理的数据项,对应输入列表中的一个元素

  • index:当前数据项在输入列表中的索引位置(从 0 开始)

退出批处理节点

退出批处理节点(Batch Break)用于在满足特定条件时,提前终止当前数据项的处理流程。

注意事项:退出批处理仅终止当前迭代的执行,不影响其他数据项的正常处理。

使用示例

批量文件解析与智能处理

场景:企业需要批量解析多个文档文件,对解析成功的文档调用大模型进行内容处理,解析失败的文档自动跳过。

批处理节点配置

参数

配置值

说明

输入列表

开始节点 / files

引用上游节点输出的文件列表

输出字段

大模型 / output

选择大模型节点输出的output字段作为批处理节点的输出

并行数量

4

同时处理 4 个文件

image.png

输出结果示例

{
  "result": [
    "本文档为XX产品使用说明书,主要包含产品功能介绍、安装步骤...",
    "本合同为软件服务采购合同,合同期限为12个月...",
    null,
    "增值税普通发票,开票日期2026年1月15日..."
  ]
}

说明:输出结果中 null 表示该文件解析失败,通过退出批处理节点跳过了后续处理。

注意事项

  1. 结果顺序保证:输出结果列表的顺序与输入列表顺序一致。

  2. 子流程灵活性:子流程内部,不同数据项可能触发不同的执行路径。

  3. 空值处理:若某个执行流程提前退出,或实际输出为空,批处理输出结果的对应位置将为空值。

结束(End)

结束节点用于标识应用流(Workflow)的运行结束状态,以及应用流的输出参数。一个应用流中只能有一个结束节点。

  • 输出参数配置

    应用流输出可以引用所有上游节点产生的输出,作为应用流执行结果。例如,以下示例中应用流的answer输出使用了大模型节点的输出,search_results则是使用了搜索节点的输出。

    image

    说明
    • 对话型应用流默认有一个Chat输出字段,用于作为应用流的对话输出。

    • 应用流程必须包含开始节点和结束节点,且只有连接在这两个节点之间的节点才会被执行,游离的节点则不会执行。

AI能力

大模型(LLM)

LLM节点是应用流的核心组件,专门用于调用大语言模型以处理自然语言任务。通过此节点,用户可以获得智能的文本响应,帮助回答问题或处理复杂的自然语言输入。此外,LLM节点还提供灵活的配置选项,允许用户调整模型参数、管理对话历史以及自定义提示词,以优化响应质量和准确性。

  • 应用场景

    • 文本生成:根据主题、关键词生成文本内容。

    • 内容分类:自动分类邮件类型(咨询/投诉/垃圾邮件)。

    • 文本转换:将文本翻译成指定语言。

    • RAG:结合检索到的知识回答用户问题。

  • 配置界面

    image

  • 输入(Input)

    • 模型设置:支持使用从ModelGallery部署或其他自定义部署的模型服务,以及Dashscope、DeepSeek等模型提供商提供的模型。如果关注效果,建议选择能力较强的模型。支持配置以下模型参数:

      • 温度:通常是一个介于01之间的值,用于控制模型输出的随机性。温度越接近0,结果越确定和一致;温度越接近1,结果则越随机和多样化。

      • Top P:用于控制结果的多样性。模型会从候选词中选择,确保选择的词的累积概率不超过设定的阈值P,从而影响输出的多样性。

      • Top K:用于控制模型的输出。它限定了模型在生成结果时可以选择的候选词数量。具体来说,Top K设定一个数值K,模型只会从概率最高的前K个词中进行选择。这种方法可以减少生成结果中的随机性,使输出更加集中在可能性较高的词汇上。相比于Top P,Top K更加直接地限制了候选词的数量,而不是基于累积概率。

      • 存在惩罚:用于减少模型重复生成相同的实体或信息。通过对已生成的内容施加惩罚,模型更倾向于生成新的或不同的内容。随着参数值的增加,模型对已经生成过的内容施加更大的惩罚,从而降低重复生成的可能性。

      • 频率惩罚:用于减少过于频繁出现的词或短语的生成概率。随着参数值的增加,对这些常见词或短语施加更大的惩罚,从而降低其出现频率。较高的频率惩罚参数值有助于提升文本的词汇多样性。

      • 最大标记:用于设定模型在单次生成中可以输出的最大长度。设定较低的最大标记值可能会导致生成的文本较短或被截断,而较高的值则允许更长的输出,从而帮助控制生成内容的规模和复杂度,确保结果符合预期的长度要求。

      • 种子:当指定种子值时,模型会尽量进行确定性采样,使得相同种子和参数的重复请求应产生相同的结果。然而,不能保证完全的确定性,建议您参考system_fingerprint(可能需要代理才能访问)响应参数来监控可能的变化。

      • 停止序列:最多4个停止序列,用于指示模型在生成文本时停止进一步输出。当模型检测到其中任意一个停止序列时,它将停止生成更多的tokens,并且返回的文本将不包含该停止序列本身。

    • 对话历史:配置打开后,会自动地在提示词中插入应用流的聊天历史记录。

    • 输入变量:变量中可以引用本节点前置所有节点的输出。

    • 提示词:自定义系统(SYSTEM)/用户(USER)/助手(ASSISTANT)的提示词内容,提示词是jinja2模板,模板中可以通过两个双引号{{}}的方式引用输入变量。

  • 输出(Output)

    节点默认输出String类型的数据,也可以根据需求配置为JSON类型数据。JSON类型支持自定义添加输出变量,大模型会根据变量名称的含义进行输出。

  • 使用案例

意图识别(Intent Recognition

主要用于流程控制。通过大语言模型分析用户输入的意图,并根据识别结果执行相应的分支。支持多意图配置和对话历史。

  • 配置界面

    image.png

  • 输入(Input)

    • 用户输入:选择用户输入,用于识别意图。

    • 多意图配置:按需设置意图,确保每个意图的描述都清晰明确,并且不同意图之间不存在语义重叠。最后一个意图默认为“其他意图”,代表没有匹配到任何其他意图,不可编辑。

    • 模型设置:配置意图识别需要的大语言模型,如果关注效果,请选择能力较强的模型,如qwen-max等。

    • 对话历史:配置打开后,大模型推理时会自动地在提示词中插入应用流的聊天历史记录。

    • 额外提示:输入的内容将会被追加到系统提示词中,帮助模型更好的完成意图识别。

  • 输出(Output)

    无输出。

  • 使用案例

    在连接意图识别组件与下游节点时,每个意图分支在组件上都有一个对应的连线端口。当某个意图被识别时,该分支将执行连接的下游节点,而其他分支节点则会被跳过。之后,可以通过工作流应用开发组件收集各个条件分支的执行结果(即下游节点的输出)。

    image.png

Agent(Agent)

Agent节点是LangStudio应用流中基于自主性智能体开发的节点组件。该节点支持推理(Reasoning)策略和Tools Use等能力,可通过集成不同的推理策略(目前支持FunctionCallingReAct策略),实现自主调用模型上下文协议(MCP)工具,从而使得大语言模型(LLM)能够在运行时动态选择并执行工具(Tools),实现自主性多步推理能力。

配置节点参数

  • Agent策略:选择所需的Agent推理策略,目前支持FunctionCallingReAct策略。

    FunctionCalling

    基于 OpenAI Chat API 中定义的结构化 tool call 定义(JSON format),实现大语言模型(LLM)与外部工具的交互。LLM 会基于用户自然语言指令,自动识别意图、选择合适的工具并提取参数,系统随后调用对应工具并返回结果供模型继续推理生成最终答案。

    应用场景与优势:

    • 结构化调用,兼容性强:使用结构化数据明确工具名称及调用参数,适配所有支持 tool calling 的模型。

    • 性能稳定:适合目标明确、步骤清晰的任务(如查天气、搜索信息、数据查询等)。

    ReAct

    ReAct(Reasoning + Acting)策略是一种更自由的推理方式,通过提示词引导模型显式生成 Thought 和 Action,从而实现多步推理与工具调用的闭环。该策略通常使用自然语言描述调用过程,通过输出类似“Action=xxx, Action Input=xxx”的文本触发后端工具执行,并将结果再次注入模型推理链中。无需 API-level 的 tool_calls,适用于更通用模型及框架。

    应用场景与优势:

    • 更强推理能力:引导模型逐步思考,每一步都能显式表达推理逻辑。

    • 策略透明:适合调试、可解释性强的 Agent 应用。

    • 无需 Tool Calling 支持:不支持结构化输出的模型也可使用。

  • 模型设置:FunctionCalling策略使用OpenAI APITool Call方式传递Tools信息,因此模型需要原生支持Tool Calling功能。ReAct策略则无此限制,建议选择推理能力较强的模型。

  • 对话历史:启用对话历史,可以为Agent提供对话上下文记忆能力。系统会自动的将对话历史消息填充到提示词中,这使得Agent能够理解和引用之前的对话内容,从而提供连贯的上下文相关的回答。例如,当用户在新的消息中使用代词(如“他”、“这里”、“那一天”等)时,开启了对话历史的Agent能够理解这些代词所指代的前文实体,而无需用户重复指定完整信息。

  • 任务规划:启用后,系统将自动将内置write_todos工具添加到Agent的可用工具中;对于用户的复杂问题,Agent会自动调用write_todos工具规划复杂任务并逐步执行,过程中会根据最新数据信息动态更新计划。

  • MCP工具 & 工具:支持配置MCP工具和非MCP工具。详情请参见为 Agent 配置工具

  • 提示词配置

    • 输入变量:当您希望在提示词中引用应用流上游节点的变量时,需要在本节点中定义相应的输入变量,并将其值设置为上游节点变量的引用。随后,在下面提示词中,您可以通过Jinja2模板语法(通过两个双引号{{}}的方式)引用这些已定义的输入变量,以实现动态数据传递。

    • 系统提示词:用于明确指定 Agent 的任务目标和上下文信息,为模型提供必要的背景,以指导其生成符合预期的响应。对于ReAct策略,非必须。

    • 用户提示词:接收用户的输入或查询,作为模型生成响应的基础。

  • 循环次数:设置Agent执行的最大循环次数,范围为1~99。Agent将根据循环次数重复执行任务以生成响应,直到满足以下任一条件:

    • LLM判断已通过调用工具获取足够的信息以生成完整的结果

    • 达到设定的最大循环次数

    请注意,设置合理的循环次数有助于在响应完整性与执行效率之间取得平衡。若打开了任务规划,建议使用默认最大循环次数,以确保模型能够按照计划完整地执行所有步骤并解决问题。

  • 输出变量

    • intermediate_steps:Agent执行的中间过程,String类型。

    • text:Agent的最终输出,String类型。

查看链路/日志

在应用流页面右上角单击运行后,您可以在弹出的对话框中运行结果下方查看链路或日志。

  • 查看中间输出:点击工作流中的Agent节点右上角的运行状态图标,在下方抽屉中找到Output里的intermediate_steps,查看agent的推理过程。

  • 查看链路:查看当前运行的Trace信息,了解Agent在每次请求模型时的输入、模型的输出(包括工具调用及请求参数)、token开销、耗时等信息。

  • 查看日志当应用流运行错误时,可以查看当前的运行日志,获取节点执行过程中的更多细节。

此外,您还可以在应用流页面右上角单击运行按钮右侧的图标查看运行历史,选择指定运行记录,查看链路或日志。

文档解析

支持使用系统内置的智能文档解析工具和AI搜索开放平台的文档解析服务。

  • 内置解析工具:可提取文档中的结构化内容与元数据信息,支持多种主流文档格式,包括:PDF、DOCX、PPTX、TXT、HTML、CSV、XLSX、XLS、JSONL 和 MD。

  • AI搜索开放平台:实现高精度的结构化文档解析,支持提取标题、段落等逻辑层级信息,以及文本、表格和图片等内容,可提升文档提取的效果与准确性,需先配置 AI搜索开放平台模型服务连接。支持的文件格式包括:PDF、DOCX、PPTX、TXT 和 HTML。

该工具支持后续用于 RAG、摘要、问答等场景。配置界面如下:image.png

  • 文档文件:输入单个文档文件进行智能解析,提取结构化内容。选择来自上游的文件类型字段。

  • 模型设置:(可选)选择在LangStudio上已创建的 AI搜索开放平台模型服务连接。若未配置,系统将默认使用内置的基础解析方法处理上传的文件。

  • 输出结果:

    • file_id:输入文件的唯一标识符

    • content:解析出的结构化文本内容,包含标题、段落等层级信息

    • status:解析状态,可能值为 SUCCESS 或 FAIL

    • metadata:文档的元数据信息和解析详情

      • file_name:文件名

      • file_type:文件类型

      • source_uri:文件原始 URI

      • download_url:文件可下载 URL

      • analysis_method:使用的解析方法。"opensearch" 表示使用AI搜索开放平台的结构化解析,"builtin" 表示使用内置的基础解析方法。

下游使用示例:在下游节点按需引用文档解析节点的结果字段,如果要在LLM节点中使用文档解析结果,可以参考如下方式在用户提示词中引入文档解析后的内容:

image.png

语音识别

使用语音识别工具将音频或视频文件转换为文本。支持多种音频格式和语言识别。

输入

  • 模型设置:配置语音识别模型,当前支持阿里云百炼提供的语音识别服务。推荐使用 paraformer-v2以获得更优识别效果及多语言支持。

  • 音视频文件:选择需要识别的音频或视频文件。支持的格式详见文件类型输入输出

  • 识别语言:指定音频识别时的语言类型,支持中文、英文、日语、粤语、韩语、德语、法语、俄语或自动检测。注意:该功能仅paraformer-v2模型支持,其他模型将默认使用自动语言检测。

输出

  • file_id:输入文件的唯一标识符。

  • status:识别状态,可能值为 SUCCESSFAIL

  • content:转录的文本内容。

  • segments:句子片段信息列表,包含时间戳、文本片段等详细信息。

  • metadata:文件的元数据信息,包含:

    • file_name:文件名

    • file_type:文件类型

    • source_uri:文件URI

    • download_url:文件下载URL

数据检索

配置以下节点请参见数据检索节点

  • 知识库检索

  • 阿里云IQS-联网搜索

  • SerpAPI-联网搜索

  • HTTP请求

数据处理

Python开发(Python

应用流支持自定义Python代码的节点,可以实现复杂的数据处理逻辑,支持流式输入和流式输出。配置界面如下:

image

只需填写Python代码,输入输出会根据代码自动解析。注意以下事项:

  • 执行入口函数需要被@tool装饰,才可以被加载为一个节点。

    说明

    当需要Python节点支持输入流时,必须配置 @tool(properties={"streaming_pass_through": True}),否则给到Python节点的LLM等输入都会是完整的输出文本。

  • 函数支持的输入/输出类型:int、float、bool、str、dict、TypedDict、dataclass(只支持输出)、list、File。

  • 入口函数的入参会被动态解析成节点的输入,输出会被放到output字典中,可以被其他节点引用。

    重要

    Python节点的输入/输出参数的自动解析,依赖于运行时。在没有启动运行时的情况下,无法配置节点的输入/输出信息。

  • 如果Python代码需要安装相应的依赖,在画布右上方,选择安装依赖,填写依赖包。requirements.txt文件会同应用流一起保存,在启动运行时,或是部署服务时安装依赖到对应的环境里。

    image

    image

使用案例1:在代码区域输入以下代码,代码会被映射为节点的输入和输出:

from langstudio.core import tool
from dataclasses import dataclass

@dataclass
class Result:
    output1: str
    output2: int

@tool
def invoke(foo: str, bar: int) -> Result:    
    return Result(
        output1="hello" + foo,
        output2=bar + 10
    )

image

使用案例2流式输入输出。使用Python节点对大模型/Agent等节点输出的包含思考过程的文本流进行裁剪,丢弃<think>\n\n<think>部分思考内容,可获得一个最终结果文本输出流。示例代码如下:

import re
from typing import Iterator
from langstudio.core import tool

@tool(properties={"streaming_pass_through": True})
def strip_think(
    stream: Iterator[str],
) -> Iterator[str]:  # 输入为流式字符串迭代器,输出为过滤后的流式字符串迭代器
    # 匹配 <think>\n...\n</think> 结构,并捕获结束标签后的文本
    pattern = re.compile(r"<think>\n[\s\S]*\n</think>(.*)")
    in_thinking = True  # 标记当前是否处于 <think> 块内部
    think_buf = ""      # 缓冲区,用于存储未处理完的内容

    for chunk in stream:
        if in_thinking:
            think_buf += chunk
            m = pattern.search(think_buf)  # 检查缓冲区是否含完整的思考块
            if m:
                in_thinking = False
                result_part = m.groups()[0]
                if result_part:
                    yield result_part  # 若结果文本存在,立即输出
        else:
            yield chunk  # 已经脱离思考块,直接输出后续所有chunk

模板转换

模板转换工具允许借助 Jinja2 模板语法,实现灵活的文本格式化和数据转换。

输入

转换模式支持Jinja2模式节点引用模式。

  • Jinja2 模式:使用完整的 Jinja2 模板语法自定义输出格式。适用于复杂的结构化输出、条件判断、循环渲染等。

    • 模板变量:定义模板中使用的变量。

      重要

      变量名不能使用Python内建方法名,如itemskeysvalues等。建议使用明确的字段名,如item_listproduct_list等。

    • 模板内容:使用Jinja2语法编写的模板字符串。支持变量替换{{ variable }}、循环{% for %}、条件判断{% if %}、过滤器{{ value | filter }}等完整语法。

      重要

      模板中引用的所有变量必须在变量列表中定义,否则会报错。

  • 节点引用模式:直接引用上游节点输出,自动拼接为字符串。适用于简单的文本组合场景。

    • 模板内容:选择上游节点的输出字段,系统自动按顺序拼接。

输出

output:模板渲染后的文本结果。注意:输入输出模板内容长度均限制为100000字符,超出部分将被截断。

使用示例

示例1:订单确认邮件生成

变量配置:

变量名

变量值

customer_name

"张三"

order_id

"ORD-2025-001"

products

[{"name": "笔记本电脑", "price": 8999}, {"name": "无线鼠标", "price": 199}]

total

9198

模板内容:

尊敬的 {{ customer_name }}:

您的订单 {{ order_id }} 已确认,详情如下:

{% for product in products %}
- {{ product.name }}: ¥{{ product.price }}
{% endfor %}

总计: ¥{{ total }}

感谢您的购买!

输出结果:

尊敬的 张三:

您的订单 ORD-2025-001 已确认,详情如下:

- 笔记本电脑: ¥8999
- 无线鼠标: ¥199

总计: ¥9198

感谢您的购买!

示例2:知识库检索结果格式化

变量配置:

变量名

变量值

chunks

[{"title": "产品介绍", "content": "这是产品的详细介绍...", "score": 0.95}]

模板内容:

{% for chunk in chunks %}
### 相关度: {{ "%.2f" % chunk.score }}
#### {{ chunk.title }}
{{ chunk.content }}
---
{% endfor %}

输出结果:

### 相关度: 0.95
#### 产品介绍
这是产品的详细介绍...
---

列表操作

通过列表操作工具,可以对各类列表数据执行灵活的过滤与排序操作,实现数据的精细化处理与筛选。

输入

  • 列表输入:需要处理的列表数据。支持任意子类型(字符串、数字、布尔值、文件对象、字典)。

  • 操作:按顺序执行的链式操作序列。支持过滤、排序两种操作类型。

    • 过滤操作(filter):过滤操作根据输入列表的类型,动态提供不同的过滤方式。注意:各项过滤操作均对大小写敏感。

      过滤键

      说明

      适用范围

      索引

      基于元素在列表中的位置过滤

      适用于所有列表类型

      元素值

      基于元素本身的值进行过滤

      适用于所有列表类型

      自定义属性

      基于自定义的属性进行过滤

      仅适用于字典类型列表

      文件属性

      基于文件的属性进行过滤

      仅适用于文件类型列表

      可选属性:

      • file_id:文件id

      • file_name:文件名

      • file_type:文件MIME类型

      • source_uri:文件URI

      • download_url:文件下载URL

      • category:文件分类,可选值:documentimageaudiovideo

      • extension:文件后缀,如.jpg

    • 排序操作(sort):排序操作根据输入列表的类型,提供不同的排序方式。

      排序键

      说明

      适用范围

      元素值

      基于元素本身的值进行排序

      仅适用于字符串、数字、布尔值列表类型

      自定义属性

      基于自定义的属性进行排序

      仅适用于字典类型列表

      文件属性

      基于文件的属性进行排序

      仅适用于文件类型列表,可选属性与过滤操作一致

输出

  • result:处理后的列表结果。

  • first_item:结果列表的第一个元素,如果列表为空则为None。

  • last_item:结果列表的最后一个元素,如果列表为空则为None。

使用示例

示例1:文件分类处理 - 筛选图片文件并按大小排序取前3

场景:用户上传了包含各类文件的混合列表,需要筛选出图片文件,按文件名长度排序,并只保留前3个用于后续的图像识别处理。

操作配置:

操作1 - 过滤(按文件分类):
  过滤键: item.category
  过滤操作符: 等于
  过滤值: image

操作2 - 排序(按文件名长度):
  排序键: item.file_name
  排序方向: asc

操作3 - 过滤(取前3个):
  过滤键: index
  过滤操作符: 小于
  过滤值: 3

image.png

示例2:数据分析 - 筛选高分用户并获取 Top 5

场景:从用户评分列表中筛选出分数大于等于80分的用户,按分数降序排列,取前5名。

输入列表:

[
  {"name": "张三", "score": 95, "department": "技术部"},
  {"name": "李四", "score": 72, "department": "市场部"},
  {"name": "王五", "score": 88, "department": "技术部"},
  {"name": "赵六", "score": 91, "department": "产品部"},
  {"name": "钱七", "score": 65, "department": "市场部"},
  {"name": "孙八", "score": 98, "department": "技术部"}
]

操作配置:

操作1 - 过滤(筛选高分用户):
  过滤键: item.score
  过滤操作符: 大于等于
  过滤值: 80

操作2 - 排序(按分数降序):
  排序键: item.score
  排序方向: desc

操作3 - 过滤(取前5名):
  过滤键: index
  过滤操作符: 小于
  过滤值: 5

image.png

输出结果:

[
  {"name": "孙八", "score": 98, "department": "技术部"},
  {"name": "张三", "score": 95, "department": "技术部"},
  {"name": "赵六", "score": 91, "department": "产品部"},
  {"name": "王五", "score": 88, "department": "技术部"}
]

注意事项:

  • 若工具输入引用 Python 节点自定义的list类型输出变量,建议在 Python 节点中定义出明确的列表元素类型,如list[str],从而在列表操作节点中获得更准确的操作符匹配。