手把手教你用 Dify 搭建一个教程自动化生成工作流

112 天前
setimouse  setimouse

大家好,我是北平牧哥。

过去我们想学习一门技术时,需要在网上找教程来看。有许多教程网站会提供各种教程供人学习。在 AI 时代,我们可以借助大语言模型来帮我们生成任何你想学习的教程。

在这篇文章里,我将手把手教你用 Dify 来打造一个自动化教程生成工具。

我们的目标是只要输入一个你想学习的技术(例如:Python, MongoDB ),AI 工作流就能帮你产出一套完整的教学课程。

那么我们开始吧!

设计思路

我们总体的设计思路是:

  1. 用户提供教程的名称后,首先生成课程大纲。
  2. 把课程大纲进行结构化转换后,拆分成更细章节。
  3. 迭代每一个章节,生成章节对应的课程内容。
  4. 整合内容,输出完整教程。

关于工作流

工作流( Workflow )是一系列有序的任务、活动或者步骤,被设计用来完成特定的业务流程或者工作流程。通过将复杂任务拆分成较小的子任务(节点) ,降低了系统的复杂度。它可以把上述的设计思路具象化为一系列节点,从而实现我们的目标。

image.png

操作步骤

开始

工作流都是由从“开始”节点开始执行,在这里可以配置用户输入的变量。我们的例子中,需要配置的是用户需要的教程名称。

图片

生成课程大纲

这一步需要使用 LLM 大模型进行生成,所以需要添加一个 LLM 模块。Dify 提供了一些免费的配额使用,这里我使用的是 o1-mini-2024-09-12 。

大模型生成内容质量的关键是提示词的设计,下图中的提示词可以作为一个参考。它要求大模型生成一个课程提纲,并且以 JSON 格式输出。

下面是其他可以使用的大模型列表

下图是一个生成结果示例

数据结构化转换

尽管是以 JSON 输出,大模型输出的并不是 JSON 对象而是 markdown 格式文本,并且前后带有json ... 这样的 md 标识符。所以需要进行结构化处理。可以选择 Dify 的模板转换,我这里是用 [代码执行] 节点去处理,原因是模板转换需要用 Jina 编写解析模板,增加了学习曲线。而用代码则只要正则表达式处理一下就可以拿到 json 文本,再简单处理一下就可以了。

经过这一步就把 LLM 返回的结构转换成按照小节为单位的数组,下一步就可以对每个小节进行迭代生成教程文章了。

迭代生成教程文章

这一步我们要加一个 [迭代] 节点,它可以把上一步输入的数组逐项代入进行操作。先看下整体迭代。

迭代器需要指定一个输入和一个输出变量,均为数组格式。

在 [转 OBJECT ] 节点里,我们需要把迭代传入的 item 对象做一下拆解转换,这样后续的工作流节点里才能更清晰地使用每一个变量,而不是只能拿到 item Object 。

转换后输出 chapter, subtitle, title 三个变量。

生成文章

又要用到 LLM 了,同样也是配置提示词。这里就用到前面转换的变量了,通过把章节标题(title)和子标题(subtitle)带入进提示词,就可以迭代执行 LLM 生成文章内容。

输出

迭代完成后,添加 [结束] 节点,添加要输出的变量即可。


以上就是整个工作流的核心流程,但输出的只是一个结构化数据,如果想使用还需要后续一些简单处理,这里不再赘述。整体流程执行过程如下:

当然你也可以用这个思路建一个 Chat 流程,以对话的方式直接输出。

总结

你已经学会了如何使用 Dify 创建一个自动化教程生成工具。借助大语言模型的强大能力,我们可以高效地生成完整的教学内容,从大纲到每一章的具体细节,整个过程完全自动化。希望这个工具能够帮助你更轻松地创建高质量的教学资源,提升学习与分享的效率。


2092 次点击
所在节点    分享创造
3 条回复
setimouse
112 天前
dify 工作流已经开源到了 GitHub

地址: https://github.com/pekingmuge/dify_course

需要的请自取。
Cola98
112 天前
哥们,你的图挂了
SantinoSong
111 天前
看不到图

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1084285

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX