用 Dify 零代码打造 AI 智能体

最近我一直在忙着开发基于 GPT-4o 和 Claude 3 的应用,不过自从接触了 Dify,我就忍不住觉得 “有它就够了啊”。

这次我就用 Dify 打造了一个 “当 LLM 自身知识不足时会通过 Google 搜索获取答案的聊天机器人”。

能通过 Google 搜索作答的聊天机器人

  1. 概述1.1 什么是 Dify
  2. 环境搭建
  3. 应用创建3.1 各模块的简单说明
  4. 实际运行测试
  5. 总结

1. 概述

1.1 什么是 Dify

Dify 是一个用于开发基于大型语言模型(LLM)的应用程序的开源平台。

我认为它有以下 4 个值得关注的特点:

  • 可通过图形用户界面(GUI)轻松创建能执行复杂任务的 AI 智能体
  • 可全面支持多种模型(ChatGPT、Bedrock、Llama 等)
  • 可将创建的智能体作为 API 发布,并集成到现有应用程序中
  • 内置 LLMOps(大语言模型运维)功能

本次将重点关注第 1 点和第 2 点。

2. 环境搭建

Dify 也提供 SaaS 服务,但本次我们将使用 Docker 容器在本地搭建服务器并运行。

由于官方提供了 docker-compose.yaml 文件,因此可轻松在本地启动服务。

  1. 从 Github 获取代码
    bashgit clone https://github.com/langgenius/dify.git
  2. 酌情编辑 docker/docker-compose.yaml
    文件建议添加name: dify
  3. 通过 Docker Compose 启动服务器
    docker compose -f docker/docker-compose.yaml up -d
  4. 访问http://localhost
  5. 显示用户创建页面,在此创建用户即可

3. 应用创建

  1. 点击 “工作室”>“创建应用”>“从头创建”
从头创建

2. 选择 “聊天机器人”>“Chatflow”,并输入应用名称

选择 Chatflow

3. 通过连接模块来创建应用

通过连接模块创建应用

3.1 各模块的简单说明

1. 问题分类器 “问题分类”

利用 LLM 将用户的问题分类到多个类别中。

根据分类结果切换后续处理流程,即可创建具备多种功能的智能体。

2. LLM “聊天”“问答(Q&A)”“历史摘要”“回答生成”

指定模型、系统提示词、用户输入等参数来调用 LLM。

每个模块都可单独指定模型,这一点非常好。

本次实践中,为了实现高速化和低成本,后台处理使用 GPT-3.5-Turbo;而在最终向用户返回答案的环节,则使用 GPT-4o 以确保输出质量。

3. 参数提取 “查询提取”

可从用户输入中提取后续模块所需的参数,功能类似 Function calling。

该模块提供 “从工具导入” 选项,因此基本无需自行设置参数,非常便捷。

4. GoogleSearch

顾名思义,该模块可通过 Google 进行搜索,并以 LLM 可读取的格式返回结果。

由于其内部使用 SerpApi,因此需要注册账号并设置 API 密钥。

5. 输出

指定作为聊天机器人回复返回给用户的字符串。

4. 实际运行测试

使用 “调试与预览” 功能,确认流程是否按预期分支、能否正常执行搜索。

下图中蓝色高亮的线条表示根据分支结果实际执行的流程。

测试 1:询问常识性问题

用户:葡萄酒发酵后会变成醋,是真的吗?

问答(Q&A):是的,在某种程度上是真的。葡萄酒长时间接触酶时,酵母或细菌会将酒精转化为醋酸,从而变成葡萄酒醋(醋)。这是由一种名为醋酸杆菌的细菌作用导致的。但通常葡萄酒的发酵是生成酒精的过程,因此在管理得当的环境下不会变成醋。

常识性问题

各模块执行时间

序号模块执行时间(秒)
1Start0.001
2问题分类1.317
3问答(Q&A)1.693
4输出0.004
合计3.076

测试 2:询问专业知识

用户:请介绍一下 Amazon Bedrock

GoogleSearch:content: What is Amazon Bedrock? … Using Amazon Bedrock, you can easily experiment with and evaluate top FMs for your use case, privately customize them with your data …link: https://aws.amazon.com/bedrock/content: With this new capability, AWS makes it easy for organizations to choose a combination of Amazon Bedrock models and their own custom models via …link: https://www.aboutamazon.com/news/aws/amazon-bedrock-new-innovations-generative-ai-applications<省略>

回答生成:Amazon Bedrock 是 AWS 提供的全托管服务,可让用户使用来自主流 AI 企业的基础模型(Foundation Models, FMs)。用户可根据自身使用场景,轻松对这些模型进行实验和评估,还能使用自己的数据私下定制模型。该服务可通过 API 访问,方便企业结合使用 Amazon Bedrock 模型和自定义模型。详情请查看此处。

专业知识

各模块执行时间

序号模块执行时间(秒)
1Start0.001
2问题分类1.141
3历史摘要2.708
4查询提取0.818
5GoogleSearch1.050
6回答生成3.799
7输出0.002
合计9.612

测试 3:进行非提问式聊天

用户:今天又去健身房了,好累啊

聊天:辛苦了!这可是努力过的证明呢。你今天做了什么训练呀?

非提问式聊天

各模块执行时间

序号模块执行时间(秒)
1Start0.001
2问题分类1.117
3聊天0.578
4输出0.001
合计1.732

可以看到,系统能正常切换 “使用 LLM 知识的问答” 和 “使用 Google 搜索的 RAG(检索增强生成)” 流程。此外,由于我们已指示系统对非提问式输入进行轻松回应,因此能像后一个例子那样进行愉快的对话,而不是像前两个例子那样给出事务性的回答。

只需用鼠标连接模块,再用日语输入简单指令,就能打造出这样的 AI 智能体,实在太强大了。

另外,本次虽然只使用了 GPT-3.5-Turbo 和 GPT-4o,但也可以连接 Bedrock 使用 Claude 3。而且只需通过下拉菜单更改所选模型即可,操作非常简便,因此可以轻松根据任务指定合适的模型。

5. 总结

本次我们使用 Dify 打造了 “知识不足时通过 Google 搜索获取答案的聊天机器人”。

如前所述,使用 Dify 只需通过 GUI 就能轻松创建复杂的 AI 智能体,实在没有理由不用它。

此外,除了本次用到的功能外,Dify 还有自定义工具(Custom Tool)、API 发布等众多极具吸引力的功能。我希望能熟练运用所有功能,打造出最棒的 AI 智能体。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注