Skip to main content

本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。

概述#

工具以消息和变量的形式返回结果。本页介绍消息接口、变量创建和输出模式定义。

数据结构#

消息返回#

Dify 支持多种消息类型,包括文本、链接、图片、文件 blob 和 JSON,每种类型都通过专用接口返回。

默认情况下,工作流中工具的输出包含三个固定变量:files、text 和 json。以下方法用于填充这些变量。

Tip

虽然你可使用 create_image_message 等方法返回图片,但工具也支持自定义输出变量,从而更便于在工作流中引用特定数据。

消息类型#

参数
imagestringrequired#

将被下载并显示的图片 URL

textstringrequired#

要显示的文本内容

blobbytesrequired#

字节格式的原始文件数据

metadict#

文件元数据,包括:

  • mime_type:文件的 MIME 类型(例如 image/png)
  • 与文件相关的其他元数据
jsondictrequired#

要序列化为 JSON 的 Python 字典

Tip

处理文件 blob 时,请始终在 meta 字典中指定 mime_type,以确保文件得到正确处理。例如:{"mime_type": "image/png"}。

变量#

参数
variable_namestringrequired#

要创建或更新的变量名称

variable_valueAny/stringrequired#

要分配给变量的值:

  • 标准变量:任何 Python 数据类型
  • 流式变量:仅支持字符串数据
Warning

create_stream_variable_message 目前仅支持字符串数据。复杂数据类型无法通过打字机效果进行流式输出。

自定义输出变量#

要在 Workflow 应用中引用工具的输出变量,需在工具清单中使用 JSON Schema 声明工具可能输出的变量。

定义输出模式#

模式结构
output_schemaobjectrequired#

定义工具输出模式的根对象

typestringrequired#

工具输出模式必须为 object

propertiesobjectrequired#

所有可能输出变量的字典

properties.[variable_name]object#

每个输出变量的定义,包括其类型和描述

Warning

仅定义输出模式还不够:实现代码仍须使用 create_variable_message() 返回每个变量。否则,工作流将收到该变量的 None 值。

实现示例#

Tip

对于复杂的工作流,您可以定义多个输出变量并全部返回。这为工作流设计者使用您的工具时提供了更大的灵活性。

示例#

完整的工具实现#

Tip

设计工具时,请同时考虑直接输出(用户看到的内容)和变量输出(其他工作流节点可以使用的内容)。这种分离为工具的使用方式提供了灵活性。