保姆教程篇:手把手教你从零开始本地部署Dify

本教程将指导您在个人电脑上安装和配置 Dify。

为什么需要Dify

在开始具体的教程之前,先搞清楚为什么要选择 Dify。

6 月份,阿里巴巴全球数学竞赛中,首次接受AI参赛。结果令人大跌眼镜:AI选手们的表现完全无法与人类选手相提并论。

在这里插入图片描述

后来的各大媒体转发,想必你也已经知道,"AI在数学领域的能力还远远不够”。

但是另一方面,一个关键的细节似乎被忽略了。

之后一些AI博主开始对着这些题目[1],亲自尝试用当前最先进的AI模型来解答这些数学题,设计出五花八门天花乱坠的提示词,各种”专家“,思维链等buff叠满,结果如何?很可惜,大家得到的都是同一个令人沮丧的答案——0分。

但是这些参赛的AI可是取得34分的成绩!这几乎是不可想象。

但是你有没有想过,如果我们自己用当前的AI模型来做一遍的话,几乎是0分!但是为什么这些AI可以做到34分呢?

答案就在于,参赛的前三名AI都采用了一种称为"多智能体(Multi-Agent)"的方法。与单一模型不同,这种方法运用了多个智能体协同工作,通过判断和综合求解来得出最终答案。34分同学在个人博客中分享的他们的方案设计[2]:

在这里插入图片描述

单一的AI模型,无论多么先进,都有其局限性。但当我们将多个智能体组合在一起时,它们的潜力将被极大地释放。

你,需要重新认识AI 智能体。

当然,”AI 智能体“对你来说可能已经是一个不陌生的概念,在不同的语境中,又可以被叫做"GPTs"或者"AI Agent"。

现在,不同的模型厂商均提供了智能体的创作或者使用。

在这里插入图片描述

这些智能体相当于封装了一个又一个的提示词黑箱,省去了你独自编写提示词的过程。

比如我曾经在 GPT 商店发布过一个自己创作的智能体,「角色注入提示词」,受到了很多人的喜欢。这个智能体的作用就是你只需要把自己的「意图」输入,就可以得到一段「角色注入」提示词,也就是"你现在是 xxx 专家,精通 xxx"这样的话就不需要自己去琢磨如何写。

在这里插入图片描述

如果只到这一步,那么你完全不需要用到 Dify,或者 Dify 仅仅可以作为你在本地使用自己部署的大模型的 Web UI。

但 Dify 的优势可不仅限于此,它真正的价值在于——模型编排(不同的语境下也叫做智能体设计,Agent Design,现在还有一个专门的职业是Agent Designer,专门用于设计智能体的)

什么是模型编排呢?简单理解就是负责通过智能体的组合设计,来实现更加复杂、更加智能,从而突破现有模型的能力边界。

举一个最简单的日常场景,比如,我们可以在Poe中用上Claude-Opus的200K版本,这个当前最强大的长文阅读理解模型。

在这里插入图片描述

不过它用起来实在是太贵了…每一次要消耗12000积分,也就是一个月的额度几十次就问没了。

这还不是最麻烦的,最麻烦的是,我们并非所有的问题,都用到200k的版本,比如再一次回答中,大模型输出了一个你看不懂的概念,此时你希望它可以翻译为容易理解的中文版本,那么此时完全没必要用当前的200k版本。可是如果此时切换到普通版本,上下文会丢掉,如果继续使用200k的版本,又会觉得有点浪费。当然现在有很多API-WebUI可以实现自由切换定义模型的配置,但是又不够智能……我如果希望,模型可以根据我的问题,自由的去选择不同的模型或者是模型版本来做回答,就必须得用上模型编排。

再比如,最近360就搞了一个”复仇者联盟“,与国内15家大模型开发商合作,推出一款AI搜索应用产品「360 AI助手」[3]。

我搞不过你GPT4.0没关系,我们所有人加在一起就可以搞定你!

在这里插入图片描述

本质上所做的,就是模型编排。

在这里插入图片描述

以上,简单介绍到这里,那么今天就来介绍一款非常适合用于模型编排的工具,Dify。

Dify 允许你将不同的智能体组合在一起,构建出更加强大和复杂的 AI 应用。你可以让一个智能体负责理解用户的输入,根据输入的特点进行转发给另一组用于回答的智能体中最适合处理该问题的一个,用于负责生成回答,再由一个专门的智能体对回答进行优化和修正。通过这种方式,你可以发挥每个智能体的长处,弥补它们的不足,最终得到一个性能更好、更加稳定的 AI 系统。

此外,Dify 还提供了一个直观的图形化界面,让你可以方便地管理和编排这些智能体。你不需要编写复杂的代码,只需要通过拖拽和连线,就可以定义智能体之间的交互和数据流动。这大大降低了开发 AI 应用的门槛,让更多人可以参与到这个领域中来。

在接下来的教程中,将一步步带你安装和配置 Dify,拿到入场券。

下面一步步来操作。

第一步:准备Docker

Docker 就像一个便携的软件箱子,它让您可以在不同的计算机上运行相同的程序,而无需担心复杂的安装过程。选择 Docker 的原因在于它大大简化了软件部署流程,避免了安装众多依赖软件的烦恼。

安装步骤:

(1)访问Docker官网:https://www.docker.com/products/docker-desktop/

在这里插入图片描述

(2)根据系统选择对应版本的Docker Desktop(本教程以 Windows 系统为例)

在这里插入图片描述

(3)按照安装向导一步步操作即可

在这里插入图片描述

(4)可能遇到的问题及解决方案

但是也许…未必一帆风顺,比如我在第一次安装的时候,打开之后就出现了下面的画面:

在这里插入图片描述

也就是在安装或更新 Docker Desktop 时,可能会遇到 WSL(Windows Subsystem for Linux)更新失败的问题。WSL 是 Docker Desktop 在 Windows 上运行所需的一个重要组件。如果出现这种情况,可以尝试在命令提示符或 PowerShell 中手动运行以下wsl --update命令来更新 WSL:

在这里插入图片描述

成功解决问题后,Docker Desktop 的界面应该正常显示了。

在这里插入图片描述

第二步:获取Dify代码

接下来,我们需要获取Dify的源代码。有两种方法:

方法1:使用Git克隆(推荐)

(1)打开Git bash
(2)输入命令:git clone https://github.com/langgenius/dify

在这里插入图片描述

方法2:直接下载

(1)访问 https://github.com/langgenius/dify
(2)点击绿色的"Code"按钮,然后选择"Download ZIP"

在这里插入图片描述

  1. 下载后解压文件

第三步:启动Dify

现在我们已经有了Dify的代码,接下来要启动它:

(1)先找到docker-compose.yaml文件所在的文件夹(通常在 dify 目录下的 docker 文件夹中)

在这里插入图片描述

进入docker-compose.yaml所在文件夹的终端中,运行命令:docker compose up -d

这个命令会启动在 docker-compose.yml 中定义的所有服务。

在这里插入图片描述

(3)等待Docker下载并启动所有必要的组件

在这里插入图片描述

安装成功后,在 Docker Desktop 中应该能看到以 docker 命名的文件夹,即为安装成功。

在这里插入图片描述

第四步:配置Dify

现在Dify已经运行起来了,让我们来配置它:

(1)打开浏览器,访问 http://127.0.0.1/,你会看到Dify的设置页面

在这里插入图片描述

(2)创建管理员账户:设置用户名、邮箱和密码(请务必牢记这些信息)

(3)完成之后,正式进入Dify的世界。

在这里插入图片描述

第五步:配置模型

请注意,安装 Dify 并不等同于下载了 AI 模型。

Dify 是一个运行在本地的 Web UI,它允许我们便捷地访问和使用各种大语言模型,但是需要注意的是,下载 Dify 并不等同于下载了这些模型本身,如果希望使用这些大模型,依然需要入场券,也就是需要拿到相应的 API Key,这部分是需要自己额外付费。

如何配置API Key呢,在设置页面中,点击「模型供应商」,选择您想使用的供应商(本教程以 Moonshot AI 为例),选择「Moonshot AI」,并点击设置。

在这里插入图片描述

输入月之暗面的KEY即可。

在这里插入图片描述

需要从 Moonshot AI 的官网获取 API Key。

访问以下网址:https://platform.moonshot.cn/console/api-keys

注意,你需要提前完成 Moonshot AI 账户的充值。

在这里插入图片描述

