零基础Dify入门

一、什么是AI agent

AI Agent,也就是人工智能体,可以简单理解为一个能自主干活儿的“数字员工”。

它不光能聊天,还能自己思考步骤、调用工具,去完成一个复杂的任务。

和普通的聊天AI相比,关键区别在于这“四个有”:

有脑子(大模型):负责理解和推理,是它的“指挥部”。

有手(工具调用):能实际做事,比如搜索网页、写邮件、操作软件、调用计算器。

有记忆(上下文管理):能记住你和它说过的话,以及做事的中间过程。

有规划(任务拆解):接到“帮我写一份行业报告”这种大任务,会自己拆成搜索资料、整理大纲、撰写内容等步骤去执行。

二、什么是Dify❓️

Dify (Do It For You)是一个用于构建 AI 应用的开源平台,开源的大语言模型(LLM)应用开发平台。你可以创建 Agent、Agentic 工作流和聊天机器人,让它们利用你自己的数据,并发布为 Web 应用或通过 API 集成。

特点:①低代码②功能完整强大③开源免费

Dify能做什么?
  1. 聊天助手:支持基于 LLM 的对话交互,可用于客服机器人、个人助理,具备多轮对话和上下文记忆能力
  2. 文本生成:自动生成文章、摘要、代码,或进行翻译、文档解析等任务,支持从 PDF、PPT 等格式提取文本
  3. Agent 工作流:可将复杂任务分解并调用工具,如论文查询、数据分析、Web 搜索或数据库操作,实现自动化任务处理
  4. RAG(Retrieval-Augmented Generation):结合向量化知识库和大模型生成内容,提高回答准确性和丰富度,适合企业知识库问答和商业智能场景
  5. 工作流编排:支持多节点流程设计,包括条件分支、API 调用和任务自动化,方便构建企业级 AI 工作流
三、Dify安装(以本机Windows示例)
1.基于WSL(默认方式)

看自己的版本号

2.启用虚拟机管理程序

搜索控制面板->程序->程序和功能->启用或关闭Windows功能,勾选☑️下图的两项内容:
在这里插入图片描述
然后根据提示重启电脑🔄

3.WSl验证和设置

进入终端(快捷键:Windows+R,输入cmd回车),输入命令:wsl --version
在这里插入图片描述
if出现上面👆的提示,按提示步骤更新wsl版本即可,也可以powershell以管理员身份运行,输入 wsl --update
在这里插入图片描述
这样应该就是ok✅了

4.安装docker desktop

查看自己电脑的设备信息,看系统类型那一行,去官网Docker Desktop: The #1 Containerization Tool for Developers | Docker安装对应的版本
在这里插入图片描述
进入到这个页面后自动更新配置

在这里插入图片描述这样就算安装成功了✅️

在这里插入图片描述
右下角显示这个图标Engine running就说明正在正常运行

在这里插入图片描述
在这里可以改资源存放路径(默认是C盘)

docker engine配置(根据版本不同可能会有报错,需要自行排错):

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "registry-mirrors": [
    "https://docker.1panelproxy.com",
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://dockerhub.icu",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]
}

在这里插入图片描述
验证docker是否安装成功

拉取一个镜像,没有error就说明镜像拉取操作成功,示例:
在这里插入图片描述也可以通过images验证:
在这里插入图片描述

5.克隆dify仓库

地址:http://github.com/langgenius/dify

解压完成后打开进入docker->:
在这里插入图片描述将红框文件重命名为 .env

6.启动Dify

先进入dify文件夹,找到docker文件夹,然后进入终端,接着按以下步骤进行操作:
在这里插入图片描述
清空地址栏,然后输入: cmd回车
在这里插入图片描述
这样就进入了

然后在当前cmd页面输入: docker compose up -d就会开始拉取镜像,耐心等待即可:
在这里插入图片描述在这里插入图片描述这样就算OK了

然后打开docker desktop桌面端,会发现多了很多镜像:

在这里插入图片描述
然后点Containers,看是否全部执行:
在这里插入图片描述

7.访问Dify

地址:https://cloud.dify.ai/apps

每次访问Dify之前,要保证Containers已经全部开启,然后进入Dify官网注册登录即可,出现下面这个界面说明已经成功进入了:
在这里插入图片描述

四、Dify接入大模型
1.安装Ollama
简介:

Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。
下载地址:Download Ollama on Windows
在这里插入图片描述下载适配自己版本的exe文件,然后install即可,耐心等待安装:
在这里插入图片描述在下面👇这个下拉框搜索🔍选择自己需要的模型(根据电脑性能自主选择):
在这里插入图片描述第一次使用模型它会自动下载:
在这里插入图片描述
模型下载成功之后你就可以问它一些基本的问题:
在这里插入图片描述
你也可以打开终端,输入: ollama list会显示你当前已经下载了的模型:
在这里插入图片描述
当然也可以在终端启动模型:
在这里插入图片描述

2.Dify中配置Ollama

先登录Dify进行设置,按如下操作:
在这里插入图片描述
可以从市场直接搜索Ollama:
在这里插入图片描述搜索到之后点击👆安装:
在这里插入图片描述然后回到设置界面,点击左侧侧边栏模型供应商选项:
在这里插入图片描述
看到模型列表已经存在ollama,说明安装插件成功

然后点击👆添加模型进行配置:
在这里插入图片描述
基础URL那一栏:

如果docker是同一机器部署Dify,就输入:http://host.docker.internal:11434

如果docker是不同机器部署Dify,就输入:http://192.168.x.x(自己IP):11434

如果配置不成功,可以尝试手动设置一下系统变量:
在这里插入图片描述
如果不成功,试一下把防火墙放开端口11434:
在这里插入图片描述
出现下面界面就是安装成功了:
在这里插入图片描述然后你可以去创建自己的应用:

在这里插入图片描述可以在调试与预览页面对它进行提问,右上角显示的是调用的本地模型:
在这里插入图片描述

五、Dify接入API大模型

大模型API是为大型预训练模型提供的接口,开发者可以通过它在应用程序中调用模型能力(且无需自己部署和维护模型),实现智能化功能。

1.注册阿里云账号

地址:大模型服务平台百炼 - 大模型应用构建 - 阿里云

首次登录点击👆注册:
在这里插入图片描述
进入:大模型服务平台百炼控制台,创建自己的api key:

在这里插入图片描述

2.在Dify中配置API Key

在Dify中搜索通义千问模型供应商安装:
在这里插入图片描述
在下面这个页面配置你的api key:
在这里插入图片描述
然后可以用自己的聊天助手调用千问模型:
在这里插入图片描述
可以问它一些问题:
在这里插入图片描述

六、掌握提示词
1.什么是提示词

提示词工程(Prompt Engineering)就是一门关于如何构造和精炼你的提示词的艺术和科学,目的是最大化 AI 模型的性能,让它产出更符合你需求的、高质量的输出。提示词工程就是一个与 AI 高效沟通的技巧。

  • 提示词(Prompt):就是你输入给 AI 模型(比如大型语言模型 LLM)的指令、问题、或文本输入。
  • 工程(Engineering):在这里指的是设计、优化和改进你的输入文本的过程。

提示词是搭建智能体的第一步

如何设计提示词:
角色定位:明确bot🤖的身份,建立专业形象

角色越具体=回复越专业

技能描述:清晰的目标🎯,让🤖bot知道做什么
输出格式:结构化回复要求,确保输出规范
约束条件:限制不当行为,保证安全合规

给bot🤖设置边界

2.dify中如何应用提示词

分类:

  1. 用户提示词:用户直接提出的具体指令/问题,指导模型执行特定的任务,下图红框输入的就是用户提示词:

在这里插入图片描述
2.系统提示词:定义大模型的角色定位+回复逻辑,持续影响整个会话响应模式,下图红框输入的就是系统提示词:
在这里插入图片描述
在使用dify之前,要先把dify的应用启动起来,就是咱们正确安装的docker

3.提示词应用案例

先创建应用:
在这里插入图片描述
直接输入系统提示词:
在这里插入图片描述
输入用户提示词:
在这里插入图片描述
你可以继续问它问题:
在这里插入图片描述
如果不会写提示词,可以借助这个提示词生成器进行优化:
在这里插入图片描述
生成的提示词也是符合咱们前面所说的要求的:

明确了bot的角色,以及技能描述、输出格式和约束条件

在这里插入图片描述
调整完成之后继续问它,效果是这样的:
在这里插入图片描述

4.总结

Dify中如何设置提示词?

先自己编辑,然后用AI大模型进行优化,使提示词更加贴合用户需求

七、RAG
1.什么是RAG

RAG(Retrieval-Augmented Generation,检索增强生成)是目前最主流的 LLM 落地架构之一。

RAG 的核心思想是:让 LLM 在回答问题时,先从外部知识库中检索相关内容,再基于检索结果生成回答,而不是仅依赖模型训练时记住的知识。主要用于解决模型幻觉问题

2.知识库构建
文档准备

文档预处理:清理无关内容,按主题分类,文件命名规范

  1. 文档类型:

    • 支持格式:PDF/Word/Txt格式
    • 适用场景:攻略文章、教程文档
  2. 表格类型:

    • 支持格式:Excel/CSV
    • 适用场景:结构化数据、统计信息
文档切片

切分方式:

  • 按字符数切分
  • 按符号切分
  • 按语义切分

一般方式:按照符号和字符长度一起切分

文档向量化

将切片后的文本进行向量数字化,便于计算问题和文档的相似性

作用:语义理解,相似度计算,快速检索

八、实践环节:创建攻略知识库
基本操作:
Step1:创建知识库
进入Dify选择知识库
Step2:选择数据源
上传文本原始文件
Step3:文本分段
选择(设置)分段方式
Step4:构建索引
将分段后的文档进行向量化
Step5:检索🔍设置
向量检索/全文检索/混合检索
Step6:查看结果
预览文本处理的效果
九、知识库创建

在这里插入图片描述
首先点击👆侧边栏知识库,然后按上图操作

然后上传并且进行设置:
在这里插入图片描述
点击预览块进行查看

往下滑,翻到检索设置这一栏,根据自己使用场景选择检索类型,默认推荐混合检索
在这里插入图片描述然后:
在这里插入图片描述
知识库已经创建完成

十、让agent应用知识库
Step1:创建空白应用
构建agent智能体
Step2:构建提示词
明确角色->说明功能->规范回复格式
Step3:选择知识库
编排模块->知识库->点击👆"添加知识库"
Step4:结果验证
调试->输入问题->验证结果

咱们按照前面创建应用的步骤进行操作,在变量的下面一栏可以导入咱们自己已经创建好的知识库(可以很好的解决大模型幻觉问题):
在这里插入图片描述

十一、Function Calling原理
1.定义

即:函数调用

解决信息实时性/数据局限性/功能扩展性等问题

2.如何在Dify中应用Function Calling

实操应用(添加Dify市场中已有的工具):
在这里插入图片描述
我们新建一个时间测试的agent,输入问题:请告诉我现在的时间,不难发现,它无法直接获取实时时间,那么我们可以选择添加工具:
在这里插入图片描述你继续重新问它:
在这里插入图片描述
可以给出时间但是后面的时/分/秒对应不上
在这里插入图片描述
找到工具旁边这个信息与设置按钮并点击👆
在这里插入图片描述
把时区改一下
在这里插入图片描述
现在时间就正确了

总结:

在Dify中工具(插件)就是Function Calling的实现形式

十二、自定义插件
步骤:
Step1:脚本开发
基于本地实现Python脚本
Step2:运行脚本
后台运行API
Step3:创建工具
在Dify中选择工具--创建自定义工具
Step4:Schema操作
配置OpenAI Schema
Step5:测试
输入参数测试功能
Step6:保存💾
在Agent中应用插件
实操:
1.先搭建环境,创建ApI

快捷键Windows+R打开命令行:

依次输入下面👇的指令:

mkdir weather-plugin cd weather-plugin

python -m venv weather-env

weather-env\Scripts\activate

pip install fastapi uvicorn requests -i https://pypi.tuna.tsinghua.edu.cn/simple(此指令用了国内镜像源,提高下载速度)

pip list(验证是否成功✅️)
在这里插入图片描述
版本信息均已完整打印,说明安装成功

注意:我们配置的虚拟环境是 weather-plugin

用Pycharm打开此文件夹📂,并且配置虚拟环境,在根目录下新建 main.py文件
在这里插入图片描述然后将此代码复制到 main.py里:(可以让大模型给生成)

from fastapi import FastAPI, Request, HTTPException
from pydantic import BaseModel
import requests

app = FastAPI()

# 身份验证令牌(个人使用,简单安全,自行设置即可)
VALID_TOKEN = "xxxx"

