高效提示工程:AI代码生成在WordPress开发中的实战指南

本文深入探讨如何通过精心设计的提示词与大型语言模型交互,生成高质量的WordPress代码。涵盖代码组织、优秀提示词范例、复杂WP CLI命令实现,以及AI代码生成的最佳实践与潜在风险。

提示工程在Web开发中的应用

在未来的几年里,所有代码的编写方式无疑将发生变革。理解大型学习模型(LLM)的工作原理,以及如何通过提示词与它们最佳互动,将成为开发者必备的关键技能。许多开发者和非开发者已经开始这样做,因为能够按需生成代码的能力极具价值。

过去两年我一直在试验代码生成,而在过去六个月里,这项技术取得了巨大飞跃。我预计这将逐渐成为一种常见模式,但即使模型不断进步,与像ChatGPT或Claude这样的AI提示互动的基本核心概念将始终存在。

这被称为提示工程,我将分享一些在为WordPress网站生成PHP、SASS、JS和HTML代码时特别有效的方法和技巧。这些概念同样适用于任何其他CMS或开发框架。

付出与收获成正比

与AI提示互动生成代码时,最重要的规则是:输入的质量直接关系到输出的质量。请记住,你不是在向一个人描述任务——这听起来显而易见,但却是一个我们甚至没有意识到的新概念。

当你要求像ChatGPT或Anthropic的Claude这样的AI编写代码时,必须非常清晰。人类可以猜测你的意思、提出问题并自行修正错误,但AI不会这样做。它只遵循你输入的文字。如果你遗漏了什么,AI不会知道缺少了什么。你可能会假设对方对WordPress的某些方面有基本了解,从而知道并推断一些事情,而这些在向另一个人描述任务时是绝不会包含的。

对人说:

你能修改文章标题,让博客文章前面加上“前缀:”,但页面保持不变吗?确保正确转义以避免安全问题

对AI提示说:

编写一个WordPress函数,使用内置函数通过the_title过滤器修改所有文章标题,在标题前添加“前缀:”。这仅适用于文章(不适用于页面)

这是一个非常基本的例子,我绝不认为上面的AI提示是一个好的提示。但与向人提出的请求相比,一些关键方面将导致更好的答案:

  • 提到WordPress为提示提供了重要的上下文细节
  • 使用内置函数告诉模型首先关注哪里以找到解决方案
  • 提供the_title过滤器钩子精确告诉模型在何处以及如何以最佳方式执行此代码

这三个方面共同大大缩小了模型的关注范围,使其能够更专注于手头的核心任务。结果是输出质量更高。

代码组织与重用

编写高效AI提示生成代码的第一步是牢牢掌握最适合实现理想最终结果的系统、工具、API和方法。

精心制作的生成代码的提示,无论是为WordPress还是任何其他编程框架或语言,都以最简单的方式充分利用当前代码库。

如果每个函数或代码块都独立于所有其他代码运行,AI生成的代码很快就会失控。你会发现代码库充满冗余,使其臃肿、难以测试,并且通常更难使用。

我预测在未来几年,干净、有组织的代码将是一个很少见的主要优势。本质上,如果AI不知道你现有代码库的某些方面,它不会重用它们。

最终,输入上下文大小将变得足够大,可以接受整个代码库作为输入,这将有所帮助。但即使到那时,你的代码库也需要组织良好且易于理解。拥有D.R.Y(不要重复自己)的心态是并将始终是扎实编程的核心,无论是由人类还是AI编写。

完全可以在几乎没有主题领域知识的情况下生成代码,但结果更有可能在未来造成问题。由AI驱动的零碎构建的代码库更容易出现错误,也更难理解。但最重要的是,这些问题会随着时间的推移不断累积。

我对所有开发者的最大建议是,随着越来越多的代码由AI生成,将简单性和组织性放在首位。

好提示与坏提示

当提示指令过于模糊时,你很可能会得到一个部分完整的答案,其中包含如何填补空白的说明。在大多数情况下,这通常不太有用。

以下是一些导致不太理想的代码生成输出的提示示例:

坏提示

提供代码以向reddit发出API请求获取我的最新帖子

我希望它以列表形式显示在我的网站上

向设计师/开发者提供此指令可能足以按照你的期望实现,但对AI提示来说不行。它太模糊,缺乏足够的上下文信息,AI无法可靠地创建高质量的代码输出。

  • 没有提到WordPress,因此提供的代码可能无法在你的WP网站上使用。可能是Python或服务器端JavaScript
  • 没有提供与Reddit API合作的上下文,因此你可能不会得到可工作的代码,而是获得如何编码的说明
  • 没有关于从Reddit拉取内容类型的详细信息:评论、帖子还是两者?特定subreddit还是所有subreddit?
  • 没有关于你想要的输出的详细信息,因此它可能会推荐一个可以使用的插件或软件而不是代码

如果你的AI提示确实提供了PHP(这不太可能,但取决于你之前的对话,可能会发生),它仍然不会是那么有用的代码。它不会使用任何内部WP函数,如wp_remote_post和wp_remote_retreive_body,而是使用原始PHP代码通过cURL发出请求。

