最近许多朋友经常会在朋友圈转发和谈论关于AIGC 技能未来的考虑,以及怎么将它运用到互联网产品中。AIGC 技能中最为大家熟知的就是 OpenAI 发布的 ChatGPT 了。最近笔者也经常考虑怎么将它跟现有的业务场景结合。而恰巧最近在规划和开发一款 BI 体系,于是便测验将 ChatGPT 与 数据可视化进行结合,便有了此文。

1. 前语

ChatGPT 是一种依据深度学习的自然言语处理技能,能够了解和生成人类言语。与其他自然言语处理技能不同,ChatGPT能够自我练习和生成大量的文本数据。这使得ChatGPT成为了一个强大的东西,在多个范畴都被广泛运用。

假如能够经过与ChatGPT对话的办法,主动提取数据和可视化剖析。这将是一件十分 Amazing 的工作!

本文将探讨怎么运用 ChatGPT 完成智能数据可视化计划。

2. 计划探究

运用过 ChatGPT 的朋友都知道,Prompt(提示词)是协助咱们运用 ChatGPT 技能的关键。Prompt 是一种简短的文本片段,用于向 ChatGPT 供给上下文信息和指导。Prompt 能够包括问题、使命描述、约束条件等,以便 ChatGPT 了解用户的需求并生成更精确的呼应。

例如,在BI数据探究中,一个提示词可能是这样的:“请显现去年每个季度销售额最高的产品。”在这个提示词中,咱们供给了时刻规模、挑选条件和期望成果。ChatGPT 能够经过了解这个提示词,主动提取数据,并在图表中出现出符合条件的产品和销售额数据。假如咱们需求进一步了解某个产品的详细信息,咱们只需求供给更详细的提示词,例如:“请给我展现去年第一季度销售额最高的产品的价格和库存状况。”

Prompt 的规划十分重要,因为它直接影响到 ChatGPT 的呼应质量。好的 Prompt 应该具有以下特征:

  1. 简洁明了:Prompt 应该简单明了,不包括冗余信息或含糊性,让 ChatGPT 更容易了解用户的需求。
  2. 详细清晰:Prompt 应该具有满足的上下文信息,以便 ChatGPT 能够了解使命的目标和约束条件。例如,数据规模、挑选条件、期望成果等。
  3. 规模明确:Prompt 应该限制使命的规模,防止让 ChatGPT 陷入无限循环或无法了解的状况。
  4. 多样性:Prompt 应该包括多个变量和不同类型的提示词,以便 ChatGPT 能够从不同的角度了解用户需求并生成多样化的呼应。

所以,要想充分运用 ChatGPT 技能来完成可视化剖析,优化 Prompt 规划至关重要。笔者认为有两种思路能够考虑:第一种是经过 Prompt 引导 ChatGPT 生成个性化的可视化剖析引荐,并将装备提交给声明式可视化言语(Vega),以便直接进行可视化展现;第二种是经过 Prompt 引导 ChatGPT 生成数据查询 SQL,然后运用社区中的主动化剖析东西(例如 AVA)对获取的数据主动可视化展现。

下面将别离介绍这两种计划的完成。

2.1 计划1:ChatGPT + Vega

Vega是一种声明式的可视化言语,用于描述数据可视化图表和交互式视图。它支撑多种图表类型,包括散点图、线图、柱状图、区域图等,并允许用户界说各种视觉属性,如颜色、巨细和形状等。Vega运用JSON语法,并供给一个依据Web的编辑器Vega Editor,能够协助用户快速创建和修改可视化图表。它还供给了一系列东西和库,如Vega-Lite和Vega-Embed,以便在不同的运用场景中运用。

咱们能够运用 Prompt 供给关键字、目标群体、所需的剖析成果类型等上下文信息,ChatGPT 能够依据这些信息主动生成生命式可视化剖析引荐,然后将其装备提交给声明式可视化言语 Vega,便能够完成主动数据可视化。

这种办法适用于需求高度个性化的场景。

完成流程如下:

graph LR; A[用户] --> |Prompt| B(ChatGPT); B --> C{生成}; C --> |SQL查询| D[数据库]; C --> |装备信息| E[Vega]; D --> F((数据)); E --> G(可视化图表); F --> G;

首要用户提交合理的 Prompt 提交可视化需求给 ChatGPT,ChatGPT 经过 Prompt 主动生成数据查询 SQL 和 Vega 可视化 JSON 装备,然后将 SQL 提交给数据库获取剖析数据调集,最终讲 Vega 装备信息和数据集输入给 Vega 渲染引擎,就能够绘制可视化图表了。

完成效果如下:

ChatGPT助力可视化方案探索

能够经过此链接查看 Prompt

2.1 计划2:ChatGPT + AVA

AVA(A Visual Analytics) 是为了更简洁的可视剖析而生的技能结构。它是出自阿里巴巴集团(Alibaba)技能结构(又一个出自阿里大厂的开源结构,说实话,阿里国内我最喜欢的开源贡献大厂,没有之一!),其目标是成为一个主动化(Automated)、智能驱动(AI driven)、支撑增强剖析(Augmented)的可视剖析解决计划。

