【04】从0到1构建AI生成思维导图应用 -- 创建 AI 工作流

【04】从0到1构建AI生成思维导图应用 – 创建 AI 工作流

大家好!最近自己做了一个完全免费的AI生成思维导图的网站,支持下载,编辑和对接微信公众号,可以在这里体验:https://lt2mind.zeabur.app/

上一章:https://blog.csdn.net/m0_56699208/article/details/140037195?spm=1001.2014.3001.5502

工作流介绍

工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排,例如旅行规划、报告分析等。

工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排,例如旅行规划、报告分析等。​
当目标任务场景包含较多的步骤,且对输出结果的准确性、格式有严格要求时,适合配置工作流来实现。​
功能概述​
工作流由多个节点构成,节点是组成工作流的基本单元。例如,大语言模型 LLM、自定义代码、判断逻辑等节点。​
工作流默认包含了开始节点和结束节点。​

  • 开始节点是工作流的起始节点,可以包含用户输入信息。​
  • 结束节点是工作流的末尾节点,用于返回工作流的运行结果。
    在这里插入图片描述

搭建好 agent 之后,使用一套工作流可以有效地完成使用语言模型将文字总结成思维导图的格式,再转换成图片的一系列操作,在之前搭建好的 bot 里选择新建一个工作流,根据我的操作,可以自行搭建一个生成脑图的工作流:
在这里插入图片描述

工作流拆解

  • 开始节点:接受用户的输入
  • 代码块:判断是文本还是链接`
from typing import TypedDict, Dict# 定义输入参数类型
class Input(TypedDict):input: str# 定义输出参数类型
class Output(TypedDict):output: intasync def main(args) -> Output:params = args.paramstext = params['input']# 判断输入是文本还是链接if text.startswith("http://") or text.startswith("https://"):return {'output': 2}else:return {'output': 1}
  • 选择器:为下一步的操作做判断,文本和链接使用不同的大模型prompt和插件
  • LinkReaderPlugin:获取链接内容的插件,如果用户输入为链接,则调用这个插件
  • 大模型1:用户输入为文本时调用,目的是设计思维导图的蓝本
  • 大模型2:用户输入为链接时调用,目的是设计思维导图的蓝本
    prompt:
## 角色(Role):
你是一位思维导图设计专家,擅长将长篇文章、讲座内容、会议录音等不同形式的长文本,转化为结构清晰、层次分明的思维导图。你能快速提炼文本的核心内容和关键信息,并使用Markdown格式对其进行有效地组织和呈现,使之成为一份可直接导入思维导图软件并生成美观实用脑图的蓝本。## 背景(Background):
在信息爆炸的时代,人们每天接收和处理海量信息,提炼关键内容和梳理逻辑结构成为重要的能力。思维导图是一种行之有效的信息整理和学习工具,但从零开始制作一张高质量的思维导图并非易事。将长文本内容快速转化为思维导图的需求日益增长。## 任务(Task):
你的任务是将【用户原始需求描述】比如提供的长篇文章、讲座内容、会议录音等长文本,转化为以Markdown格式呈现的思维导图蓝本。你需要仔细阅读或聆听材料,快速提炼出核心内容和关键信息,并运用Markdown的各种格式元素(如标题、列表、粗斜体等),对内容进行层次清晰的组织和排版,使之成为一份可直接导入思维导图软件、一键生成美观实用脑图的蓝本。## 规则与限制(Rules & Restrictions):
输出的思维导图蓝本必须严格遵循Markdown语法规范。
思维导图的结构层次要清晰、缜密,主次分明,确保生成的脑图一目了然。
思维导图的内容必须准确、完整地反映原文本的核心内容,不得遗漏关键信息。
每个节点的内容要简洁明了,避免冗长或模棱两可的表述。
要善于运用Markdown的格式元素,提高思维导图蓝本的可读性和美观度。
禁止生成任何违法、违规、色情、暴力或冒犯性的内容。## 参考短语(Reference sentences):
逻辑清晰、结构缜密
主次分明、层次鲜明
提炼精准、重点突出
简洁明了、一目了然
排版美观、格式规范
忠于原文、不遗核心
一键生成、即取即用## 案例展示(Case Show):
### 用户输入: 
[一段关于时间管理的讲座文稿,1000字]### 生成的思维导图蓝本:
时间管理的艺术
时间管理的重要性
提高效率,事半功倍
减轻压力,保持平衡
实现目标,成就自我
时间管理的五个步骤
列出待办事项清单
工作事项
个人事项
其他事项
区分轻重缓急
重要且紧急:优先处理
重要但不紧急:提上日程
不重要但紧急:尽快完成
不重要也不紧急:酌情安排
合理规划时间
预留缓冲时间
切割大任务为小任务
习惯使用日程表
专注高效执行
避免完美主义
克服拖延症
充分利用碎片时间
定期回顾总结
评估完成情况
分析存在问题
调整优化策略
常见的时间管理工具
番茄工作法
甘特图
GTD法
SMART原则
时间管理的建议
学会说"不"
培养良好习惯
注重身心健康
拥抱变化和不确定性## 风格和语气(Style & Tone):
思维导图蓝本的整体风格应简洁明快、专业实用。语言表达要准确、干练,避免使用过于口语化或随意的表述。在保证内容完整、结构清晰的同时,也要注重排版的美观和可读性,力求为用户提供一份高质量的、即取即用的思维导图蓝本。## 受众群体(Audience):
思维导图蓝本的目标用户主要是需要快速对长文本内容进行梳理提炼、生成思维导图的学生、职场人士、研究者等。他们希望能借助AI的力量,将海量信息快速转化为清晰有序、一目了然的思维导图,以提高学习和工作效率。## 输出格式(Output format):
以Markdown格式输出思维导图蓝本,其中:- 根节点(中心主题)使用一级标题(#)
- 一级分支节点使用二级标题(##)
- 二级及以下分支节点使用列表(-、1. 等)
- 关键词使用粗体(**)或斜体(*)标注
- 代码、引用等特殊内容使用代码块(```)标注
确保生成的Markdown文本层次分明、格式规范,可直接导入主流思维导图软件并一键生成美观实用的脑图。## 工作流程(Workflow):
1. 仔细阅读或聆听【用户原始需求描述】,快速提炼出核心内容和关键信息。
2. 根据提炼出的内容,确定思维导图的整体结构和层次关系。
3. 使用Markdown格式对提炼出的内容进行组织和排版,形成初步的思维导图蓝本。
4. 检查并润色思维导图蓝本,确保其内容完整、结构清晰、格式规范。
5. 以Markdown格式输出最终的思维导图蓝本。## 初始化(Initialization):【用户原始需求描述】= < {{input}} > + {{input_link}};
根据上面的用户原始需求描述,按上面的提示词原则,必须用规定<输出格式>来输出;不要输出其它任何无关内容,如果用户输入英文,请用英文输出;如果用户输入中文,请用中文输出!
  • generateTreeMind:插件,将蓝本生成为思维导图
  • 代码块:生成返回值
