一、简介

官方地址:https://docs.dify.ai/zh-hans/guides/workflow

工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。

Dify 工作流分为两种类型:

  •   Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
  •   Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。

为解决自然语言输入中用户意图识别的复杂性,Chatflow 提供了问题理解类节点。相对于 Workflow 增加了 Chatbot 特性的支持,如:对话历史(Memory)、标注回复、Answer 节点等。

为解决自动化和批处理情景中复杂业务逻辑,工作流提供了丰富的逻辑节点,如代码节点、IF/ELSE 节点、模板转换、迭代节点等,除此之外也将提供定时和事件触发的能力,方便构建自动化流程。

二、工作流使用

先来看一个,比较复杂的工作流

本文不会演示这么复杂的工作流,先来演示一个简单的工作流。

创建工作流

 效果如下:

增加一个功能,查询我的公网ip,需要调用api来获取,比如:http://ip-api.com/json

访问之后,会显示一段json

{
    "status": "success",
    "country": "China",
    "countryCode": "CN",
    "region": "BJ",
    "regionName": "Beijing",
    "city": "Jinrongjie",
    "zip": "",
    "lat": 39.9175,
    "lon": 116.362,
    "timezone": "Asia/Shanghai",
    "isp": "China Unicom Shanghai network",
    "org": "Unicom SH",
    "as": "AS17621 China Unicom Shanghai network",
    "query": "140.206.98.218"
}

最后需要从json里面,提取query字段,就是我们要的公网ip了。

点击中间的LLM,右键删除

 点击加号,选择条件分支

 添加条件,选择query,也就是聊天输入框,对于的变量

 条件是,包含公网ip

 点击if后面的加号,选择HTTP请求

 输入地址http://ip-api.com/json即可,其他的不需要设置

 点击加号,选择代码执行

 删除参数arg2,选择arg1变量,选择body,也就是上一步http请求的结果

arg1的变量就是http请求的body

python代码如下:

import json
def main(arg1: str) -> dict:
    content=json.loads(arg1)
    return {
        "result": content['query'],
    }

代码说明:

content变量就是将body内容转换为字典,使用json.loads

最后return字典的query字段,也就是body内容的query

设置效果如下:

连线到 直接回复,点击{x},选择变量,选择代码执行result

 最后添加else分支,选择LLM,上下文选择变量sys.query

 最后添加直接回复

 最终效果如下:

 点击发布更新,运行一下

提问

 点击Workflow Process,就可以看到执行的流程

如果不包含公网ip,就会走下面的流程

三、dify python安装模块

临时安装

dify的代码执行,是由sandbox组件来执行的。

我们可以进入到sandbox容器里面看一下

docker exec -it docker_sandbox_1 /bin/bash

查看python版本

root@3d63ec639581:/# python --version
Python 3.10.15

可以看到python版本为3.10.15

查看pip安装了哪些模块

root@3d63ec639581:/# pip list
Package            Version
------------------ -----------
anyio              4.6.2.post1
certifi            2024.8.30
charset-normalizer 3.4.0
exceptiongroup     1.2.2
h11                0.14.0
httpcore           1.0.6
httpx              0.27.2
idna               3.10
Jinja2             3.0.3
MarkupSafe         3.0.1
pip                23.0.1
PySocks            1.7.1
requests           2.32.3
setuptools         65.5.1
sniffio            1.3.1
socksio            1.0.0
typing_extensions  4.12.2
urllib3            2.2.3
wheel              0.44.0

[notice] A new release of pip is available: 23.0.1 -> 25.0.1
[notice] To update, run: pip install --upgrade pip

安装pandas

pip install pandas

查看已经安装的模块

pip freeze

过滤pandas

pip freeze|grep pandas

输出:
pandas==2.2.3

这只是临时安装了pandas,下次容器启动,安装的模块就会消失。

永久安装

如果需要永久安装模块,需要修改配置文件python-requirements.txt

进入目录/opt/dify/docker/volumes

volumes就是所有模块的持久化目录

编辑文件volumes/sandbox/dependencies/python-requirements.txt

默认文件内容是空的,增加一行

pandas==2.2.3

最后重启dify应用,就会生效了。

cd /opt/dify/docker
docker-compose down
docker-compose up -d
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