我把一句话需求交给AI,它竟然给我返回了……

news2024/11/16 17:40:23

2fdf4fa24403fd17b5ef4716668f4494.png

 

f10256ddf054e25a039b46a1d46495b7.gif

👉腾小云导读

也许你经历过这种情况:产品和设计同学用一句话就把需求说完了,你抓破脑袋做出来的版本又达不到他们的要求。不如尝试让 AI 承担痛苦,让它理解、拆解并实现一句话需求?本篇作者尝试提出一个自动配置可视化系统,通过自动生成表单解决上述痛点。欢迎阅读~

👉目录

1 简介

2 AI 生成 DSL

    2.1 链路拆分

    2.2 Few Shot

    2.3 仿冒发言

    2.4 调优方案

3 实时推送

    3.1 开发阶段

    3.2 本地 Proxy 代理

    3.3 Nginx 反向代理
4 总结

01、简介

很多时候可视化系统是用于团队提升效率的利器,但无论使用者是产品运维还是开发者,都会遇到这样的问题:产品运维要配置可视化系统,有一定的使用配置成本。开发者要理解需求,又有一定的沟通成本。如果 AI 比你更会配置,也比你更容易懂“一句话需求”那会怎么样呢?

比如下面的两个例子,收到制作表单的需求时只有一句话:

“我想生成互联网职业调研”——将这句需求输入,会生成以下效果,系统自动补充了详细需求如:“年龄”、“性别”、“职业状态”、“最关心的互联网领域”、“工作经验”、“学历”、“毕业院校”、“毕业时间”。

291d2c5d6a95ab8a4f1e99c397c4835c.jpeg

 

“我想要一个任天堂调研”——将这句需求输入,会生成以下效果,系统自动补充了详细需求如:“是否拥有任天堂游戏机”、“最喜欢的任天堂游戏”、“最喜欢的游戏类型”、“最喜欢的游戏平台”。

3d91daec29247a415946a661eb9fe65b.jpeg

从上面两个案例看的出来,自动生成的表单能满足基本的需求。

当然,你在正常工作时会收到非常明确的需求。这时你很明确自己想要什么,AI 就会根据你的需求进行输出,尽量不去做更多的拓展。

“生成一个仙剑奇侠传的调研,我想知道粉丝的年龄段分布,性别,想知道他们最爱哪个系列,提供一些最喜欢的角色给粉丝选择”——将这句详细需求输入,会生成以下效果:“年龄段”、“性别”、“最喜欢的系列”、“最喜欢的角色”。

755a1b009cc99125ef5a4e8d8bf3f8cb.jpeg

整个展示流程:

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
 

AIGC 是零代码的体现,可视化系统则是低代码的体现。

但互联网没有银弹:

  • 零代码的自由度十分受限,拓展性无法满足用户。

  • 低代码通常需要内置大量的业务属性的模版,来降低用户的初始使用成本。

  • 数据更新接入的模型是 gpt-3.5-turbo,需要一些实时数据时仍然生成的是过往的旧数据。

AIGC 的能力是可以很好地弥补这中间的 GAP,AIGC 负责根据实际的用户需求来输出模版,然后用户就在生成的模版基础上进行部分的修改来满足最终的需求。转化到技术侧就是,AI 根据需求去生成满足可视化系统的 DSL 后,并导入到可视化系统中 。当我们明确我们需要 AI 实现的目标,下一步就是如何去做了。

02、AI 生成 DSL
 

DSL 是由人类对特定领域进行抽象的描述语言,在表单引擎这里则是 JSON Schema。要达到最终的 AI 生成 DSL 的目的,我认为有下面几个关键点:

  • 让 AI 更好理解你的输入。

  • 让 AI 按照你的规则输出。

但如何更好地激活 AI 达成这个听起来很简单的能力呢?

   2.1 链路拆分

其实上述的关键点就是我当前系统的重要两个环节:

  • 先让 AI 总结和描述需求所需要使用的表单组件和字段含义;

  • 我们拿着 AI 需要使用的表单组件,组合出一个组件使用的例子,通过仿冒发言的方式让 AI 进行学习。

最终 AI 就可以参照我们的要求生成我们想要的 JSON Schema 了。

ca01e4ca63aeedaf0b56f49773bb65e9.jpeg

   2.2 Few Shot

如何通过少量提示(Few Shot)让 AI 按照我们的要求输出数据呢?这里我参考了一个 Mr.-Ranedeer-AI-Tutor 的项目,它内置了一个 AI 导师功能来提供一个强大的学习课程能力。推荐大家在 GPT-4 上使用,效果非常的赞。它通过规范的 Prompt 传达给 AI 要做的事情,生成的规则是怎么样的。

