从零到一,用 Dify 打造 NL2SQL

近期 AI 大火,朋友圈很多都在晒成果。 我也禁不住尝试,使用Dify这一开发平台做了第一个 AI 应用。 整体感觉下来还是非常方便的,也是由于Dify的出现大大降低了构建 AI 应用的门槛,相信未来真的可以解放人的双手,让 AI 帮助我们解决更多的问题。

近期 AI 大火,朋友圈很多都在晒成果。我也禁不住尝试,使用Dify这一开发平台做了第一个 AI 应用。整体感觉下来还是非常方便的,也是由于Dify的出现大大降低了构建 AI 应用的门槛,相信未来真的可以解放人的双手,让 AI 帮助我们解决更多的问题。

1. Dify 是什么

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

1).部署Dify

Dify 提供本地源码部署和Docker Compose两种方式,这里选择后者比较简单一些。前提条件如下

1.PNG安装步骤也比较简单,只需要几步1.PNG

2.png2.png

当看到如下提示时,代表启动成功了,并可通过浏览器来访问

3.PNG3.PNG

4.PNG4.PNG

2).配置Dify

在使用 Dify 之前,需要先配置大模型供应商。Dify 目前已支持主流的模型供应商,例如 OpenAI 的 GPT 系列、Anthropic 的 Claude 系列等。不同模型的能力表现、参数类型会不一样,你可以根据不同情景的应用需求选择你喜欢的模型供应商。当然也可以自建,接入本地的大模型。在 Dify 中,按模型的使用场景将模型分为以下 4 类

5.png5.png

如下图是自己做的配置,使用到了DeepSeek和通义千问

6.PNG6.PNG

2. 示例:打造NL2SQL

下面通过Dify做个示例,演示使用自然语言来查看数据库中的数据。

1).需求分析

根据我们的诉求,通过自然语言来访问数据库,这里我们来分解下需求,大致可分为几个阶段

  • 用户用自然语言方式输入查询需求
  • 由知识库将查询需求与库内元信息整合
  • 使用LLM来分析并给出SQL描述
  • 将SQL发送给数据库执行

2).创建应用

开始前,我们先确定应用类型;Dify里可以创建多类应用,用户可根据自身需求来选择。这里根据需求,选择使用Chatflow

7.PNG7.PNG

3).构建知识库

需要将数据库的字典信息整理为知识库,为后续LLM使用打好基础。Dify里支持多种构建知识库的方式,这里使用了最为简单的通过本地文件来构建。实践中,这里走了一些弯路,摸索了一下可通过注释信息构造出知识库文件然后导入。例如下图黄框就是根据表结构信息整理出来的

8.png8.png

在Dify中导入生成知识库,这方面没有太多经验,反复尝试了几次

9.png9.png

4).LLM 处理逻辑

LLM 节点是 Chatflow/Workflow 的核心节点。该节点能够利用大语言模型的对话/生成/分类/处理等能力,根据给定的提示词处理广泛的任务类型,并能够在工作流的不同环节使用。也是整个流程中最为核心的节点,其可完成下面功能

10.png10.png

这里是使用LLM节点,完成推导SQL语句的过程。核心点在于为对话生成高质量的指导,这里参考了网上的实现做了微调。顺便说一句,不同模型的能力还是存在差异,Dify提供了一次针对多个模型的联调能力,可对比选择最为合适的模型。

11.png11.png

5).组件和数据处理

除了上述核心节点外,需求中还描述需要实行数据库,这里直接引用第三方的工具,直接在Dify中安装即可。Dify中已经支持了非常丰富的工具可供使用。这里单独安装了数据库查询工具。

12.png12.png

此外,在实践中还是发现从LLM中输出的SQL文本,不能直接使用,仍然存在一些冗余字符需要处理下,因此也引用了代码执行逻辑,其可以执行如Python、JavaScript的脚本来处理数据

13.png13.png

6).工作流绘制

最终我们把整个逻辑串起来,从开始、知识检索、语句生成、文本微调、语句查询、反馈结果多个步骤,通过上下文关联起来。Dify中是可以支持复杂工作流关系,包括如分支、判断、循环等等。这个流程比较简单,串行执行就可以。

14.png14.png

7).效果展示

整个流程绘制完毕后,可以调试运行,都没问题后发布即可。简单测试下

15.png15.png

针对每次问题,都是调用工作流,在调试部分可以直观看到每个步骤的完成情况,如有错误可参考输出修改

16.png16.png

相关资讯

基于Dify与DeepSeek:零门槛训练自己的专属AI大模型

在人工智能(AI)技术日益普及的今天,训练属于自己的AI大模型不再是遥不可及的梦想。 随着DeepSeek  R1的发布,其部署成本仅为ChatGPT的十分之一,这一突破让更多企业和个人能够轻松参与AI开发。 未来,垂直领域的AI大模型和应用将如雨后春笋般涌现,这无疑是一个巨大的机遇。

用Ray观测和监控大语言模型工作负载

译者 | 布加迪审校 | 重楼前言GPT-4、PHI2、BERT和T5等大语言模型(LLM)的出现已彻底改变了自然语言处理,这些模型支持高端应用程序,包括聊天机器人、推荐系统和分析。 然而,LLM中工作负载的规模和复杂性使得保证性能和可靠性成了一大挑战。 在这种情况下,在使用Ray等框架部署工作负载的同时进行监控和观测显得非常必要。

LLM自主发现发表在Nature上的科学假设?ICLR 2025 论文MOOSE-Chem深度解析

编辑 | ScienceAI人工智能的下一个前沿,不仅是语言、图像,而是科学发现本身。 近年来,人工智能(AI)已经在自然语言处理(NLP)、计算机视觉(CV)等领域取得巨大成功。 但 AI 是否能够帮助科学家发现新的科学理论?