生成的语法在某些托管环境中更可能失败,并且将来开发人员和提示工程师也更难理解和重视。

因为没有提供关于请求本身的上下文,所以不会提供可工作的代码。最终,它将达不到期望,并且需要大量的后续工作才能更接近最终产品。

虽然在生成代码时使用后续提示是可能的,有时甚至是有利的,但我建议尝试通过第一个提示尽可能接近最终结果。与AI来回的长对话通常会导致更多的混乱、不准确,并最终导致挫败感。

好提示

现在来看一个更好的提示示例,它将产生显著更好的结果。

创建一个wordpress函数,使用wp_remote_post()向{REDDIT API URL}发出API请求,使用API密钥{YOUR API-KEY}生成我最新帖子和评论的列表。我总是使用我的reddit句柄{YOUR REDDIT-USERNAME}。该函数将具有以下可选参数:

  • $limit(整数)默认为20,但接受1到100之间的数字。如果提供无效值,则返回提及该问题的WP_Error
  • $subreddits(数组)默认为[],接受包含要包含帖子和评论的特定subreddit的字符串数组。当提供时,它将设置适当的API参数,否则包括所有帖子和评论
  • $type(字符串)默认为’posts’,但也可以传递为’comments’。此参数的值决定我们要列出的reddit内容类型,帖子或评论,并将设置适当的API参数/参数以过滤返回的结果

将检查wp_remote_post()返回的响应是否有错误,如果收到非成功响应,将返回包含有关错误的相关信息的详细WP_Error。

将验证传递给函数的任何参数是否有错误,以验证格式和类型是否正确。当发现问题时,将返回相关的WP_Error。

当从API请求收到成功的200响应时,响应体将使用内置WP核心函数(wp_remote_retreive_*)提取,并限制为提供关联数组的集合,每个数组包含以下属性/键:

  • type: comment|message
  • subject: 线程的标题/主题
  • content: 帖子或评论文本,取决于类型的值,可以支持API返回的任何HTML
  • published_on: 内容发布时的ISO日期时间
  • subreddit
  • url: 到帖子或直接到评论的哈希URL

此数据将基于此Emmet结构填充HTML模板:

div.reddit-feed>article.reddit-feed__item>h2.reddit-feed__title+p.reddit-feed__byline+div.reddit-feed__content

模板将:

  • 提供这样的署名行:“X天前在/r/{subreddit}",其中subreddit是指向subreddit的链接,而"天前"使用WP human time diff函数
  • 使用wp_trim_words()缩短任何超过120个单词的长内容,缩短时添加省略号
  • 将h2标题链接到reddit上的评论或帖子URL
  • __item将有一个bem修饰符,将类型标识为–post或–comment

还提供SASS/SCSS代码以以下方式设置模板样式:

  • 顶级容器将在20px和40px之间有上下边距,使用clamp()和视口宽度测量规则,以适应600px和1680px之间的屏幕宽度
  • 每个项目将有20px的底部边距和底部填充,以及1.5px的底部边框,为20%黑色
  • 最后一个项目将没有底部边框、没有填充和没有边距
  • h2将仅在底部有10px的边距,并且将是正文字体大小的1.3倍
  • 署名行将仅在底部有20px的边距,并且将是正文字体大小的0.9倍。所有文本将着色为60%黑色,包括subreddit链接,该链接将仅带下划线标识为链接
  • 内容及其中的任何HTML将没有边距

一旦最终代码创建完成,整体审查它以识别任何语法或功能问题,使其尽可能接近生产就绪

高级示例:复杂的自定义WP CLI命令

将所有这一切付诸实践可能看起来像以下示例,该示例展示了如何创建复杂、详细的提示以创建一套强大的自定义WP CLI命令,这些命令将提供以下方式:

  • 为整个网站生成SEO报告
  • 从markdown文件安全创建新帖子
  • 查找并报告帖子内容和任何ACF自定义字段中的任何损坏链接

为此,我们需要向AI提示提供许多具体细节,以大纲格式这样做会非常有帮助。当做得好时,这将比通常从头开始编写代码快至少10倍生成代码。

这是一个很好的例子,说明当正确使用AI进行代码生成时,AI可以有多么强大,但也很清楚,要真正有效,你需要相当深入的WordPress编程知识才能提及特定功能和方法。虽然你可以在没有这些知识的情况下生成代码,但如果你有,质量将大大提高,并且更不容易出错。

WordPress代码生成的AI提示

为我创建一个PHP类,添加到现有的WordPress功能插件中。

类的命名空间将是Kevinlearynet 类名将是WP_CLI 该类将使用单例模式,并在使用时放在单个文件中 它将向我们的WordPress站点添加3个自定义WP CLI命令:

wp kevinlearynet create-post-from-markdown wp kevinlearynet list-seo-metadata wp kevinlearynet find-broken-links

每个命令将是一个单独的类方法,其名称中使用下划线和

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计