这个是其中一个 Markdown 文件,利用这个 Prompt 激活 AI 导师。

ed5b593f81634ac15a3cef956a2b6e65.jpeg

当把整个 Markdown 丢给 ChatGPT,按照 Formats 字段,它很好地学习了整个输出的格式。

9064a94b82505988612c22e589dbf890.jpeg

于是我也按照这样的规则去制定我的 Prompt。

c432379d43211ad2f657b7d02176afc7.jpeg

通过上述的 Prompt,我主要做了以下几件事:

  • 提供了组件配置,且规定了 AI 只能使用这里的配置去实现需求。

  • 规定了 JSON 的输出格式,一个 components 数组,一个 requirement 的需求描述字段。

  • 不断调优过程中,制定的其他规则。

最终 ChatGPT 给我们正确返回了 JSON 数据。

781f8bce26442192c650e69b131c7c1c.jpeg

用于生成 schema 的 Prompt 和这个也差不多,这里就不展开解释了。

   2.3 仿冒发言

Chat Message 的定义中是有三种角色可以定义的 [System, AI, Human]。其中我们可以通过生成 Human Prompt,在我们生成 AI Prompt 来定义 AI 的回答,后续 AI 就会将这个回答的格式进行一定的参考。

在需求生成阶段,我定义的 AI 回答格式是这样的。

f8323b7316a0d473bb537712fabae4ba.jpeg

 

最终 AI 的生成格式也是按照我们的格式进行的输出。大致如下:“标题(组件,[选项])”。

743e13e4af6434ac34fd519774d242dd.jpeg

 

和用于生成 Schema 阶段的 Fake Answer 同理,这里就不展开解释了。

   2.4 调优方案

AI 在学习如何使用组件的过程中, 并不是全量进行学习的,这对 Token 消耗量很大。我在第一步转换需求的任务中,已经收集了 AI 会使用到的 components 列表。然后将 AI 生成错误的组件进行定制化的教学,专门组成一个学习案例,再配合 Prompt 的部分规则要求来纠正 AI。

例如 AI 一开始没办法正常输出带有选项的组件,总会输出 items 来作为选项,而正确的规则是 enum 字段。于是我通过传入组件的正确使用方式来让 AI 学习正确的使用方式。

从输出案例中找到可以 Select 组件的 JSON 规则。

24f1a03722e001d710e38229a7c48063.jpeg

 

并通过一条 Prompt 规则去强化 AI 的认知。

5b62bdb962d23fa85d1516b61a96e339.jpeg

你可以通过 AI 的返回,来不断优化 Prompt 的规则,引导 AI 往正确的方向进行内容的输出。

03、实时推送
 

下面快速总结一些 Langchain 的 Stream 方案中遇到的问题:

   3.1 开发阶段

我为了系统的整体交互流畅,输出内容这里是参考 ChatGPT 的服务器实时推送方案,使用的是 SSE(Server-Sent Event),客户端则是使用 fetch-event-source 进行数据的接收。

服务器需要做出如下的配置来开启 SSE。

res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');
 res.setHeader('Cache-Control', 'no-transform, no-cache');
 res.setHeader('Connection', 'keep-alive');

在写数据时,结尾必须遵循 data: ${message} \n\n的格式,客户端才可以正常接收。

86ae419aa8cd805377dfc1fb58e94352.jpeg

 

   3.2 本地 Proxy 代理

在开发阶段如果遇到内容并不是持续顺畅地输出时,请检查 Cache-Control 的 no-transform 字段是否有配置,有可能是你本地的 Proxy 导致响应内容无法持续传输到客户端。

5676c806869ec21da96a289bb79561ec.jpeg

   3.3 Nginx 反向代理

部署阶段如果使用 Nginx 等做反向代理,实际使用过程中会发现服务器会合并缓存的方式进行返回,让内容输出的交互看起来没有那么流畅。针对 Nginx 则需要更多的配置来优化流式输出的情况。

location /api {
   // 禁用缓冲。代理服务器会立即将上游服务器的响应内容逐段发送给客户端,不进行缓冲。适用于需要实时传输或流式传输的场景。
   proxy_buffering off;
   // AI 生成复杂内容的时间,容易超过 Nginx 默认配置的一分钟。
   proxy_connect_timeout 600;
   proxy_send_timeout 600;
   proxy_read_timeout 600;
   
   proxy_pass http://127.0.0.1:9000;
 }

04、总结

文章到这里就结束了,最后我们对 AI 生成的例子做个总结:尝试对流程做个拆解,通过多次问询的方案就可以达到目的。更复杂的场景还可以接入其他工具辅助 AI 最终的输出、格式化输出。如果要在代码中将流程串联起来,JSON/YML 都是很不错的格式。

不断优化你的 Prompt,准备做好一个调参工程师(Prompt Engineer)吧。如果觉得内容不错,欢迎转发分享~

-End-

原创作者|朱奕嘉

技术责编|张燕静

c2903ddfd4d6348eaebecb53878ea5b6.png

在工作中,AI 为你提供了哪些便利?欢迎在腾讯云开发者公众号评论区讨论。我们将选取1则最有创意的评论,送出腾讯云开发者-鼠标垫1个(见下图)。6月27日中午12点开奖。

1c05704f478cf4996b371045d2d32aeb.jpeg

e5a0bf534ea679443e5dae08619dda7b.png

b07e471d5426ec8bb9fcc67057497b12.png

➤ 算法工程师深度解构ChatGPT技术

➤ 这波可以,终于有内行人把 GPT-4 说透了

➤ ChatGPT深度解析:GPT家族进化史

➤ 对标ChatGPT,新AI助手Claude来了

➤ 白话科普:10分钟从零看懂AI绘画原理

➤ 鹅厂专家讲透AI文本生成解码策略与代码实现

4264b3d881a581681b545ed54e48e527.png

➤ GPT4结对编程实战,鹅厂研发真实使用感受

➤ 低代码结合ChatGPT开发,每天多出1小时摸鱼

➤ 鹅厂程序员怎么用ChatGPT?如何高效Prompt?

➤ 让AI替你打工?GPT提升开发效率指南

➤ 不写代码也能年薪百万?Prompt+低代码开发实战

➤ 从玩具到工具|社畜程序员用AI提效的神仙操作

bdaaeeb909445fa4cc437342bb76a8e1.png

➤“GPT们”背后谁来支撑大模型训练的极致算力

➤ QQGC?揭秘QQ的AI绘画大模型技术

7d102c6c490fafeb9af738f29ea8f46d.png

➤ 给想玩AIGC的小白:教你从0搭图文视频网站

➤ 快收藏!手把手教你用AI绘画

➤ 3小时开发ChatGPT微信小程序

8e0acef0a183466cce8a74d31034fe30.png

➤ 十问ChatGPT:一个新的时代正拉开序幕

➤ 154页GPT-4报告刷屏:提到了这些新能力和缺陷

➤ TVP专家夜聊:不用ChatGPT的开发都该被炒掉

AIGC知识专题持续更新中...

欢迎关注星标腾讯云开发者

第一时间看鹅厂技术与AIGC实用技巧

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

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

相关文章

踩坑:Vue3 中的watch监视属性

文章目录 一、问题一:reactive 定义的响应式数据无 oldValue问题分析解决 二、问题二:watch默认开启了深度监视且无法关闭问题分析解决 一、问题一:reactive 定义的响应式数据无 oldValue 问题 监视 reactive 所定义的一个响应式数据&#…

linux安装git步骤;基于yum、dnf、源码安装【非常详细】

这里写目录标题 一 dnf安装二 yum安装三 源码安装1 基于 RPM 的发行版(Fedora/RHEL/RHEL衍生版)2 基于 Debian 的发行版(Debian/Ubuntu/Ubuntu-derivatives)3 yum软件包管理器来安装,这个一般是CnetOS Stream 8以前的版…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 与其他的商业数据库在HTAP的异同点(译)...

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

​关于 O2OA (翱途) 软件商用许可证授权形式的调整​

尊敬的小伙伴们: 非常感谢您对 O2OA 开发平台的关注与支持! 兰德网络 O2OA 平台软件商用许证授权形式正式由 “按年授权” 改为 “按版本买断” 的永久许可形式。 这意味着,合作伙伴在持有特定版本的软件商用许可后,将能够永久…

《Python精选300题》

专栏简介 Python 是一门功能强大的编程语言,已经成为了数据科学、机器学习、Web 开发等领域的首选语言之一。因此,掌握 Python 的相关知识点对于学习和使用这门语言至关重要。 本专栏中,精选了 300 道题目,囊括了 Python 入门阶段…

什么是链表?

链表 什么是链表? 链表是有序的数据结构,链表中的每个部分称为节点。可以首、尾、中间进行数据存取,链表的元素在内存中不必是连续的空间,每个节点通过 next 指针指向下一个节点。 优点 链表的添加和删除不会导致其余元素位移。…

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现? 答案2023-06-21: java的: 这个问题,我问了一些人,部分人是回答得有问题的。synchronized这是个关键字&…

