Tool
类中定义了一系列快捷方法,用于帮助开发者快速构较为复杂的工具。
文本
链接
图片
文件BLOB
等多种消息类型,你可以通过以下几个接口返回不同类型的消息给 LLM 和用户。
注意,在下面的接口中的部分参数将在后面的章节中介绍。
图片URL
只需要传递图片的URL即可,Dify会自动下载图片并返回给用户。
blob
文件的原始数据,bytes 类型meta
文件的元数据,如果你知道该文件的类型,最好传递一个mime_type
,否则Dify将使用octet/stream
作为默认类型user_agent
是可选参数,可以用来识别工具,如果不传递,Dify将使用默认的user_agent
。
Tool
中引入了一个变量池,用于存储工具运行过程中产生的变量、文件等,这些变量可以在工具运行过程中被其他工具使用。
下面,我们以DallE3
和Vectorizer.AI
为例,介绍如何使用变量池。
DallE3
是一个图片生成工具,它可以根据文本生成图片,在这里,我们将让DallE3
生成一个咖啡厅的 Logo。Vectorizer.AI
是一个矢量图转换工具,它可以将图片转换为矢量图,使得图片可以无限放大而不失真,在这里,我们将DallE3
生成的PNG图标转换为矢量图,从而可以真正被设计师使用。self.VARIABLE_KEY.IMAGE.value
作为图片的变量名,为了便于开发者们的工具能够互相配合,我们定义了这个KEY
,大家可以自由使用,也可以不使用这个KEY
,传递一个自定义的KEY也是可以的。
Vectorizer.AI
接下来我们使用 Vectorizer.AI,将 DallE3 生成的PNG图标转换为矢量图,我们先来过一遍我们在这里定义的函数,代码如下
image_id
,我们已经假设了调用这个工具的时候一定有一张图片在默认的变量池中,所以直接使用了image_binary = self.get_variable_file(self.VARIABLE_KEY.IMAGE)
来获取图片,在模型能力较弱的情况下,我们建议开发者们也这样做,可以有效提升容错率,避免模型传递错误的参数。