AIGC-Flow项目(一)为什么要写这个工具:以工作流的方式实现GPT、Midjourney、Stable-Diffusion等AI能力整合

1,167 阅读10分钟

ChatGPT普及了半年多,国内的大模型产品陆续发布了自己的产品,当我一个做建筑行业的朋友的一句”ChatGPT不好用啊“的时候,就知道了这个工具已经大面积普及使用。

大家也都知道了ChatGPT能做到什么不能做到什么,但是能用好ChatGPT的人不是太多,浅层次的编写文章、提问无法满足办公或者企业的需求,需要有更精准的提问和多种工具结合才能满足对AIGC的使用需求。

本篇文章是在我想到了这个工具,但是没有找到开源可用工具后,准备自己手搓一个的开始,做了一些调研准备,但是可能还不够充分。

为什么不用AutoGPT? 因为可控性差。

纯粹个人理解,如有不足,请大佬们不吝指教。

GPT的作用

作为调度中心,引用调度其他AI工具或普通工具

编程中对接第三方接口,最大的工作量是输入、输出,也就是让程序理解自己的需求和理解程序返回的内容,现在有了ChatGPT,让ChatGPT进行分析输入输出内容,并且将输入输出内容格式化,符合第三方接口后进行传递。

比如:使用心得:使用ChatGPT+MindShow实现快速制作PPT

MindShow需要MarkDown格式的内容生成PPT,这个工作流比较简单:

  1. 根据需求主题编写大纲、内容、示例,生成一个完整的PPT内容;
  2. 将PPT内容输出为MarkDown;
  3. 调用MindShow服务,生成PPT;

写到这里不得不提一下Prompt工程,如果想让ChatGPT能够产生生产力,需要知道Prompt怎么编写,这种编写方式在网上有很多,但是大多数都是教授了方法,毕竟Prompt才是公司的核心资产。

Prompt工程,编写流程化的Prompt

Prompt 工程师是什么?

是识别人工智能的错误和隐藏功能,以便开发者可以对这些发现进行处理。

如果你正在寻找科技领域最热门的工作,你可以尝试了解如何与AI聊天机器人交流,这可能会让你得到一份生成式人工智能Prompt工程师的工作。

Prompt工程师擅长对运行在大型语言模型上的AI聊天机器人提问,来获得所需的回答。与编写代码的传统计算机工程师不同,Prompt工程师通过向AI询问一系列逻辑缜密的问题来测试AI系统是否存在任何奇怪的行为或问题。

为什么要学习Prompt?

提高生成结果的准确性:Prompt是一种重要的工具,可以用于引导GPT生成特定的输出结果。通过优化Prompt的设计,可以提高GPT的生成结果准确性和效率,减少输出的错误率。

能够控制生成内容:Prompt可以让用户控制GPT生成的内容。通过改变Prompt的内容和格式,可以控制GPT生成的风格和表达方式。例如,如果您想让GPT生成一篇文章,您可以设置Prompt,让GPT生成一个指定主题的文章。

帮助模型理解任务:Prompt能够帮助模型更好地理解任务。通过设计合适的Prompt,可以让模型更好地理解任务的要求,从而生成更准确、更有针对性的结果。例如,对于一项机器翻译任务,通过设置Prompt,可以指导模型翻译特定领域的术语和表达方式。

如何流程化编写Prompt

因为ChatGPT的限制和对内容理解的限制,有的时候很难通过一条Prompt让ChatGPT来完全理解自己的需求,需要将自己的目的分为多个Prompt进行沟通。

比如上面的生成PPT的流程,可以通过一句话进行提问:

 帮我写一份员工职业素养培训的PPT大纲,并对每一项都详细描述,需要15页左右,使用Markdown代码块输出。

已经可以实现大纲的MarkDown代码输出需求,但是想要达到生成一份满意的PPT内容还有一定的差距(当然这个是个比较简单的示例,也可以通过完善Prompt来实现一次性输出,但是分开提问可能会更好)。

想要达到自己的需求,可以使用以下流程:

  1. 定义角色
  2. 说明任务需求
  3. 规范化输出格式

按照PPT的生成任务,可以分为如下Prompt进行发送:

你现在是我们公司的人力资源培训师,精通人力资源相关的技能。公司主要团队是软件研发团队,业务范围是:电子政务、文旅软件研发。你深刻了解公司业务,自主学习了很多这些业务相关的人力资源知识。明白我的要求后回复我: 明白了。
我需要你来设计我们公司软件研发部新进入的开发人员新人培训,包含常规新人培训的各类信息,并根据培训内容编写一份PPT内容。
针对你编写的内容纲要,分项进行简要说明,并对每个分项写3个示例。
将这份PPT的内容格式化输出为MarkDown代码块输出。