23---WPF数据库ORM框架

一、仓库--存放货物---数据库--存放数据--关系型数据/非关系型数据库 1.关系型数据:保存数据保存关系--SqlServer,MySql,Oracle 2.非关系型数据:保存数据---Redis,Mongo,Memecahe 二、关系型数据和非关系型数据的区别: 1.关系…

高效底座模型LLaMA

论文标题:LLaMA: Open and Efficient Foundation Language Models 论文链接:https://arxiv.org/abs/2302.13971 论文来源:Meta AI 一、概述 大型语言模型(Large Languages Models,LLMs)通过大规模文本数据的…

Selenium 环境配置

如果你做过 Web 测试的工作,那么你应该明白 Web 测试中最重要的一部分工作就是自动化测试。自动化测试,顾名思义就是让浏览器自动运行,而无需手动操作。这和我们爬虫工作原理有些相似,我们爬虫也需要让浏览器运行网址来获取我们需…

HTTPS加密

目录 HTTPS加密1.加密和解密2.对称加密3.非对称加密4.中间人攻击5.证书 HTTPS加密 1.加密和解密 1.明文: 要传递的原始信息。 2.密文: 经过加密后的信息。 3.加密就是指将明文(要传输的信息)按照指定的方式进行变换,生成密文。 4.解密…

Pytest+selenium+allure+Jenkins自动化测试框架搭建及使用

一、 环境搭建 1. Python下载及安装 Python可应用于多平台包括windows, Linux 和 Mac OS X, 本文主要介绍windows环境下。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 如未安装python, 推荐下载python 3.8.3以…

Android——事务处理(续)(十三)

1. 长按事件 1.1 知识点 &#xff08;1&#xff09;掌握长按事件的操作形式&#xff1b; &#xff08;2&#xff09;可以设置手机的桌面背景&#xff1b; 1.2 具体内容 范例&#xff1a;长按一张图片之后&#xff0c;此图片设置为手机桌面背景。 <LinearLayout xmlns:a…

LocalDateTime 和 LocalDate 与 date 有什么区别;LocalDateTime 示例,LocalDate 示例

目录 1 LocalDateTime 和 LocalDate 与 date 有什么区别2 LocalDateTime 示例&#xff1a;2 LocalDate 示例&#xff1a; 1 LocalDateTime 和 LocalDate 与 date 有什么区别 LocalDateTime、LocalDate和Date是 Java中不同的类库中用于表示日期和时间的类&#xff0c; 它们在功…

「Java核心技术大会 2023」6月重磅启动,邀你共同探讨Java生态

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初…

《机器学习公式推导与代码实现》chapter13-LightGBM

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 LightGBM 就GBDT系列算法的性能而言&#xff0c;XGBoost已经非常高效了&#xff0c;但并非没有缺陷。LightGBM就是一种针对XGBoost缺陷的改进版…

【C++11】 列表初始化 auto 范围for 新增关键字 新增容器

文章目录 1 列表初始化2 auto && 范围for3 新增关键字3.1 decltype3.2 default3.3 delete3.4 final与override 4 总结 1 列表初始化 由c语言的规则我们知道&#xff1a;一般只有数组才会支持用{}初始化&#xff0c;但是C11新语法规定我们不仅可以用{}初始化各种对象(内…

企业微信 创建应用后如何构造网页授权 获取token 获取用户信息

第一次对接企业微信&#xff0c;上网找了各种方案。 目的是在企业微信中&#xff0c;公司发给员工一个地址&#xff0c;员工点开后打开画面&#xff0c;在这个画面上可以获取到这个员工的userid&#xff08;后续功能操作就是各自不同的功能了哈&#xff0c;就不详细说了&#…

STM32F4_触摸屏

目录 1. 触摸屏原理 2. 电阻式触摸屏检测原理 3. 电容式触摸屏检测原理 4. 硬件配置 4.1 XPT2046驱动芯片 4.2 硬件设计 5. 代码详解 5.1 main.c 5.2 AT24C02.c 5.3 AT24C02.h 5.4 C_Touch_I2C.c 5.5 C_Touch_I2C.h 5.6 Touch.c 5.7 Touch.h 5.8 FT5206.c 5.9 …

ADAudit Plus:保护企业内部IT安全的强大解决方案

随着企业数字化的推进&#xff0c;IT系统和数据安全变得比以往任何时候都更加重要。为了保护企业的机密信息和敏感数据&#xff0c;企业需要一种可靠的IT安全解决方案。在众多选项中&#xff0c;ADAudit Plus是一款备受赞誉的软件&#xff0c;为企业内部的IT安全提供了强大的支…