作者 | 姜天意
编辑 | 李忠良
ChatGPT 出现后,对于低代码产品的影响、冲击一直是一个悬而未决的问题。事实上 ChatGPT 不仅不会干掉低代码产品,还可以帮助低代码产品做得更好。 在 7 月 21-22 日 ArchSummit 全球架构师峰会深圳站上,我们邀请了腾讯云前端技术专家姜天意,他从 ChatGPT 的提示工程原理出发,讲解如何设计 AI 友好的应用,使用 ChatGPT 赋能低代码开发。本文为演讲内容概要。
今天的分享内容包括三个主要部分。首先,我将深入介绍大模型的 Prompt Engineering 和低代码技术。其次,我将详细展示低代码平台的各个功能模块,并分享如何运用 AIGC 技术在各种低代码场景中取得成功。最后,我还会简单探讨一些低代码的高级技术。
首先,Prompt Engineering 能够让你更准确地从大模型拿到你想要的知识,与此同时,它能够让大模型给你返回的内容更好地接入你的系统。这里涉及到多个要素,包括指令、上下文、输入数据和输出。
在 Prompt 过程中,需要特别注意 Temperature 和 Top_p 这两个参数,它们对于控制模型的回答风格十分关键。对于创作性工作,例如诗歌或文案创作,我们会适当增大这两个参数的值,以便模型能够更加自由地发挥创意。相反,如果我们的目标是生成代码或 DSL,我们会倾向于将这两个值设定较小,以确保模型的回答更为精准。
同时需要注意虽然 ChatGPT 3.5 和 Text-davinci-003 都属于 OpenAI ChatGPT3 家族,但 ChatGPT 3.5 -Turbo 不仅更经济实惠,效果也更为出色。在同等情况下,我强烈建议优先选择 GB 3.5 Turbo。另外,如果条件允许,我们还可以考虑使用 ChatGPT 4。此外,我们还注意到"Role"在与大模型的对话中扮演着重要角色。
由于大模型的无记忆特性,我们需要通过某种方式保存所有聊天记录和上下文,以便模型能够理解我们的需求。System Role 是指对模型的输入进行指定,以便模型在生成回复时具有特定的角色或身份。通过为模型设定系统角色,你可以引导模型以特定角色的视角来产生回复,从而限定回答的范围和内容,使其更加符合特定的上下文或需求。User Role 用户消息一般是用户自己的输入以及开发者给 GPT 的一些指令。助手消息 Assistant Role 可以帮助存 GPT 自己的响应。
当对话场景需要引用之前的消息时,就需要维护好这个 message 数组,这就是所谓 GPT 对话的上下文 or 历史记录。大模型对过去的请求没有记忆,所以你如果想保持这个上下文,必须维护好这个 message,然后在每次对话过程中,把完整的 message 传过去。因此,如果这些记录超过了模型的 token 限制,就需要以某种方式缩短它。
这里的 token 是什么意思呢?GPT 家族的大语言模型会使用 Token 作为处理文本的标识,用来标识一段文本中的“词”。大语言模型会理解这些 Token 之间的关系,并能够预测一系列 token 中的下一个。文本占据多少 Token 我们可以通过 https://platform.openai.com/tokenizer or tiktoken 来计算。在计算过程中发现,中文占据了大量 Token,同时换行、标点符号等也会占据 Token。根据 openai 的建议,一个 token 能写 4 个字母,或者 0.5 个汉字。因此 4000 个 token 可以写 2000 字的中文。
输入和输出都会计算 Token 。比如 API 调用在消息输入中使用了 10 个 Token,而在消息输出中收到了 20 个 Token,则需要支付 30 个 Token 的费用。如果在调用时候超了,会调用失败。输出的时候超了,会被截断。因此你自己的 GPT 应用, 一定要实现“试算 Token” 的功能。不同模型支持的 Token 最大值参考 https://platform.openai.com/docs/models/moderation
由于 Token 价格昂贵,因此在一段时间之内,“省 Token ”都是 AI 应用需要关注的重要问题。
Prompt 高级技巧 - Zero Shot 与 Few Shot
目前的大语言模型(LLMs)通过大量的数据训练和指令调整,能够在零样本情况下完成任务。
以上例子中我们直接向大模型提问,并没有添加任何需要示范的例子,就可以得到很好的回复,这便是零样本 (Zero Shot) 能力。但事实上很多场景零样本是无法得到我们想要的结果的。
有些复杂的任务,比如成语接龙,仅靠 Zero - Shot 可能不够,这时就需要用到 Few-Shot 技术。比如,我们想生成数据可视化图表的 JSON,可以通过 Few-Shot 技术,给出一些具体的例子让模型学习。同样,对于自己的可视化图表库,也可以用 Few-Shot 技术教会模型生成。这种方法尤其适用于一些可以列举场景的问答和学习。
Prompt 高级技巧 - COT
思维链提示(Chain-of-Thought,CoT)是一种用于提高大语言模型推理能力的技术,通过提示模型生成一系列推理步骤来解决多步骤的问题。研究表明,这种技术可以显著提高模型在数学、常识、推理等方面的准确性。该技术的应用使得模型能够将多步骤的问题分解成中间步骤,从而更好地理解和解决问题。
比如一个简单的例子
我们发现 GPT 已经完全懵逼了。但如果我们加入一句 “请进一步思考下”,引导 GPT 按照步骤思考呢
效果非常惊人。同样我们在之前的例子中使用魔法咒语:
效果也非常好。事实上思维链的“触发”方式,就是在原始提示中添加“逐步思考”"请一步步思考问题",但它能够起到非常惊人的效果。
事实上,思维链远远不止“让我们逐步思考” 这一魔法咒语,他可以仅仅通过 Prompt 就可以让 GPT 完成非常复杂的任务。下面我们来举个例子:男生送礼物给女生,应该怎么选?
如果考虑下人类的思考过程,可能会这么想:
1. 我这个朋友是男生。 2. 男生可能会喜欢一些高达、手办、相机等等。 3. 那我就在其中选择一个。
可以看出,人们在得到一个问题的最终答案前,通常是会有若干个「中间步骤(intermediate steps)」的。因此我们可以把这些“中间步骤”明确出来,引导 GPT 进行思考,prompt 设计如下:
这个 Prompt 中,首先我提供了两个工具,告诉这两个工具可以帮助 GPT 获得答案。之后特别指出,GPT 每次思考都要返回 Thought、Action、Action Input,他要先去我的工具库中寻找工具,调用适合的工具,并返回答案,同时要一直不停的做,直到得到答案。那我们看下实际使用时,GPT 是如何思考的:
可以看到 GPT 像人一样,一步步的思考问题,他首先理解了这个问题,并从工具库中取出了性别判断工具,进行判断后,他又在工具库中取出了礼物推荐工具,并进一步得到结论。其实这个思路就是非常流行的 Reasoning + Acting :ReAct 技术,每次让 LLM 输出一个当前的【思考】和【要做的动作】,这个动作并不只限于检索信息,可以是调用任何工具,类似 ChatGPT plugin。LLM 通过 few shot 的例子和工具自带的描述、还有它自己学到的常识来决定何时调用工具以及如何调用工具。目前 ChatGPT plugin 也可以调用各种工具,让大模型与外界数据互动,变得更智能。
Prompt 高级技巧 - 生成知识
大模型不是万能的。我们可以通过生成知识把外部知识给灌入大模型,这个时候大模型就具有了领知识的这个识别和学习能力。比如,当我提问高尔夫规则的,大模型答错了,我们可以用生成知识的技术纠正它,然后再问一次,这样就能得到正确的回答。将生成式知识技术与 Few-Shot 方法结合,是许多低代码技术的基础之一。同时,这种结合也是构建各类问答系统、知识库等产品时不可或缺的重要技术支持。
再举个例子,比如我可以通过逻辑编排的 DSL 描述从 A 流转到 B 再到 C 的过程。刚开始,ChatGPT 可能返回一个 A-B-C 的 DSL,但我想让它理解平台的逻辑编排 DSL。我采用一段 JSON 数据来表示逻辑编排,其中 Node 表示节点,link 表示节点关系。通过示例教给 ChatGPT 后,它就掌握了这种 DSL。
接下来,我提出一个问题,让它用某种语法表达 A 到 B 到 C 的过程,结果 ChatGPT 成功返回了自有流程编排的 DSL。因此,自定义 DSL 不再是难题。
在处理 Prompt 的过程中,有几个关键点需要注意。首先,我们需要确保将任务分解得足够细致,以确保 ChatGPT 能够更轻松且更准确地理解。
其次,Prompt 工程应该以一种包含指令、上下文输入和输出格式的方式来构建,这有助于提供明确的指导。第三,我们应当明确地提升模型,确保我们的指导可以让 ChatGPT 生成更加明确的回复内容。
最后,我们需要避免不必要的废话。在此之后,我们还介绍了一些高级技巧,如之前提到的 "Few Shot"、"思维链" 以及 "生成知识"。
AI 应用的开发利器 - LangChain
LangChain 它将大模型可能需要的各种能力封装在一起。例如,调用大模型、文本加载和处理、云存储以及数据库接口等等。这些能力可以根据你的需求自动执行,同时还提供了对 Few Shot 的管理以及 Prompt 词的支持。其中,"chain"是 "LangChain" 中最关键的概念。但简单来说,它就是一个封装了明确输入和输出的独立任务。不同的链式任务具有不同的输入输出要求,例如,有的链式任务专门用于对话,有的用于文档检索,有的用于数据操作等。
当然,一旦你深入了解了链式任务,你就能够构建自己的链式任务。因此,在大模型开发中,你可以借助 LangChain 来加速开发。举个例子,进行一个爬虫任务,通常情况下,我们会使用解析 HTML 和正则表达式来处理网页内容。然而,ChatGPT 提供了一个 Request Chain,它可以从网页中获取文章内容,然后我们可以构建一个 Prompt,将请求结果传递给大模型,最后通过 JSON 格式化数据。一旦我们初始化了 Request Chain,只需要提供一个 URL 和大模型,它就能够完成解析。
ChatGPT 与低代码
低代码技术在过去几年取得了显著发展,涵盖了数据分析师使用的 BI 工具、运营人员使用的广告工具、卖家的店铺搭建工具,还有产品经理和开发人员使用的 UI 可视化工具等。低代码技术在 Web 应用架构中也有广泛应用。
传统情况下,前端会调用后端接口进行数据处理和逻辑编排。但是,我们可以使用 UI 编排来实现低代码界面搭建,逻辑编排可以用于构建页面间的交互行为,业务逻辑的构建也可以通过逻辑编排来实现,而接口服务的构建则可以通过服务编排来实现。总之,所有这些功能都可以利用 ChatGPT 来实现。
在分享中,我的思路是先分解任务,构建 Prompt,然后获取并解析 OpenAI 的输出。
在上面的案例中,我们的目标是根据需求生成 DSL,特别是让 ChatGPT 能够生成 SQL 语句。
首先,我们要确保 ChatGPT 理解 SQL。其次,我们需要传达上下文,告诉模型关于库表的信息以及具体要执行的操作,例如查询人员或物品。我们可以通过一个简单的示例来展示,为一个表字段进行按性别分组,按排名排序。
这样的 Prompt 非常简单,然后我们将其集成到真实应用中,用户只要选择数据源并输入需求,ChatGPT 就可以生成相应的 SQL 语句。实际上,如果你熟悉数据分析和数据开发领域,你会发现 SQL 编写会耗费很多时间和精力,这个工具的出现可以大大减轻 SQL 工程师的负担。设计优秀的 Prompt 对于实现有效目标非常重要。
如果我们想要将这项技术应用到我们的低码平台中,通常,首先用户会输入一个 SQL 查询。在浏览器端,我们会调用 Meta service,它在低码平台中通常用于存储元数据或领域模型。这样,我们可以获取字段表结构或领域模型的信息。然后,通过一个网关,无论是用 NODE 还是 Python,我们都可以调用 ChatGPT 来将表结构和 SQL 整合,然后将生成的 SQL 返回给用户。
这里我们将 OpenAI 或 ChatGPT 作为一个服务集成到我们的系统中,完成了 AI 转 SQL 功能的开发。在这个过程中,还有一些简单的技巧。比如,DDL 可能会非常庞大,特别是表有很多字段的情况下,可能会导致 Token 超限。为此,我们可以采取一些策略来缩减 DDL。另外,我们还可以引入一些路由,让用户先选择领域模型,以减少 Token 的浪费。类似的产品在开源社区中已经有了,例如 SQL chart,它已经实现了整个流程,我们可以直接借鉴。
另一方面,采用 Lang Chain 方案开发更为简单。我们可以引入 SQL DataBase Chain,连接数据库并获取结果。该 Chain 接收大模型和数据库参数,可连接 MySQL 数据库。通过这种方式,开发 AIGC 应用变得非常简单,只需构建数据依赖,选择合适的 Chain,运行即可。
在低代码开发中,我们面临一个复杂的问题:如何对接多样的数据源和查询网关。通过 AIGC,我们有了一种解决方法。
我们可以将任务分解,以获取数据为目标,通过构建 Prompt 引导 ChatGPT 理解可用接口、所需字段和期望输出。架构设计如下:用户请求通过代理服务发送给机器,将 Swagger API 和请求合并为 Prompt,AI 返回接口描述。代理服务再实际请求服务,将数据通过 AI 翻译,最终得到结果。然而,接口数量庞大,需要不断开发新接口。与此同时,Swagger API 可能冗余,接口能力限制多样需求。
鉴此,我们提出了"AI 友好的接口设计"概念,考虑使用 GraphQL 解决这些问题。
当开发 RBAC 权限模型时,我们常涉及多对多的用户角色权限关系,传统接口可能会面临大量 Get 和 Post 接口。为了解决这个问题,我考虑将表结构转化为 GraphQL 结构。即使你不熟悉 GraphQL,我可以通过 ChatGPT 模型提供表结构信息,让 ChatGPT 将 DDL 转换为 GraphQL 查询语言(GQL)结构,生成多个类型,处理关联关系并构建查询语句。
通过这种方式,我们无需手动开发接口,只需定义好 GraphQL 查询模型,ChatGPT 会自动生成相关数据模型的查询语句,这比开发大量接口要方便得多。
AI 友好的概念是让 AI 发挥其擅长的能力,而不是强迫它学习我们的系统技术。ChatGPT 可以更好地理解 SQL 和 GraphQL,但可能不理解 Swagger。
大模型 X 低代码搭建
接下来,我们可以考虑低代码搭建。我们常常在界面上拖拽组件并编辑属性,设计结构包含配置和组件的 Schema,定义类型、属性和子元素。通过应用知识生成和 Few Shot,我们可以构建低代码搭建系统。
首先,我们能通过自然语言和用户名进行查询过滤,生成所需的 DSL,直接呈现动态界面。这个界面是可操作的,并且可以随时修改。不同于一次性生成,我们的编排工具着重在实现可编辑的 DSL。我们设计了生成机制技术的 Prompt,使 ChatGPT 返回适用于我们低代码平台的 DSL。这里有两个问题:低代码平台有许多组件,而许多 AIGC 平台不支持二次编辑。我们目标是生成可编辑的 DSL。构建 Prompt,将整个 DSL 知识以 JSON Schema 告诉 ChatGPT,再传递组件知识.
总体而言,我们构建了一个 DSL 模板,上半部分是 DSL 结构,下半部分是组件结构。引入当前业务模型信息后,我们获得 ChatGPT 生成的 DSL,与之前的 DSL 基本相同,验证了 Prompt 模板思路的正确性。这使我们能够实现可编辑的 DSL。
接下来,让我们解决第一个问题,即组件过多的情况。我们可以将 ChatGPT 视为智能平台,告诉它我们需要构建一个页面,其中包括查询列表和搜索列表,然后询问它需要哪些组件。这时,ChatGPT 将首先提供组件列表。假设我们的低代码平台有 100 个组件,我们只返回其中四五个组件的 Schema。接着,我们将当前的 Schema 与 ChatGPT 和数据模型结合,再次生成一个 prompt。通过这种方式,我们能够在生成 DSL 时节省所需的 Token。
第二点是关于二次编辑的方法,我们采用一项名为"JSON Path"的技术。它指导我们如何操作 JSON 数据,包括替换、增加和删除。这相当于一种针对 JSON 操作的专用语言(DSL)。
将 JSON Path 应用于原始 JSON 数据后,它返回经过操作的结果,实现了低代码平台的二次编辑功能。我们可以直接告诉 ChatGPT,需要在 JSON 数据中删除某功能,并采用"JSON Path"格式返回。
ChatGPT 将呈现原始 DSL 结构和" Path"格式,这使我们能仅通过操作"Path"部分,而不影响原始 DSL 结构。此外,我们还能将"Path"集成到自己的平台,提供"Path",具体操作由我们完成。ChatGPT 将直接返回"OP"为"remove"的结果。
总之,通过"JSON Path",我们实现了 AIGC 应用的二次编辑功能,能进一步操作和修改原始 JSON 数据。
大模型 X 逻辑编排
接下来,让我们思考逻辑编排的内容。首先,我们需要明确逻辑编排的领域特点,即逻辑编排的领域特定语言(DSL)具体是什么样的。在如何让 ChatGPT 学习逻辑编排方面,我认为基于流程式编程的思想是关键。
流程式编程,即 flow based programming,包含三个主要要素:进程、组件和网络。
- 进程:作为流程式编程的核心部分,进程可以被视为流程中的节点。每个进程代表特定的操作或任务。
- 组件:进程中的节点被称为组件,它们是具体的功能单元,用于执行特定的计算或操作。
- 网络:组件通过连接形成网络,这个网络描述了不同组件之间的数据流和控制流。
这种流程式编程的抽象概念存在众多进程、组件和网络构成的结构。因此,如果我们拥有一个能够描述流程式编程过程的领域特定语言(DSL),那么我们就能够实现通用的逻辑编排描述。
首先,我们可以考虑如何以图的形式存储这种描述,这个图可以被称为有向图。在图中,Flow 表示整体,NODE 表示所有节点,link 表示节点之间的关系。进一步,我们可以定义一个 TypeScript schema,它是这个 DSL 的基础。
接着,我们有 Node 节点,这实际上描述了逻辑编排节点的相关特性。而 Links 通常用于描述节点与节点之间的关系、流向或逻辑。当我们得到这个逻辑 DSL 后,结合之前的 Few Shot 和生成知识技术,实现逻辑编排变得更加简单。
我们可以直接向 ChatGPT 提供一个 JSON 片段,通过这样的输入,ChatGPT 将学习到我们的 DSL,从而能够生成逻辑编排的描述。最终,我们可以在画布上得到类似下面这样的图。
当然,在实际解析时,我们会根据自身系统的需求进行相应的解析。不同的系统,无论是数据平台还是前端逻辑,都可以根据这个 DSL 转换成相应的逻辑表示。
大模型 X 数据可视化
在数据可视化部分,我们首先利用"Few Shot "和生成知识技术,让 ChatGPT 返回与数据相关的 DSL。然后,我们用自己的方式绘制图表。然而,优秀的数据可视化不仅仅是图表绘制,而是需要解析数据问题。用户通常希望在可视化中发现异常情况。因此,我们需要考虑两个方面:如何寻找数据异常,以及如何选择适当的图表。这些任务可以借助 ChatGPT 完成,如关联、孤立森林、离群、时序等自动化分析算法。
关于如何将这些算法应用于 ChatGPT,有两种方法。首先,我们可以直接告诉 ChatGPT,让它基于线性回归思路找出数据中的异常值,例如使用 Zscore 算法,ChatGPT 会为我们生成相应的 Python 代码并进行计算。另外,ChatGPT 在 6 月后推出了"Code Interpreter"功能,我们可以传入异常检测的 Python 包,让 ChatGPT 调用该包进行异常检测算法,使其更强大。
接下来,我们要考虑如何让 ChatGPT 绘制适合的图表。
我们可以将这个决策过程嵌入到 ChatGPT 中,向其提供一些指导,比如查看数据分布时使用直方图,分析构成时使用饼图,或者查看数据趋势时采用其他类型。
举个例子,我有一份包含每年销售数量的袜子数据,要求展示并分析其中的异常,并将异常标注在图表上,但我并未明确指定图表类型。然后,ChatGPT 为我返回了结果,首先找出了异常数据的位置,其次自动选择了适合展示的柱状图。
大模型 X 问答系统
在开放的系统中,答疑可能会变得棘手。用户可能找不到组件文档,也可能不了解如何使用平台。比如,用户可能问关于平台如何支持在线打包发布的问题,我们或许可以通过生成知识的方式将所有文档传给 ChatGPT,然后再返回打包后的文档。然而,实际情况并非如此。
首先,所有文档的 Token 非常多,需要大量 Token。其次,我们如何判断用户的问题与文档的关联性呢?在我的调研中,我发现了一个名为 "Supabase" 的平台,一个新兴的创业公司,专注于数据库。这个平台,我注意到它的所有文档都是英文的。但当我询问如何使用 "next.js" 连接 "Supabase" 时,它为我提供了完整的目录和文档,这让我感到好奇。
如何判断两段文字是否相似?通常,最简单的方法是字符串匹配。然而,如果这两个字符串的长度和结构不同,例如 "狗咬耗子" 和 "犬类捕食啮齿动物",虽然在语义上它们相似,但使用任何字符串匹配方法都较难实现。但如果我们能够将它们转化为向量,将其映射到坐标轴上,就可以进行计算。这就是 Embedding。
在自然语言和机器学习领域,Embedding 是一个热门的方法。其原理是将单词、短语或句子转化为连续的向量空间。通过这种转换,我们可以进行数学计算,使用余弦相似度或距离算法来衡量两段文字之间的距离,从而判断它们是否相似。这种技术被广泛用于聚类、搜索、异常检测、分类等领域。
大模型 X 文档知识库
那么,如何结合这种技术来构建我们的文档知识库?首先,我们将所有文档转换为向量,可以使用 OpenAI 官方的 Embedding 工具,例如 Ada-002。然而,这种转换带来的维护难题不容忽视。
接下来,我们考虑如何存储这些向量,这就是向量数据库。这种数据库不仅储存向量,还提供了计算向量相似度和查询的算法,以及类似 SQL 查询语法。例如,我想查询与我提到的句子相似的向量文本,我可以写类似于 "SQL SELECT FROM items" 的查询,关键操作符是 "ORDER BY Embedding"。
随后,我们可利用这些知识快速建立文本知识库。首先读取并向量化分块存储所有文档到向量数据库。当用户提问 "whats the maker schedule?",我们将问题向量化后在数据库中查找相关内容并返回。接着,将这两部分信息作为生成知识输入给 ChatGPT,ChatGPT 处理后再返回给我们,这是构建文档或 AI 知识库的基本思路。
另外,使用 LangChain 可简化过程。选择合适的 Chain,如 QA refine chain。加载文本并切片,用提供的工具转换为向量存储。之后可进行提问,运行 Chain,得到结果,核心思路很明确。使用 LangChain 思路是选择一个合适的 Chain,之后构建内容即可。
总结一下,实现低代码关键在于构建良好的 Prompt。同时,我们要相信 ChatGPT 具备强大的学习能力,能够吸收低代码的知识,包括 DSL 和领域模型。在搭建场景时,设计一个合适的 DSL 是至关重要的。
ChatGPT 高级使用技巧及思考
刚才我们已经看到了 Lang Chain 的简洁性,那么 Lang Chain 是否适合低代码化呢?。我们以 ChatPDF 为例,这个开源平台能够上传 PDF 文件并进行内容分析。我们可以利用之前的向量数据库知识来完成这个过程。我们打开 Flowise。
首先,我们选择了 QA chain,然后将大模型(例如 open AI)迁移到其中。在这个过程中,我们需要思考文本的处理和 Embedding。选择一个合适的 Embedding 方法也很重要,例如我们可以选择 pinecone 向量数据库。在将向量数据库连接上之后,我们需要输入文本和嵌入,其中文本输入可以使用 Lang Chain 提供的 Text Loader 工具。
通过这一系列步骤,我们就完成了估值 2000 万的 ChatPDF,只需简单的拖拽操作即可实现。
接下来,我们将探讨第二个概念——AI based agent,这是一个庞大的主题,你可能熟悉 AutoChatGPT、SuperAgi 等类似平台,它们共享相似架构:将任务交给 AI,AI 负责调度、查询并找到相关工具。在 6 月 23 日,OpenAI 提出了 LM powered autonomous agent 概念,明确了以 Agent 为核心的 AI 应用架构。原有的 AI based 应用现在称为 Agent 应用。这个架构中,AI 应用的主入口是 Agent,所有平台功能则是放在旁边的工具。
AI 应用提供 memory 用于存储上下文。你可以使用决策工具或思维链指导 Agent 操作,用 Chain of thoughts 或 ReAct 指导 AI 应用执行。
传统的应用架构通常牵涉界面访问和服务端调用数据,AI based 应用的架构可能颠覆传统设计。市面上出现多种这种架构解决方案和低代码编排工具。
ChatGPT 在我看来有以下几方面价值。首先,虽然 ChatGPT 不是全能的,但通过构建 DSL 和 Prompt,我们能最大程度发挥其价值。其次,工程能力的结合能显著提升 ChatGPT 效果,将其打造成强大的 AI 服务。第三,进行 AIGC 或低代码编排,优秀的 DSL 是基础。从之前的演示中我们看到 ChatGPT 生成产品时, DSL 是关键,ChatGPT 是人机交互的桥梁,而 DSL 编写是工程提效的关键技术。最后,我认为 ChatGPT 不会取代我们。当我们对领域有深入了解时,可以把 ChatGPT 作为一个非常强大的工具。