This document provides a detailed introduction to the data structure and usage of Tools in Dify plugins. It covers how to return different types of messages (image URLs, links, text, files, JSON), how to create variable and streaming variable messages, and how to define tool output variable schemas for reference in workflows.
text
, links
, images
, file BLOBs
, and JSON
. You can return different types of messages through the following interfaces.
By default, a tool’s output in a workflow
includes three fixed variables: files
, text
, and json
. You can use the methods below to return data for these three variables.
For example, you can use create_image_message
to return an image, but tools also support custom output variables, making it more convenient to reference these variables in a workflow
.
blob
The raw data of the file, in bytes type.meta
The metadata of the file. If developers need a specific file type, please specify mime_type
, otherwise Dify will use octet/stream
as the default type.object
A Python dictionary object that will be automatically serialized to JSON.answer
node in a chatflow
application and reference this variable, the text will be output with a “typewriter” effect. However, currently this method only supports string type data.
workflow
application, it’s necessary to define in advance which variables might be output. Dify plugins support output variable definitions in json_schema
format. Here’s a simple example:
output_schema
for it, which includes a name
field that can be referenced in a workflow
. However, please note that you still need to return a variable in the tool’s implementation code to actually use it, otherwise you will get a None
return result.