AVA 的全体架构如下:

ChatGPT助力可视化方案探索

依靠 AVA 结构的强大规划,咱们只需求供给数据给它,它就会依据输入的数据集,主动进行剖析和洞悉。所以,计划2 的核心就是怎么快速精准的获取到用户想要的数据。

完成流程如下:

graph LR; A[用户] --> |Prompt| B(ChatGPT); B --> C{生成}; C --> |SQL查询| D[数据库]; D --> E((数据)); E --> F(AVA) --> G(可视化图表);

运用 Prompt 包括数据规模、挑选条件等上下文信息,ChatGPT 能够主动生成相应的 SQL 查询句子。然后再将 SQL 提交给数据库获取数据,最终交给 AVA,主动完成数据剖析和洞悉剖析。

完成效果如下:

ChatGPT助力可视化方案探索

能够经过此链接查看 Prompt

3. 项目源码

两种计划代码比较简单,这里就不贴出来了,感兴趣能够直接阅览项目源码。ChatBI。项目服务端运用 NestJS 完成,前端运用 UmiJS + React + Antd。

项目服务端运行前,需求具有 OpenAI 渠道的 API KEY,假如国内用户无法获取,能够经过 AIGCaaS 渠道获取 Secret IDSecret Key。直接装备到项目根目录的 .env 文件即可。

文章 banner 图是经过 AIGCaaS 渠道供给的 Open Journery API 生成的。生成 Prompt 装备如下:

  • 图片宽度:800
  • 图片高度:480
  • 文本(Prompt):
    (((best quality))),single build,architecture, blue\_sky, building,cloudy\_sky, day, fantasy, fence, field, house, build,architecture,landscape, moss, outdoors, overgrown, path, river, road, rock, scenery, sky, sword, tower, tree, waterfall , \<lora:Pyramid lora\_Ghibli\_v2:1>
    
  • 反向描述内容(Negative prompt):
    easynegative, ng_deepnegative_v1_75t,{{{{bad_construction}}}},{bad_structure},bad_wail,{{{bad_windows}}},{blurry},cloned_window,cropped,{{{deformed}}},{{{disfigured}}},error,{{{extra_windows}}},{extra_chimney},{{{extra_door}}},extra_structure,{{extra_frame}},{fewer_digits},{fused_structure},gross_proportions,jpeg_artifacts,{{{{long_roof}}}},low_quality,{structure_limbs},{{missing_windows}},{missing_doors},{{missing_roofs}},mutated_structure,{{{mutation}}},normal_quality,out_of_frame,owres,{{poorly_drawn_structure}},{{poorly_drawn_house}},signature,text,{{too_many_windows}},{{{ugly}}},username,uta,watermark,worst_quality
    

4. 总结

比照以上两种计划,不难看出,Prompt 规划是完成 ChatGPT 技能可视化剖析的关键。经过合理规划 Prompt,咱们能够更好地运用 ChatGPT 技能,并以更高效的办法进行数据挖掘和洞悉。无论是运用个性化可视化剖析引荐还是主动生成 SQL 查询句子并运用主动化剖析东西,合理的 Prompt 规划都能够让咱们比以往更轻松地发现数据中躲藏的价值。

当然除了 Prompt 规划,咱们还需求考虑查询效率。咱们不可能每次提交 Prompt 都经过 ChatGPT 进行回复,究竟这个进程是很费时的,特别是对话上下文比较复杂的时分,即使运用 GPU 也可能需求数秒或以上的时刻。因此,对 ChatGPT 成果进行缓存是很有必要的。

一种常见的缓存战略是将 ChatGPT 的输出成果与 Prompt 保存在一个键值对中,以 Prompt 为 key,ChatGPT 输出为 value。这样,在接收到新的 Prompt 时,咱们能够首要在缓存中查找是否已经有对应的输出成果。假如找到了,直接回来缓存成果;不然,再调用 ChatGPT 进行核算,并将成果存入缓存中。详细计划还有很多,大家能够亲身测验。

5. 未来展望

跟着人工智能技能的不断发展,ChatGPT 等自然言语处理技能将变得愈加强大和普及,并且更好地与可视化剖析相结合,为用户供给愈加直观和高效的数据洞悉办法。

未来的可视化剖析也将愈加注重个性化和交互性。即使是同一份数据,在不同的用户需求下所出现的图表也应该是不同的。因此,咱们能够等待 ChatGPT 技能能够更好地了解个性化的 Prompt,并主动为每个用户生成符合其需求的图表和剖析成果。此外,交互式探究和剖析将成为趋势,这将不断冲击传统的人机交互办法。

智能化可视化剖析还有许多可能的改进方向。例如,经过更深入的对话,ChatGPT 能够更好地了解用户的关注点和需求,并供给更精准的呼应;经过结合常识图谱等常识库,ChatGPT 能够更好地了解复杂范畴的专业术语和语义规则,然后更精确地生成剖析成果。

写在最终,以上就是笔者近期运用 ChatGPT 的一些探究心得。关于AIGC技能,笔者也在不断学习中。期望本文能起到抛砖引玉的作用,假如大家有更好的思路,欢迎谈论区留言。