在软件开发领域,大型语言模型 (LLMs) 的出现正在迅速改变代码编写的方式。通过精心设计的 Prompt 与这些模型进行有效交互的能力,正成为开发人员和非开发人员都不可或缺的技能。按需生成代码的能力是一项极其宝贵的资产,而理解 Prompt Engineering 的细微差别是充分发挥其潜力的关键。
在过去的几年里,我一直沉浸在 AI 辅助代码生成的世界中,亲眼目睹了这一领域的显著进步。曾经的新兴技术已经显著成熟,尤其是在过去的六个月里。虽然具体的工具和模型可能会不断发展,但与 AI Prompt(例如 ChatGPT 和 Claude 使用的 Prompt)交互的基本原则保持不变。
这种实践现在通常被称为“Prompt Engineering”,它涉及一组技术和方法,可以最大限度地提高 AI 代码生成的有效性。在本文中,我将分享一些我在为 WordPress 站点生成 PHP、SASS、JS 和 HTML 代码时发现的最有用的策略。需要注意的是,这些概念不仅限于 WordPress;它们可以很容易地应用于任何其他内容管理系统 (CMS) 或开发框架。
黄金法则:输入决定输出
有效 Prompt Engineering 的基石是一个简单而深刻的原则:输出的质量与输入的质量成正比。与 AI 交互时,重要的是要记住你不是在与人类交流。这似乎是不言而喻的,但这是一个微妙而关键的区别,经常被忽视。
人类具有推断含义、提出澄清问题和独立纠正错误的能力。另一方面,AI 缺乏这种固有的理解。它们一丝不苟地遵循提供的指令,而且只遵循这些指令。如果你遗漏了关键信息,AI 不会神奇地填补空白。它只会根据收到的不完整指令生成代码。
在描述编码任务时,你可能会无意识地假设对某些概念有基本的了解,特别是在像 WordPress 这样的特定平台的上下文中。这些是你在与另一位开发人员交流时可能会自然排除的细节。但是,在与 AI 交互时,必须明确说明每个需求,无论它看起来多么明显。
精确性和清晰度:有效 Prompt 的关键
为了说明精确性和清晰度的重要性,让我们考虑一个假设的场景。假设你想创建一个自定义 WordPress 函数来显示最近文章的列表。
给人类开发人员的指令:
“嘿,你能写一个快速函数来显示最近的几篇文章吗?也许显示标题和日期,并将其限制为五篇文章?”
人类开发人员可能会理解此请求,而无需进一步澄清。他们会直观地知道:
- 使用 WordPress
WP_Query
类。 - 按发布日期的降序获取文章。
- 根据网站的设置格式化日期。
- 生成适当的 HTML 标记。
给 AI 的指令:
“创建一个 PHP 编写的 WordPress 函数,显示最近五篇文章的列表。使用 WP_Query
类获取文章。对于每篇文章,将标题显示为 3 级标题 (<h3>
),并将发布日期格式化为’月 日,年’(例如,’2024 年 1 月 1 日’)。将整个列表包装在一个无序列表 (<ul>
) 中,每篇文章表示为一个列表项 (<li>
)。该函数不应接受任何参数,并且应将生成的 HTML 作为字符串返回。”
注意给 AI 的指令中的详细程度。我们明确指定:
- 编程语言 (PHP)。
- 要使用的 WordPress 类 (
WP_Query
)。 - 要显示的文章数量(五篇)。
- 要包含的特定数据(标题和日期)。
- 所需的日期格式(’月 日,年’)。
- 要使用的 HTML 元素 (
<h3>
,<ul>
,<li>
)。 - 函数的输入(无参数)。
- 函数的输出(包含 HTML 的字符串)。
这种级别的特异性对于确保 AI 准确生成所需代码至关重要。
超越基本指令:高级 Prompting 技术
虽然提供详细的指令是基础,但还有几种高级技术可以进一步提高 Prompt 的有效性。
指定编码风格和约定
AI 可以适应不同的编码风格和约定。如果你对变量命名、缩进或代码格式有特定的偏好,则可以将这些内容包含在 Prompt 中。
示例:
“使用 WordPress 编码标准用 PHP 编写函数。变量名使用 snake_case,缩进使用四个空格。”
提供上下文和背景信息
有时,向 AI 提供有关任务的额外上下文或背景信息会很有帮助。这对于更复杂的场景特别有用。
示例:
“此函数将成为增强网站博客功能的插件的一部分。它应该被设计成易于定制和扩展。”
使用示例来指导 AI
最强大的技术之一是向 AI 提供所需输出的示例。这在处理特定格式或布局要求时特别有效。
示例:
“HTML 输出应类似于以下结构: