目录

1 前言

2 Dify接入本地大模型

3 Dify中应用提示词

4 Dify中使用知识库

5 Dify中工具的使用

6 Dify中使用自定义的工具

7 Dify中使用工作流


1 前言

在使用Dify之前,进行环境配置:

        (1)首先通过github下载Dify,直接下载压缩包,本地解压:langgenius/dify: Production-ready platform for agentic workflow development.

        (2)确保自己已经在装了docker

        (3)进入已经下载的Dify文件夹下的docker文件夹,将 .env.example改为 .env

        (4)同样在docker文件夹下,输入cmd,进入终端,使用命令docker compose up -d 拉取dify所需的镜像源

        (5)镜像下载成功后,浏览器输入http://localhost/signin,设置邮箱,用户名,密码,就可以进入dify了,之后便可以使用了。


2 Dify接入本地大模型

这里本地大模型选用ollama,所以我们需要现在ollama官网下载,下面是下载完成的可视化界面:


然后我们进入dify平台:我的->设置->模型供应商->就可以看到我们本地的ollama模型了

现在我们就在dify里面适用这个模型:

进入dify平台:工作室->创建空白应用->新手适用->选择聊天助手->填写所创建的助手的名字->创建

创建成功后,便进入如下界面:


上述是dify接入本地大模型的,我们更喜欢接入API大模型,因为速度更快,这里以阿里的qwen为例,在此之前,我们需要获取其api, 这里就不多说了。

然后也是到 我的->设置->模型供应商->搜索框输入通义千问->点击安装->回到模型供应商界面,就可以看到安装的模型了->然后点击配置,填写申请的api-key,就可以使用了。

使用方法跟本地大模型一样,只不过聊天时,需要选择这个模型


3 Dify中应用提示词

首先我们创建助手,跟上面一样,我这里创建一个金融小助手,在系统提示词中,输入:你是一名金融小助手,为客户解答金融相关问题。


4 Dify中使用知识库

首先我们得构建知识库,在首页->点击知识库->创建知识库->导入已有的文本,上传文件->点击下一步->填写内容:如下,我这边写300和5,其他选项建议如下


知识库创建完成后,我们就可以开始使用了:
第一步我们创建一个agent,注意不是助手

我们线演示下没有使用知识库的效果:


下面我们应用知识库


5 Dify中工具的使用

在首页->点击工具->在工具市场中安装工具,我这边以时间工具为例,

使用工具:创建agent 

下面是没有使用工具,大模型给出的时间是错误的

使用时间工具:

日期是对的,时间不对,我们需要改变下时区

选择亚洲/上海

再次尝试,就正确了


6 Dify中使用自定义的工具

自定义工具的话,就需要我们自己写个脚本了,然后抛出个接口,这里我以天气查询工具为例

【python脚本代码】

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

app = FastAPI()

# 身份验证令牌(个人使用,简单安全)
VALID_TOKEN = "xx_identification_token"

# 城市编码数据(直接硬编码,无需外部文件)
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头认证
    - 返回自然语言格式的天气信息
    """
    # 1. 验证身份
    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

    # 2. 查找城市编码
    city_code = CITY_CODES.get(location)
    if not city_code:
        return {
            "status": "error",
            "message": f"请提供{location}对应的编码方可查询,目前支持的城市:{','.join(CITY_CODES.keys())}"
        }

    # 3. 调用天气API
    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)}"}

    # 4. 解析天气数据
    try:
        forecast = data["data"]["forecast"][0]
        weather_type = forecast["type"]
        high = forecast["high"].replace("高温 ", "")
        low = forecast["low"].replace("低温 ", "")
        temperature = f"{high}/{low}"

        # 5. 返回自然语言格式
        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)

这里设置的令牌很重要,之后要用

写完脚本后,我们运行:

在这边需要使用内网穿透:直接新建一个终端,输入:

npx localtunnel --port 8081

就可以得到新的url,然后开始在dify中自定义工具

首页->工具->自定义工具:

输入工具名称,以及Schema, Schema可以使用下方的:
 

{
  "openapi": "3.1.0",
  "info": {
    "title": "天气查询API",
    "description": "查询中国城市当前天气信息",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://weather-api-abc123.loca.lt"
    }
  ],
  "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"
      }
    }
  }
}

注意:这边的url需要改成你刚才的

最后,点击保存,一个工具就创建好了

这个工具的使用跟之前一样,就不演示了


7 Dify中使用工作流

工作流分为工作流和对话流

首页->工作室->创建空白应用->选择工作流创建

【注】工作流这边的内容,相对繁琐,多用用自然就熟练了

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