1. 建立一个markdown文件记录prompt
  2. 写明程序目的
  3. 写明程序实现目的的方法/流程
  4. 注明编程风格,要求GPT4写出函数的作用描述、输入、输出,但不必列出函数的具体实现。
  5. 由GPT4生成函数设计
  6. 注明需要使用的库,列出库中的几个典型示例,复制之上所有部分交GPT4生成代码
  7. debug,将代码和报错一起交给GPT4,询问错误出现的原因,并修改。注意GPT4的知识过时,有可能引用不存在的库中的函数方法,可能需要以ChatPDF或者Bing Chat协助或者手动找到对应的函数,并找到说明或者示例,一同交给GPT4生成新代码。
  8. 记录debug要点于文件中。

在使用GPT4协作编程时,program恢复了其本来的含义:做事情的过程。

当把程序本身完成任务的方法和过程向GPT解释清楚以后,它就可以进一步细化。
这种自上而下的过程就是SICP一开始就在讲解的,现在在GPT的协助下,你更可以保持一部分黑箱暂时不必打开,专心设计大的架构即可。由于GPTx总有个输入输出的长度限制,所以自上而下逐层分解任务,能够将后续debug的过程限制在较小的范围内进行,能够适应有限长度的输入输出。

好吧,给个例子,其实跟把大象放进冰箱差不多。

  • 题目:为ppt撰写演讲词
  • 目的:读取一个ppt中的所有文本,依次为每一页撰写演讲词

过程设计

  1. 读取pptx文件
  2. 读取ppt中每一页的文字,包括正文中的文字和备注中的文字。
  3. 对于第i页,令GPT依据全部文字和第i页的文字撰写演讲词
  4. 将演讲词单独保存为markdown文件

函数设计
以Python撰写,以函数式编程的风格撰写结构化程序,最终以main()调用。

需要用的库
python-pptx, markdown
以上为人工设计,此处开始问GPT:“针对上述过程,请设计出相应的函数,列出每个函数的作用描述、输入、输出,但不必列出每个函数的具体实现。”

GPT会回复给你:

  1. read_pptx(file_path: str) -> List[str]
    作用描述:读取pptx文件并返回包含每一页的文本内容的列表
    输入:文件路径(字符串)
    输出:包含每一页文本内容的列表(字符串列表)
  2. extract_text_and_notes(slide: pptx.slide.Slide) -> str
    ……

人工看看这些描述,是否有问题。如果有问题,可以加入要求:

  1. generate_speech()函数应当使用query_gpt3获取gpt的回复
  2. prompt应当使用如下……
  3. 不同页面的演讲词之间应当以xx分隔

然后,打开cursor,ctrl+k,(或者ChatGPT网页) 把上面所有的东西选上贴进去。等着。

如果cursor运行着停了,你觉得还有没输出完的,记得我们要求最终以main()调用,所以还没出main()函数,说明没完。
这时候再ctrl+k,说continue,等它输出完。
这样你就有了最初的程序。

这个任务比较简单,修正个一两次就过了。

这里没什么特殊的,就是告诉GPT做事情的过程,1234,不涉及什么高深算法。
当然里面有高深算法,根据ppt页面的内容产生演讲词,这在几个月前还是非常高深的算法,现在也还是,只是你可以丢给GPT去解决。
于是剩下的就是化简ctrl+C/V的操作。你打算怎么做就告诉它就好。

至于打算怎么做一件事情,那才是程序设计的核心。
推荐