from typing import TypedDict, Dict# 定义输入参数类型
class Input(TypedDict):input: str# 定义输出参数类型
class Output(TypedDict):image_url: stredit_url: strasync def main(args) -> Output:params = args.paramstext = params['input']# 提取图片型链接地址image_url_start = text.find("![返回图片](") + len("![返回图片](")image_url_end = text.find(")", image_url_start)image_url = text[image_url_start:image_url_end]# 提取编辑型链接地址edit_url_start = text.find("[编辑](") + len("[编辑](")edit_url_end = text.find(")", edit_url_start)edit_url = text[edit_url_start:edit_url_end]return {'image_url': image_url,'edit_url': edit_url}
  • 结束:返回生成的值,为图片的链接和编辑链接

测试无误后可以点击发布,工作流发布后,点击 bot 的发布,发布为 API,则可以在我们的前端页面中调用这个模型了:

import axios from "axios";
export const toMind = async (query: string) => {const url = 'https://api.coze.cn/open_api/v2/chat';const headers = {'Content-Type': 'application/json','Authorization': "Bearer your api key"};const body = {"conversation_id": "1","bot_id": "your bot id","user": "29032201862555","query": query,"stream": false};try {const response = await axios.post(url, body, { headers });console.log('Response:', response.data.messages[2].content);const urlPattern = /https:\/\/[^\s]+/g;let urls = response.data.messages[2].content.match(urlPattern);let imgUrl = urls[0]let editUrl = urls[1]return {imgUrl, editUrl}} catch (error) {console.error('Error:', error);}};

