大家好,我是大明哥,前大厂程序员,目前在探索 AI 中。
上篇文章【Coze 实战教程】- 手把手教你搭建第一个流程图,弄明白了 Coze 的流程图,插件节点和大模型节点。这篇文章继续介绍 Coze 实战。
实战项目 :长文本转换为思维导图
完整流程图:
我们开始动手实现!
步骤一:利用大模型处理文本
新建一个[大模型
]节点。大模型这里最重要的就是提示词。目前市面上有一些根据要求生成提示词工具,例如火山引擎的 Prompt 生成功能。大明哥目前主要是利用 claude 来生成提示词。主要是利用下面这段提示词:
我需要你给我生成一个标准格式的提示词。
提示词的要求如下:
我提供一段长文本,内容大概几千字到上万字,我想要你给我将这段内容转化为思维导图的格式,我直接复制这段内容就能够在思维导图软件里面运行。要求你输出的内容为 markdown 格式,采用 ``` 包括起来。
提示词格式如下:
## 角色
## 背景
## 技能
## 任务
## 输出格式
## 工作流
## 初始化
生成的提示词基本上可以打 70 分,剩下的就是调试了。生成的提示词如下:
## 角色
你是一位专业的思维导图结构化专家,擅长将复杂冗长的文本转化为清晰、层次分明的思维导图结构。
## 背景
用户需要将长篇文本(几千到上万字)转换成思维导图格式,以便直接导入到思维导图软件中使用。这种转换需要保留原文的核心内容和逻辑结构,同时以适合思维导图展示的形式呈现。
## 技能
- 文本分析与结构化能力
- 提取文章主题和关键概念
- 识别文本中的层次关系和逻辑连接
- 精简概括内容的能力
- 使用Markdown格式创建符合思维导图软件要求的结构
## 任务
1. 分析用户提供的长文本
2. 提取主题、关键概念和层次结构
3. 创建以主题为中心、逐层展开的思维导图结构
4. 使用Markdown格式表示这种结构
5. 输出可直接复制到思维导图软件的内容
## 输出格式
输出应为Markdown格式,使用"#"号表示层级,每一级多加一个"#"号。整个输出需要用三个反引号(```)包围起来,确保可以直接复制到思维导图软件中使用。
## 工作流
1. 阅读并理解用户提供的全部文本
2. 确定文本的中心主题作为思维导图的根节点
3. 识别主要章节或关键主题作为一级分支
4. 提取每个主要主题下的次级内容作为二级分支
5. 继续分析更深层次的内容,形成三级、四级分支
6. 精简每个节点的文字,保持简洁明了
7. 使用Markdown格式组织整个结构
8. 检查确保格式正确,可以在思维导图软件中正常导入
## 初始化
请提供您希望转换成思维导图的长文本。我将分析内容并创建结构化的思维导图格式,以Markdown形式输出,用三个反引号包围。
但是这个提示词我们无法直接使用,需要对 ## 初始化
进行改造下。原因就在于我们输入的内容没有加入到大模型的提示词里面。下面大明哥提供一个通用的改造方案:
## 初始化
【用户文本】
$$$
{{input}}
$$$
根据上面用户提供的文本(采用 $$$ 括起来),按照上面的提示词原则,严格按照《输出格式》来输出。不要输出其他的任何无关内容。
这段改造基本上适用于 95% 的场景,进行细微的调整就可以了。
我们找段长文本试运行下:
步骤二:文本转化为 TreeMind 脑图
上面将一段长文本转换为 markdown 格式的脑图后,我们就需要将这段文本转化为 TreeMind 脑图。
这里可以利用 Coze 的官方插件 [TreeMind树图
],它能够将输入3000字内的内容一键生成导图,支持脑图、逻辑图、树形图、鱼骨图、组织架构图、时间轴等多种结构。
试运行下,输出的内容如下:
{
"output": "\n\n\n[编辑](https://gapi.shutu.cn/ai/edit-mind-url?works\_guid=open15a7925b139e01fcf1bbea55cf8778a2\_coze)\n\n如果觉得这个思维导图还不够完美,或者你的想法需要更自由地表达,点击编辑按钮,将你的思维导图变形、变色、变内容、甚至可以添加新的元素,快来试试吧!。\n"
}
返回了两段内容:
- 图片链接:https://static.shutu.cn/shutu/jpeg/open15/2025/04/10/f5a6abe20286999eb2802e0ea50bb9af.jpeg
- 可编辑脑图:https://gapi.shutu.cn/ai/edit-mind-url?works\_guid=open15a7925b139e01fcf1bbea55cf8778a2\_coze
从这里可以看出还是生成了比较完美的脑图了。
但是,返回的结果不是那么尽人意,所以,我们需要返回的结果进行优化下。这里我们采用 Python 代码来优化。
步骤三:Python 代码提取脑图链接
这里有同学会抱怨,大明哥,我不会写代码啊,怎么搞?我会写代码,但是我不会写 Python,但是现在有 deepSeek,你还担心写不了代码吗?描述你的需求,分分钟就可以把代码生成。
这里我们的需求是提取这段字符串里面的链接:
\n\n\n[编辑](https://gapi.shutu.cn/ai/edit-mind-url?works\_guid=open15a7925b139e01fcf1bbea55cf8778a2\_coze)\n\n如果觉得这个思维导图还不够完美,或者你的想法需要更自由地表达,点击编辑按钮,将你的思维导图变形、变色、变内容、甚至可以添加新的元素,快来试试吧!。\n
所以,我们可以利用下面的提示词来生成 Python 代码:
我需要你帮我写一段完整的 Python 代码,我希望能够将这段代码拷贝到 Coze 平台的代码节点里面可以直接运行不报错。要求如下:
我输入下面这段内容:
\n\n\n[编辑](https://gapi.shutu.cn/ai/edit-mind-url?works\_guid=open15a7925b139e01fcf1bbea55cf8778a2\_coze)\n\n如果觉得这个思维导图还不够完美,或者你的想法需要更自由地表达,点击编辑按钮,将你的思维导图变形、变色、变内容、甚至可以添加新的元素,快来试试吧!。\n
python 代码需要提取这段内容里面的两个 url,其中image\_url:https:xxxx.jpeg,edit\_image\_url:https://gapi.shutu。
同时将这两个值作为 Python 的返回值。
你需要将生成的代码嵌入到下面这段代码中,确保它能够正常运行:
asyncdef main(args: Args) -> Output:
params = args.params
input\_text = params['input']
# 构建输出对象
ret: Output = {
"image\_url": ''
"edit\_image\_url": ''
}
return ret
Deepseek 生成的代码大致如下:
import re
from typing import TypedDict
class Output(TypedDict):
image\_url: str
edit\_image\_url: str
asyncdef main(args: Args) -> Output:
params = args.params
input\_text = params['input']
# 正则匹配图片URL
image\_match = re.search(
r'!\[返回图片\]\((https?://[^\s\)]+\.jpe?g)\)',
input\_text
)
# 正则匹配编辑链接
edit\_match = re.search(
r'\[编辑\]\((https?://gapi\.shutu[^\s\)]+)\)',
input\_text
)
# 构建输出对象
ret: Output = {
"image\_url": image\_match.group(1) if image\_match else'',
"edit\_image\_url": edit\_match.group(1) if edit\_match else''
}
return ret
我们将它 copy 到代码块中,然后测试下代码(这里一定要测试下):
执行结果:
很完美的就把链接提取出来了。
最后,我们试运行下:
好了,到这里我们已经完成了第二个实战项目了。
但是这里有一个小缺陷就是,它只能提炼长文本,如果我们输入的是链接呢?
步骤四:总结链接 OR 抖音内容
现在我们增加一些需求,比如我们输入一个文本链接需要总结成思维导图,或者输入一个抖音链接总结成思维导图。所以,整体思路如下:
- 判断输入的内容是文本、链接、还是抖音视频链接
- 如果是文本就直接总结内容,输出思维导图
- 如果是链接就需要提取链接中的内容,然后再总结内容,输出思维导图
- 如果是抖音视频链接,就需要提取抖音视频的音频,然后将音频转换为文字,最后再总结内容,输出思维导图
判断输入的内容是文本、链接、抖音视频链接
这里采用[代码]节点判断。要求如下:
- 抖音视频链接,返回 1
- 文本内容,返回 2
- 链接,返回 3
所以,Python 代码如下:
async def main(args: Args) -> Output:
params = args.params
input\_str = params['input']
check\_result = 2# 默认值
if input\_str.startswith("https://www.douyin.com/"):
check\_result = 1
elif input\_str.startswith(("http://", "https://")):
check\_result = 3
# 构建输出对象
ret: Output = {
"checkResult":check\_result
}
return ret
然后,再增加一个选择器:
提取抖音文案
抖音视频的文案提取方式大明哥在文章(【Coze 实战教程】- 手把手教你搭建第一个流程图!)已介绍,这里就不做阐述了。直接看图:
提取链接内容
提取链接中的内容,我们直接使用插件[链接读取
]就可以了:
内容聚合
三个分支,输出结果有三种,但是我们后面的【总结文本 】、【转化为脑图 】节点只有一个,我们总不能复制出来三份吧?所以我们需要对这个结果进行聚合、提炼。大致要求如下:
- 文本内容为 input1
- 抖音文案内容为 input3
- 链接内容为 input2
- 这三个内容哪个不为空,就将其输入到【 总结文本 】大模型节点
这里我们可以利用 Python 代码来实现,如下:
async def main(args: Args) -> Output:
params = args.params
input1 = params["input1"]
input2 = params["input2"]
input3 = params["input3"]
text\_content = input1 # 初始值
# 检查input1是否为http/https链接
if isinstance(input1, str) and (input1.startswith('http://') or input1.startswith('https://')):
# 按顺序检查input2和input3
for value in [input2, input3]:
if value isnotNone:
# 字符串类型需要非空内容
if isinstance(value, str):
if value.strip() != '':
text\_content = value
break
# 非字符串类型直接采用
else:
text\_content = value
break
# 构建输出对象
ret: Output = {
"text\_content": text\_content
}
return ret
所以,这部分的流程图如下:
试运行
最终的流程图如下:
试运行,大明哥就不做了。
今天的分享就到这里啦,如果想领取文中完整版的**《流程图、代码、提示词》** ,可以加大明哥微信,邀请进学习空间!
若有收获,可以点击下方⬇️关注我,以防迷路