在进一步展开 Prompt 即代码之前,我们需要先了解一下如何写好 Prompt。如下是,我之前放在 ClickPrompt 上面的一部分 GitHub Copilot 示例。
从我的理解来说,一个好的 Prompt 规范应该包括以下内容:
- 功能定义:定义所需的功能,并为模型提供足够的上下文和信息。这可以帮助模型更好地理解其意图并生成相应的代码。示例 1:函数名、输入和输出,就能自动填充。
- 任务拆分:将任务拆分为小的子任务,并确保每个子任务的要求和期望输出都非常清晰。示例 2:如上图的按步骤设计示例,每一步都需要想好要怎么做。
- 确定输入与输出格式:Prompt 规范应该明确输入与输出格式和数据类型,以便模型可以正确地处理输入。示例 3:我们添加了 i18n 的 json 过来,让 Copilot 自动映射。
- 测试和调试:在生成代码之后,应该进行测试和调试,以确保其正确性和可靠性。同时,应该为模型提供反馈,以帮助它改进其生成的代码。示例:让 Copilot 编写对应的单元测试,我们对测试用例进行检查。
- 避免歧义:Prompt 规范应该避免使用歧义的语言和术语,并确保在多种上下文中生成的代码是一致的。只在出错时,我们才会发现这条原则是有用的。
- 编码标准:定义编码标准,并确保生成的代码符合这些标准。这可以确保生成的代码易于阅读和维护,并符合团队的编码惯例。这个就需要我们团队去做了。
看上去有没有像极你平时写的伪代码,作为一个伪代码工程师的你,是不是发现生产力可能爆炸了。
Prompt 即代码:不同形态下的 AI 编程
再重复一下定义:
Prompt 即代码是一种基于多种输入模态的编程范式,它通过结合文本、图像、语音等多种输入方式来提供更丰富的上下文信息,帮助程序员更好地表达自己的意图,并生成相应的代码实现。Prompt 即代码将 prompt 作为代码的一部分,以及作为标准接口来定义生成的代码,同时提供注释和文档信息以支持可读性和可维护性。通过使用 prompt 即代码,程序员可以提高编码效率,同时生成更准确、更可靠的代码实现。
当谈到 Prompt 即代码时,我们通常会将其定义为一种编程范式,它将自然语言或其他形式的输入作为代码生成的起点。Prompt 即代码则让程序员通过提供高度概括的自然语言描述或其他形式的输入来描述他们想要的功能,然后由 AI 系统自动生成代码。
所以,在这里我们分为两种方式:标准的 Prompt 即代码、多模态的 Prompt 即代码。
标准的 Prompt 即代码:文本形式
文本 Prompt 即代码是指使用自然语言或其他方式描述需求或问题,通过 AI 模型自动生成对应的代码。Prompt 作为代码的一部分或者核心,通过描述期望的输入和输出,以及需要执行的操作来生成代码。
尽管现有的 AI 工具都是多模态的,然而自然语言是作为中间语言存在的。所以,我想将文本形式的 prompt 称为标准的 Prompt 即代码,它可以方便地融入现有的编程体系。
- Prompt 即注释。Prompt 作为注释与代码并存,在这种情况下,Prompt 与代码共存于同一个文件中。通常,Prompt 以注释的形式出现在代码中,以提供必要的上下文信息和生成代码的指令。这种方式适合于需要经常手动修改生成的代码的场景。
- Prompt 即接口。在这种情况下,Prompt 作为一个标准的接口,代码则是实现这个接口的生成代码。这种方式适用于对生成的代码进行自动化测试和部署的场景,因为接口定义的一致性可以更好地保证代码的正确性。
- Prompt 即代码。在这种情况下,版本管理工具中不再存储代码,而是存储 Prompt。生成的代码则可以根据 Prompt 来生成,Prompt 作为代码的一部分。这种方式适合于需要频繁更新代码和对代码进行版本控制的场景。
而,事实上,在我第一次将注释加入到 ClickPrompt 中的时候,我犹豫了很久。我们的过去的编程习惯,并不允许将思考过程作为注释到其中。
既然,它已经作为代码的一部分加入进来 ,我们还需要进一步考虑的点是:尽可能地去修改 prompt 重新生成代码,减少直接修改 prompt。
多模态 Prompt 即代码
PS:感谢 ChatGPT 帮我考虑了这一部分。
多模态 Prompt 即代码是指在训练 AI 模型时,同时利用多种不同的输入模式(如文本、图像和语音)来提供更丰富的上下文,以帮助模型更好地理解程序员的意图并生成相应的代码。通过使用多模态 Prompt,AI 模型可以获得更多的信息,并在生成代码时更准确地反映程序员的意图。
例如,一个基于多模态 Prompt 训练的 AI 模型,可以同时考虑程序员在文本上下文中输入的代码片段,代码所处的项目信息、数据结构信息,以及程序员所提供的图像信息,如示意图、流程图等,从而生成更准确、更完整的代码。
PS:不过,这种技术需要大量的数据和计算资源,同时需要对不同的输入模式进行处理和整合,因此在实际应用中还需要进一步研究和优化。
Prompt 即代码:交互方式的变化
过去的几个月里,每天层出不穷的 AI 新工具,都在让我们感受人类的智商上限和 AI 的下限。与现在的编程方式相比,未来几个月势必会出现新的、或者已经出现新的交互方式。
诸如于:
- 交互式 Prompt:在编写代码的过程中,模型可以提示程序员输入,从而帮助模型更好地理解程序员的意图,并生成更准确的代码。例如,Unit Mesh 采用的架构模式,便是由人类和 AI 共同完成的,并由 Unit Server 自动化部署。
- 面向场景的 Prompt:通过提供与特定场景相关的信息和上下文,可以帮助模型更好地理解程序员的意图并生成相应的代码。例如,面向 Web 开发的 Prompt 可能包括与 HTML、CSS 和 JavaScript 相关的信息和上下文。
- 等等。
Prompt 即代码的交互方式将会越来越多样化和智能化,以更好地满足程序员在不同领域和场景下的需求。