现在我将刚刚创建的API Key输入到之前的框中。

在这里插入图片描述

配置完成后,你应该能看到 Moonshot AI 提供的可选模型了。

在这里插入图片描述

这里提供了三个可选项

  • moonshot-v1-8k
  • moonshot-v1-32k
  • moonshot-v1-128k

不同的模型在能力和专业领域上可能有所不同。例如,moonshot-v1-8k 更适合处理短文本,而 moonshot-v1-128k 则在长文本生成和复杂问题解答上表现更好。你可以根据自己的需求选择合适的模型。

第六步:创建第一个应用

这篇文章里,先不做更复杂的设计,先来完成第一个最简单的Demo应用作为演示。

点击创建空白应用,比如我们想要创建一个智能翻译的助手。

在这里插入图片描述

输入对应的提示语,并且选择模型,右侧可以实时预览,如果效果不理想,就可以对应的调整左侧。

在这里插入图片描述

此时,点右上角的【运行】,就可以正式使用这个智能体应用了。

在这里插入图片描述

此时就已经实现了一个简单的模型的WebUI服务了。

在这里插入图片描述

至此,你已经成功搭建了一个简单的 AI 模型 Web UI 服务。

恭喜你完成了 Dify 的安装和基本配置!接下来,就可以进一步探索 Dify 的更多功能,创建更复杂、更强大的 AI 应用。

欢迎继续关注后续教程,将带你深入探讨 Dify 的进阶用法,做出真正实用的AI智能体。

参考资料

[1] 集成中国最强15款大模型,360打造AI全家桶测评比GPT-4o高18% https://mp.weixin.qq.com/s/nz2npNvjAvf6Rt2csjpKZw

[2] Solution Sharing and Some Thoughts about Alibaba Global Mathematical Competition for AI https://blog.richardstu.com/solution-sharing-and-some-thoughts-about-alibaba-mathematical-competition-for-ai

[3] 我用ChatGPT做了一下姜萍的数学竞赛题,它懵了,我也懵了。 https://mp.weixin.qq.com/s/3tagHhPgb-H2wOafLW2OwA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397793.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

萌啦数据软件价格多少,萌啦数据软件价格是多少

在当今这个数据驱动的时代,无论是企业运营、市场分析还是个人研究,都离不开高效、准确的数据处理与分析工具。萌啦数据软件,作为业界一颗璀璨的新星,凭借其强大的功能、友好的用户界面以及灵活的数据处理能力,赢得了众…

[SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)

打开题目所给的环境我们可以看到这样一句话: 这里我先尝试访问/hint.php ,但是发现什么都没有发生, F12查看源代码也并没有发现什么,到这里来看的话似乎没有思路了,但是这个题的题目已经给了我们很明显的提示&#xff…

类和对象(中)(1)

类和对象(中)(1) 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。 ⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是…

云计算实训24——python基本环境搭建、变量和数据类型、数据集合、py脚本

一、python环境搭建 确保拥有阿里云镜像 查看python环境 [rootpython ~]# yum list installed | grep python 查看epel是否安装 [rootpython ~]# yum list installed | grep epel 安装epel [rootpython ~]# yum -y install epel-release.noarch 查看是否安装python3 [rootpyt…

【数据结构】mapset详解

🍁1. Set系列集合 Set接口是一种不包含重复元素的集合。它继承自Collection接口,所以可以使用Collection所拥有的方法,Set接口的实现类主要有HashSet、LinkedHashSet、TreeSet等,它们各自以不同的方式存储元素,但都遵…

OceanBase V4.2特性解析:MySQL模式下GIS空间表达式的场景及能力解析

1. 背景 1.1. OceanBase Mysql gis空间表达式的应用场景及能力 在OceanBase 4.1版本中,mysql模式下支持了gis数据类型以及部分空间对象相关的表达式,随着客户使用空间数据的需求日益增长,需要快速地补齐空间数据存储和计算分析的能力&#…

实景三维:解锁地理信息新维度,引领未来城市智慧之钥

在这个信息爆炸与科技日新月异的时代,地理信息与遥感技术正以前所未有的速度改变我们认知世界的方式。在推动“实景三维平台”这一前沿科技的构建上,它不仅是地理信息的立体呈现,更是智慧城市的基石,打开了通往未来城市规划、管理…

