自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NLP工程化

专注于对话系统领域的技术分享,重点写《Dify应用操作和源码剖析》专栏。

  • 博客(138)
  • 资源 (29)
  • 收藏
  • 关注

原创 App Runner和Task Pipeline中的数据库连接管理指南

由于 App Runner 中存在一些需要长时间执行的任务,如大语言模型(LLM)生成和外部请求,Flask-Sqlalchemy 的数据库连接池策略是每个请求分配一个连接(事务)。这种方式会导致在执行非数据库任务时,连接仍然被占用,进而在高并发请求时,由于多个长时间运行的任务,无法获取新的连接。因此,App Runner 和任务管道中的数据库操作必须确保在使用后立即关闭连接,建议传递 ID 而不是 Model 对象,以避免分离(deattach)错误。

2025-05-27 18:30:01 662

原创 dify-api的.env配置文件

本文使用Dify v1.3.1,主要总结了配置文件中各变量的详细信息。

2025-05-26 19:22:16 645

原创 RAGFlow源码安装操作过程

RAGFlow是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎,可作为Dify的外部知识库使用[1]。本文主要介绍RAGFlow前端和后端等源码安装操作过程。

2025-05-26 19:18:26 848

原创 Dify中的Extension插件开发例子:以neko为例

本文使用Dify v1.0.0-beta.1版本。以neko为例,介绍Dify中的Extension插件开发例子。需要说明的是Dify官方要求Python≥3.12,但发现本地PyCharm调试Python≥3.12有问题,就采用的Python 3.11版本。

2025-05-26 19:15:40 903

原创 Dify中的Agent策略插件开发例子:以Function Calling为例

本文使用Dify v1.0.0-beta.1版本。Agent 策略插件能够帮助 LLM 执行推理或决策逻辑,包括工具选择、调用和结果处理,以更加自动化的方式处理问题。Dify官方实现的Agent策略插件包括Function Calling和Reason+ReAct(Reason+Act)。本文重点介绍Function Calling具体实现。

2025-05-26 19:12:35 1694

原创 Dify中的自定义模型插件开发例子:以xinference为例

本文使用Dify v1.0.0-beta.1版本。模型插件结构基本是模型供应商(模型公司,比如siliconflow、xinference)- 模型分类(模型类型,比如llm、rerank、speech2text、text_embedding、tts)- 具体模型(比如,deepseek-v2.5)。本文以xinference为例,介绍Dify中的自定义模型插件开发例子。

2025-05-26 19:03:11 822

原创 Dify中的预定义模型插件开发例子:以siliconflow为例

本文使用Dify v1.0.0-beta.1版本。模型插件结构基本是模型供应商(模型公司,比如siliconflow、xinference)- 模型分类(模型类型,比如llm、rerank、speech2text、text_embedding、tts)- 具体模型(比如,deepseek-v2.5)。本文以siliconflow为例,介绍Dify中的预定义模型插件开发例子。

2025-05-26 19:00:39 871

原创 Dify中的GoogleSearch工具插件开发例子

从Dify v1.0.0-beta.1开始,推出全新的Dify市场,插件代码已经从Dify主干中移除。但是无论如何变化,整体思想就是解耦合,让插件开发更加独立化,插件开发的本质并没有任何变化。本文以 GoogleSearch 为例,介绍如何快速开发一个工具插件。

2025-05-26 18:57:34 877

原创 Dify中的插件生态系统

从Dify v1.0.0-beta.1开始,推出全新的Dify市场。Dify中的插件包括几种分类,分别是Models(模型)、Tools(工具)、Agent 策略、Extensions(扩展)、Bundle(插件包)。插件系统还具备更加友好的传播属性,可通过 Dify Marketplace [1]或 GitHub [2]以及本地文件 [3]的形式分享插件,其它开发者能够便捷地安装插件。

2025-05-26 18:54:59 827

原创 dify_plugin数据库中的表总结

本文使用dify-plugin-daemon v0.1.0版本,主要对dify_plugin数据库中的数据表进行了总结。

2025-05-25 22:58:28 447

原创 dify-plugin-daemon的.env配置文件

本文使用dify-plugin-daemon v0.1.0版本,主要总结了dify-plugin-daemon\.env配置文件。为了本地调试方便,采用本地运行时环境WSL2+Ubuntu22.04方式运行dify-plugin-daemon服务。

2025-05-25 20:34:27 701

原创 PYTORCH_CUDA_ALLOC_CONF基本原理和具体示例

PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb 是 PyTorch 提供的一项环境变量配置,用于控制 CUDA 显存分配的行为。通过指定此参数,可以有效管理 GPU 显存的碎片化,缓解因显存碎片化而导致的 "CUDA out of memory"(显存溢出)问题。

2025-05-22 15:29:06 566

原创 LLM模型的generate和chat函数区别

在 Hugging Face 的 transformers 库中,GPT(Generative Pre-trained Transformer)类的模型有两个常用的生成文本的方法:generate 和 chat。这两个方法在使用上有一些区别。通常公司发布的 LLM 模型会有一个基础版本,还会有一个 Chat 版本。比如,Qwen-7B(基础版本)和 Qwen-7B-Chat(Chat 版本)。

2024-12-14 11:01:42 830

原创 当 docker-compose.yaml 文件部署时,Dify 线上版本升级过程

本文主要介绍当 docker-compose.yaml 文件部署时,Dify 线上版本升级过程。主要用到的内容就是 docker 目录中的这些文件。对这些文件的详细介绍,参考文献[2]。

2024-11-17 17:00:28 7513 4

原创 Dify 通过导入 DSL 文件创建 Workflow 过程及实现

本文使用 Dify v0.9.2 版本,主要介绍 Dify 通过导入 DSL(或 URL)文件创建(或导出)Workflow 的操作过程及源码分析实现过程。

2024-11-17 16:58:50 5347

原创 Dify 通过 API 调用 RAGFlow 外部知识库

本文使用 Dify v0.10.0+ 和 RAGFlow v0.12.0+ 版本(源码运行)。Dify 中的 RAG 一直被诟病,现在 Dify 提供了外部知识库 API,这样就可以连接到 Dify 之外的知识库并从中检索知识。第一个问题是 API 规范,包括接口格式、输入和输出参数等。第二个问题是哪些外部知识库支持该 API 呢?理论上讲只要支持 API 规范都是可行的。

2024-11-16 22:40:43 8005 8

原创 Dify 中误删或更新 privkeys 后导致 File not found 问题及解决方案

本文使用 Dify v0.10.2 版本,主要介绍了在迁移或部署 Dify 时,可能由于误删或更新 privkeys 后导致 File not found 问题及解决方案,参考文献[1]。

2024-11-16 22:39:00 1959 2

原创 Dify 中获取所有会话记录方法

Dify 中获取所有会话记录方法。

2024-11-15 23:56:23 4166 4

原创 Dify 中获取应用(Chatflow)的对话记录

本文使用 Dify v0.11.1 版本,主要介绍 Dify 中获取应用(Chatflow)对话记录的过程和原理。

2024-11-15 23:55:43 8271 5

原创 Dify 中自带的门诊导诊工作流(Chatflow)

本文使用 Dify v0.7.2 版本。此聊天流程展示了如何构建一个用于门诊导诊的聊天机器人,可通过网页或语音对话来收集病人的数据。简单理解,即根据患者信息(年龄、性别和症状),给患者推荐科室。

2024-11-14 23:16:01 7329 13

原创 打通 Dify 和 ComfyUI 的绘画尝试

通过 Dify 可以调动很多 ComfyUI 工作流,以及第三方的图像、视频、音频模型的 API 接口。真正实现了控制与执行的分离,协同完成内容创作。打通 Dify 和 ComfyUI 技术实现思路:(1)Dify 工作流 HTTP 请求节点;(2)Flask 封装 REST 接口;(3)REST 接口中调用导出的 ComfyUI 工作流 json 文件。其它要注意的是 Dify 给 ComfyUI 的 prompt 参数传递,以及 ComfyUI 生成的图像返回给 Dify。

2024-11-14 23:13:16 1009

原创 Dify 中的 @login_required 装饰器

本文主要介绍了 Dify 中的 @login_required 装饰器的具体实现过程,用于确保用户在调用视图函数之前已经登录和认证。源码位置:dify\api\libs\login.py。

2024-11-04 17:28:09 1146

原创 Dify 中的 Bearer Token 与 API-Key 鉴权方式