# 城市编码数据
CITY_CODES = {
    "北京": "101010100",
    "上海": "101020100",
    "广州": "101280101",
    "深圳": "101280601",
    "杭州": "101210101",
    "成都": "101270101",
    "武汉": "101200101",
    "西安": "101110101",
    "南京": "101190101",
    "重庆": "101040100",
    "天津": "101030100",
    "苏州": "101190401",
    "郑州": "101180101",
    "长沙": "101250101",
    "青岛": "101120201",
    "大连": "101070201",
    "宁波": "101210401",
    "厦门": "101230201",
    "福州": "101230101",
    "济南": "101120101",
    "合肥": "101220101",
    "南昌": "101240101",
    "昆明": "101290101",
    "南宁": "101300101",
    "贵阳": "101260101",
    "哈尔滨": "101050101",
    "长春": "101060101",
    "沈阳": "101070101",
    "石家庄": "101090101",
    "太原": "101100101",
    "呼和浩特": "101080101",
    "乌鲁木齐": "101130101",
    "拉萨": "101140101",
    "兰州": "101110501",
    "西宁": "101150101",
    "银川": "101170101",
    "海口": "101310101",
    "三亚": "101310201"
}

class WeatherRequest(BaseModel):
    location: str

@app.post("/weather")
def get_current_weather(request: Request, body: WeatherRequest):
    """
    天气查询接口
    - 需要Authorization头认证
    - 返回自然语言格式的天气信息
    """
    auth_header = request.headers.get("Authorization")
    if auth_header != f"Bearer {VALID_TOKEN}":
        raise HTTPException(status_code=403, detail="Invalid Authorization header")
    
    location = body.location
    city_code = CITY_CODES.get(location)
    if not city_code:
        return {
            "status": "error",
            "message": f"请提供{location}对应的编码方可查询,目前支持的城市:{','.join(CITY_CODES.keys())}"
        }
    url = f"http://t.weather.itboy.net/api/weather/city/{city_code}"
    try:
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        data = response.json()
    except Exception as e:
        return {"status": "error", "message": f"天气服务请求失败: {str(e)}"}
    try:
        forecast = data["data"]["forecast"][0]
        weather_type = forecast["type"]
        high = forecast["high"].replace("高温 ", "")
        low = forecast["low"].replace("低温 ", "")
        temperature = f"{high}/{low}"
        
        return f"{location}今天是{weather_type},温度{temperature}"
    except (KeyError, IndexError) as e:
        return {"status": "error", "message": f"天气数据解析失败: {str(e)}"}
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8081)

执行完是这个样子:(此服务已开启)
在这里插入图片描述

2.公网穿透

不进行公网穿透则无法在Dify中进行使用

2.1先安装localtunnel

前提是你已经安装了Node.js

安装地址:Node.js — 在任何地方运行 JavaScript

新开一个cmd窗口,因为是全局安装,所以不需要进入到虚拟环境里: npm install -g localtunnel用这个指令安装
在这里插入图片描述

2.2启动穿透服务

然后再Pycharm里新打开一个终端,输入: lt --port 8081,拿到自己的 url地址:

在这里插入图片描述

3.测试是否可用

打开postman进行测试:地址:https://www.postman.com/
在这里插入图片描述把你的刚才获得的url地址输入到post请求框里:
在这里插入图片描述然后再header填一下:
在这里插入图片描述
Bearer后面加上你自己设置的身份验证令牌

在body那里,把北京赋值给->location:然后验证,看是否能拿到返回的数据:
在这里插入图片描述
如上图👆,显然成功拿到数据✅️,说明API接口能够正常调用

4.Dify插件配置

接下来打开Dify,创建自定义工具:
在这里插入图片描述
然后把下面这段代码粘贴到空白框里:

{
  "openapi": "3.1.0",
  "info": {
    "title": "天气查询API",
    "description": "查询中国城市当前天气信息",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "xxxxxxx"#注意这里要改成你自己的url地址
    }
  ],
  "paths": {
    "/weather": {
      "post": {
        "summary": "查询城市天气",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "location": {
                    "type": "string",
                    "description": "城市名称",
                    "example": "北京"
                  }
                },
                "required": ["location"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功获取天气信息"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {},
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}

在这里插入图片描述
如上图,然后点击👆测试

📌注意:这个鉴定方法要从无改成请求头,下面选项改成Bearer,值要填你自己前面设置的身份验证令牌
在这里插入图片描述
最后值那里输入北京,进行测试即可:

在这里插入图片描述成功✅️

注意这里一定要改:
在这里插入图片描述

应用刚刚自定义的工具

注意在工具那里选择一下,然后询问:
在这里插入图片描述看agent🤖回答那一行->已使用weather-post,说明我们已经成功调用了创建在本地的API了

十三、工作流与Agent
1.什么是工作流workflow(业务逻辑可视化)

工作流是对业务流程及其操作步骤的抽象和自动化,用于在多个参与者之间按预定规则传递任务、信息或文档,实现业务目标。

将复杂任务拆解成一系列可管理的、按顺序/条件执行的步骤,并通过图形化的界面将它们连接起来

2.什么是agent(自主决策的AI助手)

是能够自主感知环境、做出决策并采取行动的计算实体

思考->行动->观察(循环)

3.Dify两种工作流
  1. 工作流(workflow)

    功能类/数据处理

  2. 对话流(chatflow)

    对话类/交互式应用
    在这里插入图片描述

4.工作流创建流程
Step1:创建工作流
工作流名称/功能描述
Step2:搭建工作流
设置:开始节点->LLM节点->工具节点->结束节点
(节点就是特定功能的独立组件)
Step3:测试并发布
5.工作流案例实操e-commerce
5.1新建一个自己的知识库

上传已有数据

在这里插入图片描述根据自己的需要修改分段设置的各个参数:
在这里插入图片描述

接下来修改检索设置(默认推荐混合检索🔍):
在这里插入图片描述
出现下面👇的✅️就是创建成功了:

在这里插入图片描述
点击👆前往文档按钮:显示文档可用
在这里插入图片描述
刷新🔄一下返回查看:
在这里插入图片描述知识库已存在

5.2应用已创建的知识库

创建一个工作流:

在这里插入图片描述
以用户的输入作为开始节点:
在这里插入图片描述
点击👆右侧输入字段那一行的号:
在这里插入图片描述
接下来工作流的目的是要判断用户的意图,以便下面给出合理的答复:

右键选择添加节点:
在这里插入图片描述
在这里插入图片描述
然后修改一些基本信息:变量选择用户的输入也就是query:

在这里插入图片描述注意:你这里的输入变量名称要和你下面的执行代码变量名称保持一致:

在这里插入图片描述注意:要把输出变量的键值对对应的写到下面👇的位置📍:

在这里插入图片描述
添加一个输出节点,进行简单的测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述功能运行正常✅️

下面添加一个条件分支:

在这里插入图片描述选中它,然后右侧面板添加条件:
在这里插入图片描述

条件分支部分处理完是这样的:
在这里插入图片描述
测试条件判断:当我输入找人工的时候,它执行的是第二条分支语句:
在这里插入图片描述
因为最后一个条件查询会用到知识库,所以它不能直接接输出,先删掉:
在这里插入图片描述添加知识库检索🔍节点,当用户提问一个专业问题时,需要用到知识库:
在这里插入图片描述
查询文本为用户输入,然后添加知识库:
在这里插入图片描述
当我们输入:学习电商相关知识需要安装哪些软件,并去测试时,可以看到每一步执行的是哪一条分支,这是我们在询问专业知识,它会调用我们提供给它的知识库来进行相关的回答:
在这里插入图片描述
后面就是需要自己探索和完善:

调用大模型需要上下文检索,则需要在下面system框里输入系统提示词:
在这里插入图片描述实现功能:接收用户的query和上下文,经过大模型得到结果

注意这里还要写一下:

在这里插入图片描述
注意:这时候输出变量就变了,改为大模型输出的text变量:
在这里插入图片描述最后这就是一个完整的agent流程了:

自己去测试运行一下并做出适当的调整和修改
在这里插入图片描述

十四、搭建sql数据查询助手
1.安装相应的工具

Echarts和Database
在这里插入图片描述

2.接着创建应用:

在这里插入图片描述
然后给大模型配置系统提示词,还有用户提示词 和助手提示词:
在这里插入图片描述
给大模型的问题实际上是用户的输入:
在这里插入图片描述下面添加代码执行节点:

注意输入变量要和下面代码部分变量名称保持一致
在这里插入图片描述
为了使功能更完善,你可以添加更详细的节点:

在这里插入图片描述
最后完善后验证发布即可:
在这里插入图片描述

十五、agent嵌入网站应用

在这里插入图片描述
把下面这段代码粘贴到html文件里:

在这里插入图片描述
界面展示如图:
在这里插入图片描述
你刷新🔄一下网页,发现我们的聊天小助手已经嵌入网页了:

在这里插入图片描述
你可以基于数据库对它进行问题提问

十六、agent封装API应用

首先:
在这里插入图片描述
然后配置你的api密钥:
在这里插入图片描述
把接口地址复制到postman:
在这里插入图片描述需要填写的信息参照十二.3章节部分:
在这里插入图片描述

最后发送post请求获取数据

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