C++设计模式(代理模式)

1. 电话虫 在海贼中,有一种神奇的通信工具叫做电话虫(Den Den Mushi),外形如蜗牛,身上带有斑点或条纹或通体纯色,壳顶上有对讲机或按键,不接通时会睡觉,接通时会惊醒,并发…

数据结构之链表

写在前面 链表是一种常用的线性数据结构,在jdk中也提供具体的实现类java.util.LinkedList。本文来看下其相关内容。 1:链表的特点 链表是一种由很多个节点组成的线性数据结构,每个节点都有一个指向下一个节点的引用,从而构成链…

Unity(2022.3.38LTS) - 下载,安装

目录 A. 简介 B. 下载和安装UnityHub C. 下载安装unity编辑器 安装页面 选择版本 添加模块 D.总结 A. 简介 Unity 是一款广泛使用的跨平台游戏开发引擎。 一、主要特点 跨平台性: 支持多种主流平台,包括 Windows、Mac、Linux、iOS、Android、Xb…

LeetCode_sql_day15(262.行程与用户)

描述:262. 行程和用户 - 力扣(LeetCode) 取消率 的计算方式如下:(被司机或乘客取消的非禁止用户生成的订单数量) / (非禁止用户生成的订单总数)。 编写解决方案找出 "2013-10-01" 至 "2013-10-03" 期间非禁止…

Vue 应用实例的关键方法与配置案例一

目录 createApp createSSRApp app.mount app.unmount app.component app.directive Vue3.X自定义全局指令 Vue2.X自定义全局指令 app.use app.mixin 非 VIP 用户能够免费下载博文资源 createApp createApp 是 Vue 3.0 中用于创建应用实例的方法。它接收一个…

127. Go反射基本原理

文章目录 反射基础 - go 的 interface 是怎么存储的?iface 和 eface 的结构体定义(runtime/iface.go):_type 是什么?itab 是什么? 反射对象 - reflect.Type 和 reflect.Value反射三大定律Elem 方法reflect.…

mysql中select的执行流程

目录 引言 SELECT查询语句的重要性 ​编辑引言部分重写示例: MySQL架构概览 MySQL架构概述 Server层的核心功能模块 知识点图文结合示例: 连接器的作用 连接器的职责 连接器职责 查询缓存的工作原理 查询缓存的概念 查询缓存的工作机制 查询…

虚幻引擎 C++ 实现平面阴影

1、平面阴影介绍 平面阴影是一种相对简单的渲染阴影的方式,可以理解为对一个模型渲染两次,一次是渲染模型本身,另一次是渲染模型的投影。渲染投影可以看作是将模型的顶点变换到地面的投影空间再渲染,可以理解为渲染了一个“压扁”…

Linux内核编程(十二)热插拔

本文目录 一、知识点1. 热插拔概念2. 热插拔机制3. Netlink机制 二、内核发送uevent事件到用户空间1. kobject发送uevent事件2. udevadm命令查看★示例代码:★优化:完善kset_uevent_ops(热插拔事件结构体) 三、用户空间使用Netlin…

Dubbo源码深度解析(四)

接上篇博客《Dubbo源码深度解析(三)》,上篇博文,主要讲的是DubboBootstrap#start()方法中调用到的其他方法,以及讲到ServiceConfig#export()方法的调用链路。其中讲到最核心的方法为ServiceConfig#doExportUrlsFor1Protocol(),还没…

CentOS7 配置 nginx 和 php 方案

配置方案 一、安装软件二、编写配置文件,连接PHP三、引用文件四、测试 鉴于网上教程错综复杂,写下一这篇文章 本教程只需要三步即可 一、安装软件 yum install -y nginx php php-fpm二、编写配置文件,连接PHP 一般情况下在安装完 nginx 后…

python-质因数分解(赛氪OJ)

[题目描述] 已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。输入格式: 输入一个正整数 n。输出格式: 输出一个正整数 p,即较大的那个质数。样例 #1样例输入 #1 21样例输出 #1 7提示: 1≤n≤2109 来…

无字母数字的绕过方法

php代码 <?phpif(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]/",$code)){die("NO.");}eval($code);}else{highlight_file(__FILE__);} 题目的限制&#xff1a; webshell…