本文使用 Dify v0.10.2 版本,在 Dify 中包括 Bearer Token 与 API-Key 鉴权这 2 种方式。console(URL 前缀/console/api)和 web(URL 前缀/api)蓝图使用的是 Bearer Token 鉴权方式,而 service_api(URL 前缀/v1)蓝图使用的是 API-Key 鉴权方式。

2024-11-04 17:26:36 3327

原创 Python 中的方法解析顺序(MRO)

在 Python 中,MRO(Method Resolution Order,方法解析顺序)是指类继承体系中,Python 如何确定在调用方法时的解析顺序。MRO 决定了在多继承环境下,Python 如何寻找方法或属性,即它会根据一定规则从父类中查找方法或属性,避免重复继承带来的歧义。

2024-09-21 00:03:03 2464

原创 Python 中的 Kombu 类库

Kombu 是一个用于 Python 的消息队列库,提供了高效、灵活的消息传递机制。它是 Celery 的核心组件之一,但也可以单独使用。Kombu 支持多种消息代理(如 RabbitMQ、Redis、Amazon SQS 等),并提供了消息生产者和消费者的功能。安装命令 pip install kombu redis。

2024-09-21 00:01:08 2396

原创 对 Python 中 GIL 的理解

Python 中的全局解释器锁(Global Interpreter Lock,GIL)是 CPython 解释器的一个机制,用来确保在多线程环境下,只有一个线程可以执行 Python 字节码,任何时刻只能有一个线程在执行 Python 代码。这意味着,即使有多个 CPU 核心,Python 的多线程程序在同一时间也只有一个线程在执行,无法充分利用多核处理器的优势。

2024-09-20 08:26:37 1850

原创 Python 中的 typing 模块常见用法

typing 模块是 Python 提供的一个标准库,主要用于为函数、变量和类定义类型提示(Type Hints),从而提高代码的可读性和类型安全性。虽然 Python 是动态类型语言,但通过 typing 模块,开发者可以明确指定变量和函数的参数、返回值的类型,帮助 IDE 或静态代码分析工具提供更好的代码提示和错误检查。虽然 Python 本身不会强制执行这些类型检查,但借助 mypy 等工具,可以进行静态类型分析,帮助发现潜在问题。

2024-09-20 08:23:29 2138

原创 Flask、Werkzeug 和 WSGI 间的关系

Flask 是一个基于 Werkzeug 和 Jinja2 模板引擎的轻量级 Web 框架。Werkzeug 是 Flask 的底层 WSGI 工具包,它提供了 WSGI 服务器、请求和响应对象、路由等基础功能,Flask 在此基础上构建了更高级的 Web 框架功能。

2024-09-19 09:29:15 764

原创 PyCharm 调试 Xinference 遇到问题及解决方案

本文使用的 PyCharm 2024.2.1 版本,如果使用低版本 PyCharm,那么在调试 Xinference v0.15.1 源码时可能会报错 Connection to Python debugger failed Socket closed。

2024-09-19 09:22:12 1900

原创 将flux1画图API封装为Dify工作流

本文主要介绍将公开的 flux1 画图 API(https://api-flux1.api4gpt.com/)封装为 Dify 工作流。

2024-09-18 23:29:34 835

原创 Dify 中的讯飞星火平台工具源码分析

本文主要对 Dify 中的讯飞星火平台工具 spark 进行了源码分析,该工具可根据用户的输入生成图片,由讯飞星火提供图片生成 API。通过本文学习可自行实现将第三方 API 封装为 Dify 中工具的能力。

2024-09-18 23:27:31 3041 2

原创 在Ubuntu20.04中Docker使用GPU设备可能遇到的一种问题

在使用pytorch/torchserve:0.11.0-gpu镜像的时候,可能会遇到Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]。本质原因是没有安装nvidia-docker相关依赖包。

2024-08-08 21:15:48 755

原创 在Dify中添加非内置的SiliconCloud模型

本文介绍了在Dify中添加SiliconCloud模型的两种方式,重点介绍了Dify中添加非内置的SiliconCloud模型的操作过程。

2024-08-08 21:14:13 1387

原创 Python操作Redis指南

文本主要介绍使用Python中的redis-py库来操作Redis数据库,包括安装必要的包、建立和关闭连接、执行增删改查操作以及处理可能的异常。这些操作将在Python应用程序中与Redis数据库进行有效的交互。

2024-07-27 18:57:08 546

原创 Python操作PostgreSQL指南

文本介绍了使用Python中的psycopg2库来操作PostgreSQL数据库,包括安装必要的包、建立和关闭连接、执行增删改查操作以及处理可能的异常。这些操作将在Python应用程序中与PostgreSQL数据库进行有效的交互。

2024-07-27 18:56:22 2005 2

原创 Python客户端操作Elasticsearch

这段代码是使用Python的elasticsearch模块与Elasticsearch进行交互的示例。

2024-07-27 18:55:40 1087

原创 Poetry入门教程

以前使用模块管理和虚拟环境为pip和Virtualenv组合,随着Rasa、Dify等开源项目逐步使用Poetry模块管理,也开始尝试使用Poetry。本文简要介绍Poetry入门操作。

2024-07-27 18:54:45 2633

原创 Dify中语音和文字间转换问题的一种暂时注释方式

本文主要解释了Dify中语音和文字间转换可能会遇到的问题,并给出了一种暂时注释的解决方案。

2024-07-27 18:53:28 4079 17

原创 图文长故事生成器工作流

本文主要从2个角度介绍了图文长故事生成器工作流,分别是每个故事画一张图(比如关于心态的故事)和每个段落画一张图。因为每个故事由多个段落组成,后者即对每个段落画一张图。更具体的工作流不再介绍,详细参考文献[2]。

2024-07-27 18:52:29 1487

原创 Dify自带的长故事生成器工作流

本文主要简要的介绍了Dify自带的长故事生成器工作流的实践过程,尤其是迭代节点和代码节点的灵活组合,可以让Dify工作流如虎添翼。当工作流执行结束后,可以通过查看日志->追踪,对于工作流中每个节点执行情况进行详细的查看和调试。

2024-07-27 18:51:16 4274

计算机经典教材

计算机和网络经过几十年的发展,关于这方面的经典教材值得每一个想学有所成的计算机专业人士研读,“计算机经典教材”目录就是这样的向导。

2013-03-11

Snort入侵检测

最好的入侵检测系统(IDS)是免费的、开源的Snort 工具。它拥有大量的用户,而且有商业公司Sourcefire 的支持,使得Snort 成为受到欢迎的入侵检测系统工具。这个工具本身是免费的。它所需要的是一些在上面运行的硬件以及安装、配置和维护的时间。Snort 可以在任何操作系统上运行,包括Windows 和Linux,但是有人认为它的操作很复杂。本专题的目的是揭示Snort 的神秘性。

2013-03-12

MySql常用命令详解

MySQL是一个广受Linux社区人们喜爱的半商业的数据库。MySQL是可运行在大多数的Linux平台(i386,Sparc,etc),以及少许非Linux甚至非Unix平台。

2013-05-08

岭回归分析总结

岭回归分析是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的耐受性远远强于最小二乘法。岭回归分析主要解决两类问题:数据点少于变量个数;变量间存在共线性。

2014-04-21

MySQL源码分析整理

为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试。在下面的系列中,我们会分别介绍MySQL的部分内部实现机制。

2013-05-08

macrodata数据集

利用Python进行数据分析,macrodata数据集。

2014-04-15

apache-ant-1.8.3-bin.tar

Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。

2014-11-02

ResNet的TensorFlow实现

VGGNet和GoogLeNet等网络都表明有足够的深度是模型表现良好的前提,但是在网络深度增加到一定程度时,更深的网络意味着更高的训练误差。误差升高的原因是网络越深,梯度弥散[还有梯度爆炸的可能性]的现象就越明显,所以在后向传播的时候,无法有效的把梯度更新到前面的网络层,靠前的网络层参数无法更新,导致训练和测试效果变差。所以ResNet面临的问题是怎样在增加网络深度的情况下有可以有效解决梯度消失的问题。ResNet中解决深层网络梯度消失的问题的核心结构是残差网络。

2019-01-22

TextCNN的TensorFlow实现

TextCNN的核心点在于可以捕获信息的局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似N-Gram的关键信息。

2019-01-24

二叉树顺序存储结构的基本操作

http://blog.csdn.net/ssw_1990/article/details/40511665代码。

2014-11-08

TextRNN的TensorFlow实现

