在快速發展的軟體開發領域,大型語言模型 (LLMs) 的出現,有望徹底改變程式碼編寫的方式。透過精心設計的提示 (prompts) 與這些模型有效互動的能力,正成為開發人員和非開發人員都不可或缺的技能。能夠按需產生程式碼,是一項極其寶貴的資產,而理解 Prompt Engineering 的細微差別,是釋放其全部潛力的關鍵。
在過去的幾年中,我全身心投入到 AI 輔助程式碼生成的世界中,親眼目睹了這個領域的顯著進步。曾經的新興技術已經顯著成熟,尤其是在過去的六個月中。雖然特定的工具和模型可能會不斷發展,但與 AI 提示互動的基本原則(例如 ChatGPT 和 Claude 使用的原則)保持不變。
這種做法現在通常被稱為「Prompt Engineering」,它涉及一組技術和方法,可以最大限度地提高 AI 程式碼生成的有效性。在本文中,我將分享一些我在為 WordPress 網站產生 PHP、SASS、JS 和 HTML 程式碼時,發現最有用的策略。需要特別注意的是,這些概念不僅限於 WordPress;它們可以很容易地應用於任何其他內容管理系統 (CMS) 或開發框架。
黃金法則:輸入決定輸出
有效 Prompt Engineering 的基石是一個簡單而深刻的原則:輸出的品質與輸入的品質成正比。與 AI 互動時,請務必記住,您不是在與人類交流。這似乎是不言而喻的,但這是一個微妙而關鍵的區別,經常被忽視。
人類具有推斷含義、提出澄清問題和獨立糾正錯誤的能力。另一方面,AI 缺乏這種固有的理解。它們會仔細遵循提供的指令,而且僅遵循這些指令。如果您省略了關鍵訊息,AI 不會神奇地填補空白。它只會根據收到的不完整指令產生程式碼。
在描述編碼任務時,您可能會無意識地假設對某些概念有基本的理解,特別是在像 WordPress 這樣的特定平台的上下文中。這些是您在與另一位開發人員交流時,可能會自然排除的細節。但是,在與 AI 互動時,必須明確說明每個需求,無論它看起來多麼明顯。
精確性和清晰度:有效提示的關鍵
為了說明精確性和清晰度的重要性,讓我們考慮一個假設的場景。假設您要建立一個自訂的 WordPress 函數,該函數顯示最近文章的列表。
給人類開發人員的指令:
「嘿,你能寫一個快速函數來顯示最近的幾篇文章嗎?也許顯示標題和日期,並將其限制為五篇文章?」
人類開發人員可能會在沒有進一步說明的情況下理解此請求。他們會直覺地知道:
- 使用 WordPress
WP_Query
類別。 - 按發佈日期的降序獲取文章。
- 根據網站的設定格式化日期。
- 產生適當的 HTML 標記。
給 AI 的指令:
「建立一個 PHP 的 WordPress 函數,顯示最近五篇文章的列表。使用 WP_Query
類別獲取文章。對於每篇文章,將標題顯示為 3 級標題 (<h3>
),並將發佈日期格式化為 ‘月 日, 年’ (例如,’January 1, 2024’)。將整個列表包裝在無序列表 (<ul>
) 中,每篇文章表示為列表項 (<li>
)。該函數不應接受任何參數,並且應以字串形式返回產生的 HTML。」
請注意給 AI 的指令中的詳細程度。我們明確指定:
- 程式語言 (PHP)。
- 要使用的 WordPress 類別 (
WP_Query
)。 - 要顯示的文章數量 (五篇)。
- 要包含的特定資料 (標題和日期)。
- 所需的日期格式 (‘月 日, 年’)。
- 要使用的 HTML 元素 (
<h3>
,<ul>
,<li>
)。 - 函數的輸入 (無參數)。
- 函數的輸出 (包含 HTML 的字串)。
這種明確性對於確保 AI 準確產生所需的程式碼至關重要。
超越基本指令:進階提示技巧
雖然提供詳細的指令是基礎,但還有幾種進階技巧可以進一步提高提示的有效性。
指定編碼風格和慣例
AI 可以適應不同的編碼風格和慣例。如果您對變數命名、縮排或程式碼格式有特定偏好,則可以在提示中包含這些內容。
範例:
「使用 WordPress 編碼標準以 PHP 編寫函數。變數名稱使用 snake_case,縮排使用四個空格。」
提供上下文和背景資訊
有時,向 AI 提供有關任務的其他上下文或背景資訊會很有幫助。這對於更複雜的場景特別有用。
範例:
「此函數將成為增強網站部落格功能的插件的一部分。它應該設計為易於自訂和擴展。」
使用範例來引導 AI
最強大的技巧之一是向 AI 提供所需輸出的範例。這在處理特定格式或佈局要求時特別有效。
範例:
「HTML 輸出應類似於以下結構: