AI开发项目之-产品需求

让AI(Clude, ChatGPT)扮演产品经理,从客户需求出发,通过问答方式逐步完善产品需求文档,为AI开发项目代码奠定基础。

defagi avatar
  • defagi
  • 1 min read

最近在开发一个项目,其中有一些小功能还未开发,由于时间也比较充裕,想着尝试下是否可以使用AI来完成一个小功能。考虑到这功能开发需要依赖现有的开发环境,而这是一个试验性项目,若因此污染了现有开发环境,代价就太大了。所以,还是把它作为一个独立的新项目来进行更为妥当。

精简后功能需求:

客户通过web上传txt小说文件,然后把每一章拆分成单独的txt文件,并保存到服务器上,为后续的业务提供数据支持。

AI开发项目大体思路:

  • AI写产品需求文档
  • AI把需求文档写转化为功能需求文档
  • 根据功能需求文档安排AI开发代码
  • 验证测试代码

大概流程是这样吧,主要目的是出功能需求文档,让AI实现逻辑代码。产品需求和功能需求一起出吧。

这流程有点像AI程序员,每个职位都有对应的agent,每个agent都可以相互交流,通过agent相互合作完成项目开发。不过现在看起来还不是很成熟。先手动摸索下这个流程。
想了解更多AI程序员可以参考AI编程 https://nav.defagi.com/

提供思路AI负责写prompt

我想让AI写产品需求文档,那么需要提供什么样的prompt?这对我来说点难,由于开发出身对需求文档不感冒,又缺少相关的专业词汇,不懂怎么描述。算了就是词穷。 想想是不是可以让AI自己写prompt(提示词),我只提供大概思路,AI来优化prompt,那试试吧。 大概是这么想的:

  1. AI需要充当软件产品经理
  2. 它要通过提问的方式来收集信息
  3. 要告诉它这产品需求会给谁用
  4. 最终输出markdown格式

想到的大该这些吧。这仅仅是思路,具体的prompt还需要AI根据我的思路去写。大概意思就是提供思路。

想了大半天,这优化的提示词也不会写,随便一个来一个,不行在改,先收集些词汇和描述,后续再优化。

有空是得去学学怎么写promptAI提示词学习

先试下 Claude,chatgpt 看看写出来的提示词效果怎样:

提示词

你是prompt提示词专家,擅长优化提示词,你需要根据我的prompt思路描述,理解我的目的,使用markdown展示编写优化后的prompt,如果存在不清楚的地方可以提问。
下面是我的prompt思路:

---描述开始--- 
你是一位资深的软件产品经理。擅长于客户沟通,理解客户产品需求。 
客户不是专业的软件人员对产品需求理解不深入,需要你站在产品的角度思考问题,提出问题,帮助客户理解需求。
你输出的产品需求文档会作为AI工程师的输入,重点关注功能性描述必须非常详细
最终输出markdown展示的详细的产品需求文档。 
---描述结束---

claude:

claude-optimizing-product-prompt

claude-optimizing-product-prompt-01

chatgpt:

chatgpt-optimizing-product-prompt

chatgpt输出太慢了,就这样吧,基于这几个优化的结果,感觉也还行,就拿claude的提示词来改吧,不合适的话再改。

编写产品需求文档prompt

前面claude写的提示词不错,可以作为产品需求文档的prompt。稍微改下,加入我从客户收集到的信息加自己的一点理解作为客户描述,掉给AI,让它去理解,提问吧。修改后的prompt如下:

你是一位经验丰富的软件产品经理,擅长与客户沟通并理解他们的产品需求。你的任务是与非技术背景的客户进行对话,帮助他们更好地理解和表达他们的软件产品需求,并最终输出一份详细的功能需求文档。请遵循以下指南:

首先,仔细阅读客户提供的项目描述。分析其中提到的主要功能点和可能存在的需求。

基于客户描述,准备一系列问题以深入了解需求。这些问题应该针对描述中不清楚或需要更多细节的部分。

以友好、专业的态度与客户交流,使用他们能够理解的语言。

主动引导对话,深入挖掘客户的真实需求。提出你准备的问题,帮助客户更清晰地表达他们的想法。

重点关注功能需求。对于每个功能,尽可能获取以下信息:
功能的主要目的
预期的用户操作流程
输入和输出数据
与其他功能的关联性
可能的异常情况和处理方式

在对话过程中,适时总结和复述客户的需求,确保你正确理解了他们的意图。

如果发现客户的需求存在矛盾或不清晰的地方,礼貌地指出并寻求澄清。

基于对话内容,生成一份详细的功能需求文档。文档应包括:
项目概述
主要功能列表
每个功能的详细描述
功能之间的依赖关系
优先级建议(如果适用)

在文档中使用清晰、简洁的语言,避免技术术语,确保客户能够轻松理解。

完成文档后,询问客户是否还有任何疑问或需要进一步澄清的地方。

客户的需求描述:

---需求描述开始--- 
目的:把txt小说文件拆分成单独每一章的txt文件,并保存到服务器上,为后续的业务提供数据支持。
大概流程:
1. 通过web页面上传小说txt文件,限制文件大小为20M,仅支持txt文件。
2. 上传文件后,通过“===第一章===” 或 “第1章”等识别小说总章节数,并与小说最后一个章节对比,验证是否完整。
3. 检验通过后把原小说计算MD5,使用MD5值作为文件名保存到服务器上。
4. 把识别到的每一章提取章节数,如果是中文需要转化为阿拉伯数字,并保存到MD5文件夹下,文件名为“章节名.txt” 如: “===第一章===” 保存文件名为“1.txt”。
5. 每个章节处理完成后,需要把小说的元数据也保存在MD5文件夹下,文件名为“metadata.json”。
---需求描述结束---

请开始与客户的对话。首先,请客户提供他们的需求描述,然后基于描述内容提出问题,帮助他们明确软件产品的功能需求。

clauce-product-question-01

看到AI针对需求描述提出了细节上的问题。回复看看

clauce-product-question-02

clauce-product-question-03

看到 2.章节识别 感觉不太对,归入最后一章,这里是也,先不改了。在补充回复

clauce-product-question-04

frd

看了下结果还行,感觉还是可以优化的,现在只是探索阶段,先看下通过这个功能需求文档搞出来的代码如何,后续花点时间回来优化这个流程。完整的功能需求文档如下:

功能需求文档

总结

整个流程下来还是比较耗时的,尤其是在编写提示词方面。不过,随着熟练度的提升,效率应该会显著提高。从输出效果来看,结果还是相当不错的。如果本身有产品经理的背景,可能会更快、更好地完成这个功能。在这个过程中,学会让AI(如Claude、ChatGPT)主动提出问题非常重要(即编写提示词)。例如,在软件开发中,涉及到需求文档、功能需求文档、需求评审等环节时,可以让AI扮演不同的角色或站在不同的立场上思考并提出问题,从而帮助我们完善许多可能忽略的细节。

推荐