Tool
Last updated
Last updated
Before reading the detailed interface documentation, make sure you have read and have a general understanding of the Dify plugin's tool access process.
Dify supports multiple message types including text
, links
, images
, file BLOBs
, and JSON
. You can return different types of messages through various interfaces.
By default, a tool's output in a workflow
contains three fixed variables: files
, text
, and json
. You can return data for these three variables using the methods below.
For example, use create_image_message
to return images. Tools also support custom output variables for easier reference in workflow
.
Simply pass the image URL, and Dify will automatically download and return the image to users.
Use this interface to return a link:
Use this interface to return a text message:
Use this interface to return raw file data (images, audio, video, PPT, Word, Excel, etc.):
blob
: Raw file data in bytes
meta
: File metadata. Specify mime_type
if needed, otherwise Dify uses octet/stream
as default
Use this interface to return formatted JSON. Commonly used for data transfer between workflow nodes. Most large models can read and understand JSON in agent mode.
For non-streaming output variables, use this interface. Later values override earlier ones:
For typewriter-effect text output, use streaming variables. If you reference this variable in a chatflow application's answer node, text will display with a typewriter effect. Currently only supports string data:
To reference tool output variables in workflow applications, you need to define possible output variables beforehand. Dify plugins support json_schema
format output variable definitions. Here's a simple example:
This example defines a simple tool with an output_schema
containing a name
field that can be referenced in workflow
. Note that you still need to return a variable in the tool's implementation code for actual use, otherwise it will return None
.