在Dify中我们可以创建五种类型的应用。我们分别来介绍下。
聊天助手 基于 LLM 构建对话式交互的助手,这个非常简单,我们可以来创建一个简单的聊天助手应用来看看效果。
提示词 对于在中间的有一块 编排中,我们可以添加我们的 提示词,赋予 聊天助手 特定的功能。
变量 如果我们需要在这个基础上增加不同语言的翻译功能,这块我们可以添加对应的变量。来拓展这个功能。
添加了变量后我们还需要和上面的提示词关联起来。具体的效果为
知识库 我们新建一个应用来介绍下知识库的内容。
然后我们问一些比较新的问题,你会发下大模型要么回答不了。要么开始胡说八道了。
这时我们可以在知识库中导入相关的知识内容。
到这儿 聊天助手 相关的内容就介绍完了。
文本生成应用 面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等
比如翻译工具。我们在这个基础上快速的实现:
Agent
智能助手(Agent Assistant),利用大语言模型的推理能力,能够自主对复杂的人类任务进行目标规划、任务拆解、工具调用、过程迭代,并在没有人类干预的情况下完成任务。能够分解任务、推理思考、调用工具的对话式智能助手,是一个更加强大的功能应用了。
进入主界面后我们可以看到相比前面的聊天助手来说多了一个工具的功能。
然后我们点击添加 后弹出对话框,我们可以在这里选择对应的工具。
默认的就这么几个。简单测试下。比如添加时间插件。然后问大模型今天的日期。他就会调用这个工具来回复我们了。
也就是在Agent中。大模型可以根据我们的需求自主编排的选择我们提供的工具来完成我们的需求。
Chatflow 面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
然后就可以来设计下这个工作流的各个节点了:
开始节点
大模型节点
对应的提示词
请根据 {{#sys.query#}}} 和今天的天气情况 {{#1744875520682.weather#}}}
写几句有诗意的散文诗,并且生成一段话描述这个场景的画面感。
-
诗词或者散文请富有文学系和哲理,诗句示例: 万千生命如画卷徐徐展开,恍若荷叶晨露,转瞬即逝。
-
诗词请保持输出两句话,不一定需要城市名称,但要突出城市或者当天的天气
请严格按照以下格式输出 { "poetry":<输出散文诗> "img_des":<输出描述诗词画面感的语句> "date":<今天的日期,格式示例: 11月28日周四> } 运行项目并下载源码
直接回复节点,回复的就是大模型的输出内容了
测试效果
工作流 面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。
创建后的效果,有一个开始节点,然后我们可以选择其他不同类型的节点来处理
这里我们同样选择一个LLM节点
在LLM节点后我们再添加一个结束节点。
在开始节点我们设置两个输入 城市和天气
在大模型中设置和前面相同的提示词
在结束的位置输出大模型的输出信息
然后测试即可
3.2 工具篇 系统工具 我们可以在头部的 工具 标签进入
然后再dify市场中选择我们需要的工具,比如 硅基流动 的工具
选中后点击安装
等待下载安装即可:
安装成功就可以在插件或者工具中看到了
然后回到之前的Agent 案例中。我们可以加入这个工具
第一次使用提示你需要授权:
进入对应的官网。注册登录后获取API key
可以选择适合自己的方式
然后我们尝试来使用,发现这个工具好像并不好用。
在这种情况下我们可以结合工具官方的API来实现自定义工具的使用。
自定义工具
官方提供的工具在某些场景下并不能满足我们的需求。这时我们可以创建我们自己的工具来解决这个问题。我们创建一个通过 硅基流动 工具来帮我们生成图片的工具。
设置的工作流
相关节点介绍
添加一个http请求节点来发起请求: 官方的地址: 创建图片生成请求 - SiliconFlow
通过然后模型来提取信息
然后是代码执行的逻辑。处理多个图片信息
from typing import Any, Union
def main(data: Any) -> str: """ 从复杂数据结构中安全提取第一个URL(优化版) :param data: 支持 dict/list/str 的任意嵌套数据结构 :return: 总是返回字符串类型,找不到时返回空字符串 """
def extract_url(value: Union[dict, list, str]) -> str:
""" 递归提取的核心逻辑 """
if isinstance(value, str):
return value if value.startswith(('http://', 'https://', 'data:image')) else ''
if isinstance(value, dict):
# 优先检查单数形式字段
for field in ['url', 'image', 'link', 'src']:
if field in value:
found = extract_url(value[field])
if found: return found
# 检查复数形式字段
for list_field in ['urls', 'images', 'links', 'sources']:
if isinstance(value.get(list_field), list):
found = extract_url(value[list_field])
if found: return found
# 深度搜索字典值
for v in value.values():
found = extract_url(v)
if found: return found
if isinstance(value, list):
for item in value:
found = extract_url(item)
if found: return found
return ''
return {"result":extract_url(data)}
运行项目并下载源码 python 运行
在结束节点返回图片地址
测试效果
生成的图片效果
然后可以把这个发布为工具
然后我们就可以来测试下工具的使用了。还是上面的案例
查看具体的图片
导出DSL 如何分享我们的Dify案例给别人呢?在官方提供了导出DSL的功能,也就是我们只需要选择对应的案例,然后导出对应的DSL文件即可。
我们获取到这个dsl文件后。我们就可以把这个案例导入到我们自己的Dify工作空间了。