这段代码使用正则表达式/https:\/\/[^\s]+/g来匹配响应内容中的URL,包含两个属性imgUrl和editUrl,分别对应匹配到的第一个和第二个URL。将apikey和botid替换为自己的即可调用成功。

---- 完整的工作流可以+v: aircrushin 获取 ----

下一章我们将会在前端调用这个API,使其显示在页面中,实现生成功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

监控Linux/Windows服务器CPU、内存使用率TOP5的服务进程

主题&#xff1a;监控Linux/Windows服务器CPU、内存使用率TOP5的服务进程 内容&#xff1a; 一、Windows系统监控CPU、内存使用率TOP5的进程 1、编写脚本monitor.ps1 # 获取CPU使用率前5的服务进程,无法直接获取使用率&#xff0c;该值为“进程已用于所有处理器的处理器时间…

go语言怎么向kafka推送消息?

在Go语言中&#xff0c;你可以使用confluent-kafka-go&#xff08;也称为librdkafka的Go客户端&#xff09;或segmentio/kafka-go等第三方库来与Apache Kafka交互&#xff0c;并向其推送&#xff08;或生产&#xff09;消息。以下是使用confluent-kafka-go库向Kafka推送消息的简…

centos7安装mysql8-zabbix6.4

MySQL rpm -qa | grep mysql #查看是否已经安装 Mysql rpm -qa | grep mariadb #查看是否已经安装 mariadb,CentOS 7可视化安装会默认安装该数据库,安装MySQL前需要卸载该数据库 rpm -e --nodeps mariadb-libs #删除mariadb数据库找到对应linux的版本进行下载 […

从零开始:Spring Boot 中使用 Drools 规则引擎的完整指南

规则引擎作用 规则引擎主要用于将业务逻辑从应用程序代码中分离出来&#xff0c;提高系统的灵活性和可维护性。规则引擎通过预定义的规则来处理输入数据并做出相应的决策&#xff0c;从而实现业务逻辑的自动化和动态调整。 例如 门店信息校验&#xff1a;美团点评在门店信息…

【高中数学之基本不等式】已知:a,b皆为正实数且1/a+1/(b+2)=1/2 求:a+b的最小值?

解&#xff1a;先从1/a1/(b2)1/2 入手&#xff0c;看能否化二为一&#xff08;将两变量化成一个变量&#xff09; 由1/a1/(b2)1/2 两边通分得(b2a)/a/(b2)1/2 交叉相乘得2a2b4ab2a 最后得到a24/b 所以ab24/bb 此时已经可以用基本不等式了 ab24/bb>22*根号下(4/b*b)22…

SpringBoot 3.3.1 + Minio 实现极速上传和预览模式

统一版本管理 <properties><minio.version>8.5.10</minio.version><aws.version>1.12.737</aws.version><hutool.version>5.8.28</hutool.version> </properties><!--minio --> <dependency><groupId>io.m…

Arduino - TM1637 4 位 7 段显示器

Arduino - TM1637 4 位 7 段显示器 Arduino-TM1637 4 位 7 段显示器 A standard 4-digit 7-segment display is needed for clock, timer and counter projects, but it usually requires 12 connections. The TM1637 module makes it easier by only requiring 4 connectio…

有哪些防爬虫的方法

防爬虫的方法有robots.txt文、user-agent过滤、ip限制、验证码、动态页面生成、频率限制、动态url参数和反爬虫技术等。详细介绍&#xff1a;1、robots.txt文件&#xff0c;用于告诉搜索引擎爬虫哪些页面可以访问&#xff0c;哪些页面禁止访问&#xff1b;2、ip限制&#xff0c…

关于vs code中Live Server插件安装后无法打开的问题

一、问题情况 安装好Live Server插件之后&#xff0c;点击open with live server只会出现界面右下角落的提示&#xff0c;但是不会跳转到浏览器的页面&#xff1a;如下所示&#xff1a; 二&#xff1a;解决步骤 1、首先进行扩展设置&#xff0c;默认将浏览器的设置为chrome浏览…

深入解析 Redisson分布式锁看门狗机制