AIGC-FLOW设计思路

设计目标

搭建企业的Prompt知识库

Text2Text、Text2Image、Text2Video等各类AI应用,基础的使用是很难发挥他们的作用,并且无法达到生产的要求,一家企业如果想要通过AIGC提升效率,那就需要结合自己的业务模式,沉淀Prompt,这些Prompt将作为公司的生产资料进行存储、使用。

自动化执行

自动化执行可以以一些工作岗位举例,比如产品运营,为了铺设产品在自媒体平台的声量,需要定期的发布一些产品相关的内容,包含软文、硬广,发布涉及到多平台,如果使用常规的方法,需要一个人设计主题,然后要求ChatGPT写文章,并且文章如果需要配图,更是需要设计图或者使用Midjourney去生成图,然后手动插入到文章中。一篇文章需要10分钟,每天10篇文章,需要100分钟。

但是如果使用自动化执行,可以设计好流程,自动调用ChatGPT和Midjourney进行文章编写-->根据文章内容调用Midjourney生成图片-->调用模板输出,将图文结合-->调用发布文章接口,将文章推送到需要发布的平台。

格式化输出

使用Word、HTML、MarkDown等各种类型模板,将流程中的返回结果格式化输出。

自动化发布

github.com/crawlab-tea…

image.png

这个项目支持掘金、简书、知乎等各个平台。

等到项目最后再写一篇接入自动化发布的文章。

工具定义

AIGC设计中包含输入类、判断器、处理类、输出类,四种类型工具。

输入类

主要用于任务的参数输入,并且可以作为任务节点间的参数传递工作。包含Excel、TXT、Image、Word等各类文件输入器。读取文件中的信息,与工作流中的任务节点模板进行参数匹配,填充进入参数。

在任务节点中如果需要参数传递时,可以使用输入类工具读取其他工具输出的文件,传递到下一个节点。

判断器

根据上方任务节点的执行结果,判断下一步的走向,判断器可以接入ChatGPT,实现更多维度的判断。

处理类

接入ChatGPT、星火大模型、Midjourney、Stable-Diffusion、D-ID等平台,进行AI业务处理。另外可以接入一些自定义的数据处理工具,对输入数据进行处理后输出。

输出类

可以在过程中或者结束后进行输出,输出方式包含文件输出、第三方接口调用输出,比如调用自动发布平台将内容发布,也可以算作是输出方式。

输出类工具可以获取到任务节点的所有父级节点的执行结果,通过模板化输出方式,将内容组装到相应的位置。

工作流的设计思路

1.  确定业务需求:明确你希望通过AI工具自动化的任务或过程。这可以是文本分析、图像识别、语音处理等各种领域的任务。
2.  选择合适的AI工具:根据业务需求选择适合的AI工具或服务,例如自然语言处理(NLP)库、计算机视觉库等。可以考虑使用已有的AI模型和算法,或者开发自定义的模型。
3.  定义工作流步骤:将整个工作流程划分为多个步骤,并确定每个步骤需要输入和输出的数据。这些步骤可以是预处理、特征提取、模型训练、推理等。
4.  数据流和交互设计:设计数据在工作流中的流动方式和交互方式。确定输入数据的来源和格式,以及输出数据的目标和格式。考虑如何与用户交互,例如通过界面输入数据、展示结果等。
5.  集成AI工具:将选择的AI工具集成到工作流中。这可能涉及将AI模型加载到软件中,编写代码调用API或使用现有的AI库和框架。
6.  错误处理和异常情况:考虑工作流中可能出现的错误和异常情况,例如数据质量问题、模型训练失败等。设计合适的错误处理机制和异常情况的处理方式。
7.  性能优化和扩展性:优化工作流的性能,例如减少计算时间、内存占用等。同时考虑工作流的扩展性,使其能够适应更多的任务和场景。
8.  用户界面设计:如果需要用户与软件进行交互,设计用户界面,使用户能够方便地输入数据、查看结果,并管理工作流的执行和配置。
9.  测试和优化:对设计的软件进行测试,并根据测试结果进行优化和改进。确保工作流的稳定性、准确性和可靠性。
10.  部署和维护:将设计的软件部署到目标环境中,并确保其正常运行。定期进行维护和更新,以适应业务需求的变化和新的AI技术的发展。

工作流模板

工作流模板中包含n个任务节点模板,通过任务节点模板定义节点名称、Prompt、参数定义、输出类型、输出参数定义、父级节点等信息,组成一个任务树。

任务执行方式

  1. 任务树遍历执行;
  2. 任务结果遍历执行,如果任务节点输出为数组类型,则遍历数组,将数组转入下一个任务节点进行循环执行;

下期见

今天思路就到这里,动手先把框架搭建起来,之后定期更新进度,尽量每天更新点。