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

news2024/7/6 18:07:45

【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: int

async def main(args) -> Output:
    params = args.params
    text = 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: str
    edit_url: str

async def main(args) -> Output:
    params = args.params
    text = 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.coloradmin.cn/o/1877402.html

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

相关文章

012、GridFS文件查询过程深度解析

目录 GridFS文件查询过程深度解析 1. GridFS基本概念 2. 查询过程详解 2.1 查询文件元数据 2.2 计算块数量和范围 2.3 查询文件块 2.4 组装文件内容 3. 优化查询性能 3.1 索引优化 3.2 流式处理 4. 高级查询技巧 4.1 范围查询 4.2 元数据查询 5. GridFS查询性能研…

python(基础语法,pandas,numpy,正则表达式,数据预处理)

python学习推荐网址&#xff1a; 白月黑羽 一、语法基础 目标&#xff1a; • list、tuple、set、dict的基本用法 • 内置函数 len&#xff08;&#xff09;&#xff0c; eval&#xff08;&#xff09;&#xff0c;range&#xff08;&#xff09;&#xff0c;sort&#xff08;…

长鑫存储母公司斥资24亿美元发展国产HBM

国产DRAM厂商长鑫存储母公司睿力集成计划投资24亿美元在上海建一座高端封装工厂。据报道&#xff0c;该工厂将专注于高带宽存储器&#xff08;HBM&#xff09;芯片的封装&#xff0c;预计到2026年中开始投入生产。长鑫存储将利用来自多方投资者的资金进行建设&#xff0c;其中包…

鸿蒙开发设备管理:【@ohos.multimodalInput.inputConsumer (组合按键)】

组合按键 InputConsumer模块提供对按键事件的监听。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口均为系统接口&#xff0c;三方应用不支持调用。 导入模块 import inputConsumer …

AI生图反向测试

1.在海艺AI先找一张图片&#xff0c;网址&#xff1a;免费AI艺术生成器&#xff1a;用文本创造AI艺术 - 海艺AI 2.上传到通义&#xff0c;让他描述一下图片特征 分析一下图片特征&#xff0c;用文字尽量详细的描述出来 这张图片展示了一位女性的肖像。她有着一头乌黑亮丽的头…

【折腾笔记】兰空图床使用Minio作为储存策略

前言 花了几个小时研究了一下在兰空图床中使用Minio作为存储策略,官方并没有给出太多关于minio的储存策略配置文档,我是经过反复尝试,然后根据错误日志的提示以及查阅兰空图床在GitHub上面的issues悟出来的配置方法。 因为我的兰空图床和Minio都是基于群晖的NAS设备DS423+…

【Python机器学习】分类向量——One-Hot编码(虚拟变量)

为了学习分类特征&#xff0c;以某国成年人收入数据集&#xff08;adult&#xff09;为例&#xff0c;adult数据集的任务是预测一名工人的收入是高于50k还是低于50k&#xff0c;这个数据集的特征包括工人的年龄、雇佣方式、教育水平、性别、每周工作时长、职业等。 这个任务属于…

C++知识点总结 (02):C++中的语句(简单语句、条件语句、迭代语句、跳转语句、异常处理语句、try语句等)

文章目录 1、简单语句(1)空语句(2)复合语句 2、条件语句3、迭代语句(1)常规for循环(2)范围for循环(3)while和do...while 4、跳转语句(1)break(2)continue(3)goto 5、异常处理语句(1)标准异常(2)throw抛出异常 6、try语句 1、简单语句 (1)空语句 ; (2)复合语句 用花括号括起来的…

PHP爬虫类的并发与多线程处理技巧

PHP爬虫类的并发与多线程处理技巧 引言&#xff1a; 随着互联网的快速发展&#xff0c;大量的数据信息存储在各种网站上&#xff0c;获取这些数据已经成为很多业务场景下的需求。而爬虫作为一种自动化获取网络信息的工具&#xff0c;被广泛应用于数据采集、搜索引擎、舆情分析…

fiddler使用

1、设置抓取HTTPS的请求 先选中浏览器Browser---Chrome 默认是不抓https的数据包的 有时我们抓取的的包是https的&#xff0c;不是http的&#xff0c;就要做一些设置 Tools---Options 勾选Capture HTTPS CONNECTs 勾选Decrypt HTTPS traffic 勾选 Ignore server certificat…

Python实现无头浏览器采集应用的反爬虫与反检测功能解析与应对策略

Python实现无头浏览器采集应用的反爬虫与反检测功能解析与应对策略 随着网络数据的快速增长&#xff0c;爬虫技术在数据采集、信息分析和业务发展中扮演着重要的角色。然而&#xff0c;随之而来的反爬虫技术也在不断升级&#xff0c;给爬虫应用的开发和维护带来了挑战。为了应…

淘宝扭蛋机小程序:现在是否是最佳开发时机?

随着科技的飞速发展和移动互联网的普及&#xff0c;小程序作为一种新兴的互联网应用形态&#xff0c;已经深入到人们的日常生活中。淘宝扭蛋机小程序&#xff0c;作为结合了娱乐与电商的创新模式&#xff0c;近年来备受关注。那么&#xff0c;现在是否是开发淘宝扭蛋机小程序的…

three.js - MeshPhongMaterial材质(实现玻璃水晶球效果)

1、概念 phong网格材质&#xff1a;Mesh - Phong - Material 一种用于具有镜面高光的光泽表面的材质。 它可以模拟&#xff0c;具有镜面高光的光泽表面&#xff0c;提供镜面反射效果。 MeshPhongMaterial&#xff1a; MeshPhongMaterial是一种基于Phong光照模型的材质&#…

第三十六篇——最大熵原理:确定的答案找到之前,我们该做什么?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 又双叒叕一个伟大的原理&#xff0c;又双叒叕觉得太伟大了&#xff0c;知…

第三十七篇——麦克斯韦的妖:为什么要保持系统的开放性?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 如果没有详细的学习这篇文章&#xff0c;我觉得我就是被麦克斯韦妖摆弄的…

【项目实战】Android Studio简单实现图书馆借阅管理系统

希望文章能给到你启发和灵感&#xff5e; 点赞收藏关注 支持一下吧&#xff5e; 阅读指南 序幕一、基础环境说明1.1 硬件环境1.2 软件环境 二、整体设计2.1 数据库逻辑处理&#xff1a;2.2 登录/注册模块2.3 功能界面初始化&#xff1a;2.4 图书管理模块2.5 图书租借服务2.6 读…

Linux之进程控制(上)

目录 进程创建 进程终止 进程退出码 进程终止的方式 进程等待 进程等待的方式 status概述 总结 上期我们学习了Linux中进程地址空间的概念&#xff0c;至此进程的所有基本概念已经全部学习完成&#xff0c;今天我们将开始学习进程相关的操作。 进程创建 进程创建其实…

上市公司环境研究汇总数据集(2008-2022年)

数据简介&#xff1a;上市公司环境研究是指对上市公司在环境保护和可持续发展方面的表现和做法进行评估和研究。这些评估可以包括上市公司的环境风险、环境管理制度和政策、环境负债和环境绩效等方面。 上市公司环境研究可以帮助上市公司更好地了解自身的环境状况和风险&#…

聊天伴侣-豆包

前言 2024年5月14日凌晨&#xff0c;OpenAI发布最新多模态大模型 GPT-4o。GPT-4o的“o”代表“omni”&#xff0c;意为全能&#xff0c;与现有模型相比&#xff0c;它在视觉和音频理解方面尤其出色。GPT-4o可以在音频、视觉和文本中进行实时推理&#xff0c;接受文本、音频和图…

1/7精确到100位,1000位,100000位怎么算?

双精度 Console.WriteLine("1/7的值是" (double)1 / 7);结果:0.14285714285714285 即使使用双精度浮点数&#xff0c;精确的位数也是有限的&#xff0c;如果想精确到小数点后100位&#xff0c;1000位&#xff0c;甚至更高哪&#xff1f; 朴素的除法 除数 余数 商…