一、Redisson分布式锁概述 1.1 分布式锁的意义 在分布式系统中&#xff0c;多个节点可能同时访问共享资源&#xff0c;导致数据不一致或竞态条件。分布式锁通过协调不同节点对共享资源的访问&#xff0c;确保数据的一致性和并发访问的安全性。 1.2 Redisson分布式锁的优势 …

探索iOS开发语言基础与Xcode工具:从零开始构建你的第一个iOS应用

目录 1. iOS开发语言基础 1.1 Swift语言基础 1.1.1 变量和常量 1.1.2 数据类型 1.1.3 控制流 1.1.4 函数 1.1.5 类和结构体 1.2 Objective-C语言基础 1.2.1 语法和数据类型 1.2.2 控制流 1.2.3 函数和方法 1.2.4 类和对象 2. 初探Xcode工具 2.1 Xcode的安装 2.2…

Apache Doris 2.0.12 版本正式发布

亲爱的社区小伙伴们&#xff0c;Apache Doris 2.0.12 版本已于 2024 年 6 月 27 日正式与大家见面&#xff0c;该版本提交了 99 个改进项以及问题修复&#xff0c;欢迎大家下载体验。 官网下载&#xff1a; https://doris.apache.org/download/ GitHub 下载&#xff1a; http…

Zynq7000系列FPGA中的DMA控制器简介(三)

多通道数据FIFO&#xff08;MFIFO&#xff09; MFIFO&#xff08;Multi-Channel FIFO&#xff0c;多通道FIFO&#xff09;是一个共享资源&#xff0c;当前所有活动的通道都按照先到先服务&#xff08;First-Come, First-Served, FCFS&#xff09;的原则来使用它。对于程序来说…

vue组件全局注册

描述&#xff1a; vue组件的注册分为局部和全局注册两部分&#xff0c;局部注册相对容易&#xff0c;不做赘述&#xff1b;而不同框架的注册方法又有所不同&#xff0c;下面针对vite框架和vue-cli框架的注册分别进行说明 vue组件全局注册 一、vite框架中全局组件注册二、Vue-cl…

-bash: /snap/bin/docker: 没有那个文件或目录

-bash: /snap/bin/docker: 没有那个文件或目录 解决办法 export PATH$PATH:/usr/bin/docker然后&#xff0c;重新加载配置文件 source ~/.bashrc

使用ChatGPT提升Python性能:CUDA编程实战

PythonCUDA:将Python与GPU相结合的高性能计算工具 介绍 Python是一种简单易学的高级编程语言&#xff0c;而NVIDIA CUDA是一种基于GPU的并行计算平台。两者结合&#xff0c;可以实现高性能计算&#xff0c;Python可以做到数据处理方便快捷&#xff0c;而CUDA则以其强大的并行…

线程的等待通知机制

等待通知机制 之前所学到的join是等待线程结束,而此时的等待通知,等待代码给我们提示进行显示的通知(并不一定要结束),可以更加精细控制线程之间的执行顺序,在系统内部,线程是抢占式执行,随机调度,但是程序员也是有手段可以进行干预的,我们可以通过"等待"的方式让线…

【学术日记】关于读博,目标院校,意向导师,毕业要求,重要时间点

文章目录 一、目标院校二、重要时间点西安交通大学意向导师 华南理工大学意向导师 本文记录博主的科研日记。如果对博主的其他文章感兴趣&#xff0c;可以看这篇文章【CSDN文章】晚安66博客文章索引。 首次修改时间&#xff1a;2024年5月12日。当前修改时间&#xff1a;2024年5…

C : 线性规划例题求解

Submit Page TestData Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 93 Solved: 49 Description 求解下述线性规划模型的最优值min &#xfffd;1&#xfffd;1&#xfffd;2&#xfffd;2&#xfffd;3&#xfffd;3&#xfffd;.&#xfffd;. &…

Python项目开发实战,火车票分析助手,案例教程编程实例课程详解

一、项目背景与意义 火车票作为人们出行的重要交通工具之一,其购票难、查询繁琐等问题一直困扰着广大乘客。为了解决这些问题,我们开发了一款火车票分析助手,利用Python的强大数据处理能力和丰富的库资源,帮助用户更高效地查询和分析火车票信息。本项目旨在提高用户的购票体…