天天看点

一个产品经理是如何用ChatGPT开发软件的

作者:何必多想

背景

前段时间,我和公司的一位项目经理进行了交流。她负责多个项目的执行和交付,同时也深受各种POPO群消息轰炸的困扰。在公司,POPO被用作日常工作协同工具,功能类似于钉钉、飞书和企业微信。

我在日常使用ChatGPT的过程中对其代码编写和语义理解这两个能力尤其印象深刻。因此,我决定借助ChatGPT GPT4的能力开发一个POPO群消息助手产品。

当我开始这个项目时,钉钉和飞书尚未推出智能助理。随后他们的智能助理发布会上也公布了群消息助手功能,这也证实了这个功能是刚需。

产品实现

刚毕业那几年我一直在写程序。转行成为产品经理后,我的编码经验主要是用Python编写脚本和算法,几乎不再编写工程代码了。

POPO群消息助手是我很长一段时间来写的第一个工程软件。从产品构思到第一个版本的上线运行,累计大概花了四五天的时间。

产品的功能很清晰:

  • POPO群消息助手就是一个POPO账号。
  • 将这个账号加入任意一个POPO群后,它就会把该群当天的所有聊天内容按照不同的主题进行分类,总结出每个主题的关键信息和下一步计划。
  • 每天晚上它会自动把总结信息发到群里。任何一个人发消息@它,它也会发送相关总结信息。

整体产品的实现逻辑也比较简单:

  • 收集POPO群的消息。
  • 按照特定的格式将消息发送到GPT接口,由GPT进行群消息的概括。
  • 将概括的内容再发送到群内。

基于这次实践经验,我认为如果要利用ChatGPT完成一个工程型代码的开发,还是需要具备一定的技术基础:

  • 理解一些基础的技术架构。例如前后端的概念,客户端、服务端、第三方服务之间的区别等,这样才能提出合理的问题。
  • 能读懂代码。虽然ChatGPT可以直接编写代码,但你不能只通过一个需求就让它写出大量完整的应用程序。你还需要通过多个问题来完成程序不同部分的代码,这些代码的组合仍然需要你自己完成,而且很多时候你也需要直接修改代码。
  • 对代码运行环境有一定的了解,例如Linux,需要会执行Shell命令。

如果完全没有上述基础,虽然可以通过ChatGPT学习,但这可能并不提高效率,而更像是重新学习。

实现步骤

ChatGPT具有以下几个特性:

  • ChatGPT目前只能处理字符串,并且输入和输出都有一定的字符串长度(token数)限制。
  • ChatGPT对于明确具体的问题能够一次性给出精确的答案,对于抽象和笼统的问题则需要多次追问和人工调整,才可能得出接近的反馈。
  • ChatGPT也可能会犯错误,需要人工进行纠正。

尽管POPO群消息助手的产品实现逻辑很简单,但基于ChatGPT的特性,我还需要经过反复的询问和调试才能完成产品开发。

整个开发的过程有几个部分工作:

构建生产和运行环境

首先,需要在服务器上安装开发框架。毕竟要实现的是一种服务端应用,与单机版软件有所不同。

我近期主要使用Python,所以选择了一个简单的Python框架——Flask。

之前对Flask有一定了解,在春节前就基于Flask将GPT接入到了个人公众号里,后来也因为众所周知的原因关闭了。

对于代码仓库管理,选择了目前最主流的工具——Git。

基于上述选择,我分别在个人电脑和服务器上配置了开发环境和线上运行环境。

我对环境的搭建并不熟悉。

因为平时只写Python脚本,在自己的电脑上使用Jupyter notebook或VS Code运行就行,很久没有写过在服务器上运行的程序了。

所以安装和配置的整个过程都是一步步向ChatGPT询问,然后复制命令在终端运行的。

比如下图就是我在询问如何从Linux服务器上下载文件。

一个产品经理是如何用ChatGPT开发软件的

调用POPO开放平台的服务

平时经常查看各种第三方接口文档,所以POPO开放平台接口文档的阅读是没什么问题。但对于一些非功能性的接口调用,如获取接口的Token,接口调用的签名验证等,我平时并不关注。这些对于开发人员来说是标准的流程,但对我来说却是新事物。

关于如何使用开放接口,我的经验是将以下几部分内容分别输入ChatGPT,然后它就可以直接返回调用代码。

内容包括:

  1. Token
  2. 接口调用地址
  3. 接口描述和接口参数
  4. 示例代码

我将这些内容分别粘贴给ChatGPT,然后将其返回的代码复制到IDE中直接运行,一切顺利。整个过程非常神奇。

比如下面GPT就在帮我改写接口示例代码。

一个产品经理是如何用ChatGPT开发软件的

代码逻辑实现

代码逻辑的开发通常是最耗时的部分。由于我日常编程量不多,对于语法和各种库的熟悉程度偏低,每次写代码时才查阅各种相关资料,挺费时的。

而ChatGPT擅长写代码逻辑,只要需求清晰,它不仅能妥善处理逻辑,而且函数定义清晰,基本上也会考虑异常处理,其能力超越许多专业程序员。

如果产品功能很简单,只需要一个或几个函数就能运行,那么经过几个问题和追问后,ChatGPT就能给出可直接运行的代码。

但如果产品功能达到一定复杂度,代码量也相应增加,那么情况就会变得复杂。这也和前面提到的ChatGPT的使用特性有关。

比如如果直接告诉ChatGPT用Python来实现POPO群消息助手,它是无法实现的。我必须给它提供一系列背景信息和产品实现逻辑,让它理解整体需求。

同时,由于复杂的背景和需求超过了ChatGPT的token限制,整体代码的输出也超过了token限制。所以必须要一步一步告诉它。

也就是说,我需要把复杂问题拆解成简单问题,然后得到简单问题的答案,最后组合成复杂问题的答案。

整个拆解、询问、汇总的过程,都需要人工来完成。

并且这个过程还需要反复调整。

整个开发过程中,我应该询问了上百次。且在整个过程中,基本不可能在ChatGPT那保持一个始终稳定的背景和需求,让他直接给我正确答案。

首先,复杂问题的拆解本身就不是一步到位的,人的理解也是一个逐步接近正确的过程,需要不断尝试。

其次,ChatGPT本身也会出错。

所以人的判断和参与在整个过程中是非常重要的,并且最后还是由人来汇总出正确的完整代码。

这也就是为什么我认为,如果想用ChatGPT来完成一个有一定复杂度的产品开发,自己还需要有一定的编码能力。

下图就是ChatGPT犯错的时候。

一个产品经理是如何用ChatGPT开发软件的

写在最后

基于这次使用ChatGPT完成软件开发的经历,我认为它首先是产品经理的好助手。

产品经理通常有很多想法,但由于不会编程,这些想法最终只能停留在纸上。有了ChatGPT的帮助,对技术有一定了解的产品经理,就能够自己制作出各种简单的产品,一个人能变成一支队伍。

对于专业的程序员来说,ChatGPT能大大提高编码效率,也会整体上提升代码质量,这对于个人来说也是好事。

当然,能够大幅度提高效率的技术,往往也会带来行业的重大变革。因此,ChatGPT对于程序员这个职业会产生什么样的影响,是进一步要关注和思考的了。

关于这些问题,本文就不详细探讨。

用一句流行的话来结束,打败我们的不是AI,而是用AI的人。

感谢阅读,欢迎关注公号「何必多想」