PS:虽然,我们应该以预训练的 Prompt 作为当前的目标,通过将大量的数据训练。但是,作为一个没有 AI 训练资源的普通人,这个价格太昂贵了。于是,我们探索能否基于工作流的方式,来构建半自动化编程。
周末,我们在 ClickPrompt 上添加了一名为 “步步惊心” 的工作流式的 Prompt 交互功能,在这个功能里,你可以设计自己的日常工作流,将它与 AI 结合到一起。在过程中,ClickPrompt 会提供一个编辑器,让你修改上一步的输出,修改完只需要继续 one click 即可。
诸如于,你在开发一个新的功能,而在那之前,你需要先分析一下需求,包含它的边界条件等等。在我们构建了工作流的情况下,只需要
随后,我们也可以继续要求 ChatGPT 帮我们编码。
PS:这是一个未 100% 完成的 demo 示例,只是为了更好的启发大家
接着,让我们来看 ClickPrompt 的示例《用户故事》。
首先,我们需要定义一个能继续让 ChatGPT 理解的需求,它需要尽可能的详细。于是,我们的 prompt 就相当的长,如下图所示:
在这个 prompt 里:
然后,点击 prompt 之后,我们就可以继续往下。
随后,我们提供了一个简单的 Textarea(等哪天有空换成好一点的编辑器),用户就可以复制他的大致需求进来,然后让 AI 进行分析:
所以,我们只需要继续点击即可,等待 AI 给我们的答案,如下图所示:
由于,我们已经限制了 AI 给的输出格式,所以可以作为下一个需求的输出。
在第三步里,我们提供了三种输出方式:时序图、测试用例、代码模板,按自己的需要选择合适的点击即可。这里以测试用例为例:
继续无脑的 click 之后,我们得到了纯代码,由于我们限制了输出只有 Java 代码,所以到这部分就是:
如果我们集成了工作流,就可以直接扔到代码库的对应位置了。
结合上面的工作流之后,认为一个结合 AI 的自动化的工作流应该包含四个要素:
简单来说,就是我们依旧需要碳基生物作为检查官,来检查硅基生物输出是否合理?
PS:在流程与工具上,我们在本周我们看到了一个 ChatGPT-CodeReview 的工具,它将流程结合到了 GitHub 的工作流中。
考虑到使用用户故事作为案例太简单了,所以我们正在构建一个新的示例,第二步是,以分布式的方式利用 ChatGPT 输出,来进行编码。
于是,我们让 ChatGPT 帮我们设计了一个 DSL 来描述:帮我设计一个 DSL 来表示一个系统的处理流程。然后,得到了一个 DSL:
System("BlogSystem") {
Entities {
Blog { title: string, ..., comments: [Comment]? },
Comment { ...}
}
Operation {
Ops("CreateBlog", {
in: { title: string, description: string },
out: { id: number }
pre: title is unique and (title.length > 5 && title.length < 120)
post: id is not null
})
}
API {
Route(path: String, method: HttpMethod operation: Operation)
}
}
它可以分析某一个场景的业务,基于这个业务做分析。在这个 DSL,反复让 ChatGPT 设计之后,勉强可以详细拆开任务:
所以,我们只需要拆解任务,并发送到各个管道里,再 merge 一下,就可能能得到一份可工作的代码。至于,前端部分,我们可以用类似的方式来设计。
当然了,由于现在的 ClickPrompt 与 ChatGPT 的接口还在开发中,所以这个功能,还只是在 PoC 阶段。
人们苦短,还是让 AI 帮我们做自动化,节省更多的时间用来搞创意。
围观我的Github Idea墙, 也许,你会遇到心仪的项目