TextCNN擅长捕获更短的序列信息,但是TextRNN擅长捕获更长的序列信息。具体到文本分类任务中,BiLSTM从某种意义上可以理解为可以捕获变长且双向的N-Gram信息。

2019-01-24

小费数据集

利用Python进行数据分析,小费数据集。

2014-04-15

ResNet的Keras实现

VGGNet和GoogLeNet等网络都表明有足够的深度是模型表现良好的前提,但是在网络深度增加到一定程度时,更深的网络意味着更高的训练误差。误差升高的原因是网络越深,梯度弥散[还有梯度爆炸的可能性]的现象就越明显,所以在后向传播的时候,无法有效的把梯度更新到前面的网络层,靠前的网络层参数无法更新,导致训练和测试效果变差。所以ResNet面临的问题是怎样在增加网络深度的情况下有可以有效解决梯度消失的问题。ResNet中解决深层网络梯度消失的问题的核心结构是残差网络。

2019-01-22

menagerie-db.rar

mysql 5.1参考手册中使用的动物园数据库。

2014-05-08

LinkQueue.cpp

LinkQueue.cpp

2014-11-10

JavaScript权威指南

Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

2013-03-22

python-delicious-master

使用此组件,可以操作delicious。同时,分析源码也可以学习python。http://blog.csdn.net/ssw_1990/article/details/27341239

2014-05-28

人工智能干货推荐.txt

免费送1000+本人工智能电子书,将近20G人工智能干货资料。包括[01]Python书籍_183;[02]机器学习书籍_144;[03]数据挖掘书籍_86;[04]自然语言处理书籍_72;[05]计算机视觉书籍_83;[06]深度学习书籍_93;[07]强化学习书籍_19;[08]语音技术书籍_19;[09]大数据书籍_49;[10]人工智能商业报告_295

2019-06-20

Git-1.9.4-preview20140611.exe

Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。

2014-07-15

Proteus入门教程

本书将简单介绍一下Proteus的使用。在这里,我用的Proteus版本是Proteus 6.7 sp3 Professional。

2013-03-11

MFC类库详解MFC类库详解

MFC类库详解MFC类库详解MFC类库详解MFC类库详解

2010-09-18

概率与计算

《概率与计算》详细地介绍了概率技术以及在概率算法与分析发展中使用过的范例。《概率与计算》分两部分,第一部分介绍了随机抽样、期望、马尔可夫不等式、切比雪夫不等式、切尔诺夫界、球和箱子模型、概率技术和马尔可夫链等核心内容。第二部分主要研究连续概率、有限独立性的应用、熵、马尔可夫链蒙特卡罗方法、耦合、鞅和平衡配置等比较高深的课题。《概率与计算》适合作为高等院校计算机科学和应用数学专业高年级本科生与低年级研究生的教材,也适合作为数学工作者和科技人员的参考书。

2014-08-21

知者无畏:一个真实的病毒世界

谈起电脑病毒,广大的读者恐怕都有谈虎色变的感觉,不知道这东西到底躲在什么地方,也不知道它们会对自己做些什么。不知道有谁说过这样一句话“无知者无畏”,我觉得真实情况恰恰相反,真正无畏的人只能是拥有了足够知识的人。人心中最大的恐惧就是对未知的恐惧,恐怖片之所以恐怖,是因为你不知道下面将要发生什么;电脑病毒之所以恐怖,也正是因为你不知道它们是什么,它们能做什么。而在电脑病毒这样一个迫切需要知识的领域,真正专业性的书籍很少,仅有的一些书,不是从哗众取宠的目的出发,拼凑一些骇人听闻的病毒/黑客故事,就是非常简单和粗浅的对80年代的病毒进行教科书似的描述。缺少具有专业性和权威性的著作,对于一些新的病毒和反病毒技术,象VBScript病毒、因特网蠕虫等,更是缺少足够的论述。

2013-03-10

ipython_bug.py

一个含有bug的python文件,主要是通过这个文件,学习ipython中ipdb的使用。

2014-04-07

flasky.zip

绝对多数的网站或APP都需要对用户进行认证,包括用户注册、用户登录、邮件确认、修改密码、修改邮箱等功能。有的还需要绑定手机号码,或者使用微信等第三方账号进行登录。该代码是基于Flask实现社交博客程序的用户认证部分。

2019-05-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除