在皇家賭場(2006)中,詹姆斯·邦德詳細說明了他的維斯珀馬提尼的精確成分:3 杯戈登、 1 杯伏特加、半杯基納利萊,與一片檸檬皮薄片一起在冰上搖勻。
透過詳細說明成分,邦德確保了優質的飲料。同樣,在與大型語言模型 (LLM) 交互作用時,提示的特定性和清晰度決定了輸出的品質。
這個過程被稱為快速工程,對於從人工智慧系統獲得準確且相關的回應至關重要。
及時工程涉及製定精確的說明以優化 LLM 響應。輸入提示越詳細和具體,輸出就越符合您的需求。
範例:
如果你問法學碩士“總結即時工程”,答案可能會很模糊。但是,透過像這樣指定請求:
提示: 「給出一個 100 字的提示工程摘要,針對非技術使用者。」
法學碩士現在被指導給出簡潔的、針對特定受眾的答案。
輸出:
「即時工程正在為ChatGPT 等人工智慧系統制定有效的指令,以獲得最佳結果。它涉及具體、提供上下文和分解複雜的問題。透過指定格式、提供範例或設定邊界,即時工程可確保與人工智慧助理。
上下文:上下文為法學碩士提供了額外的信息,幫助其更全面地理解您的請求。透過嵌入相關上下文,人工智慧可以產生更準確和客製化的回應。
範例:
假設您正在處理 C# 專案並想要修改類別定義。這裡的上下文可以是程式碼片段。
依上下文提示:
「給這個 C# 程式碼:
公有類別使用者{公共int使用者Id{取得;放; } 公有字串名稱{ get;放; } 公有字串電子郵件{ 取得;放; } 公有字串電話號碼{ 取得;放; } }
修改類,使 UserId 和 Name 為唯讀,並在建構函數中設定它們。 ”
輸出:
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }這個例子說明了提供相關背景來指導法學碩士產生正確答案的重要性。
範例:
如果您想要用 C# 建立具有某些欄位的使用者類,請明確指定所需的欄位和行為。
模糊問題:
「建立使用者類別。」
具體問題:
「建立一個包含以下欄位的 C# 使用者類別:UserId、Name、PhoneNumber。將 UserId 設為唯讀並新增建構函式來設定這些欄位。」
輸出:
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
範例:
如果您需要為 User 類別產生虛擬數據,請提供資料應是什麼樣子的範例。
舉例:
「使用以下欄位產生 User 類別的 5 個實例:UserId、Name、Email、PhoneNumber。使用以下格式作為範例:
var user1 = new User(1, "John Doe", "john.doe@example.com", "555-555-5555");
以下是一些例子:
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
現在產生 5 個實例。 ”
輸出:
public class User { public int UserId { get; } public string Name { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name, string phoneNumber) { UserId = userId; Name = name; PhoneNumber = phoneNumber; } }
範例:
提示: 「在 C# 中使用 xUnit 為 User 類別建立單元測試。」
輸出:
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555"); var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556"); var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557"); var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558"); var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
範例:
要為 User 類別產生數據,您可以使用一些範例資料點來指導輸出格式。
用少量範例提示:
「以下是 User 類別的一些實例:
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555");
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
現在按照相同的模式再建立 3 個實例。 ”
輸出:
public class UserTests { [Fact] public void UserConstructor_SetsProperties() { // Arrange var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555"); // Act & Assert Assert.Equal(1, user.UserId); Assert.Equal("John Doe", user.Name); Assert.Equal("john.doe@example.com", user.Email); Assert.Equal("555-555-5555", user.PhoneNumber); } }
範例:
從簡單的提示開始,逐步修改。
第一個提示:
「用 Python 建立一個基本的 User 類別。」
輸出:
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
後續提示:
「將此類轉換為 C#。」
輸出:
public class User { public int UserId { get; } public string Name { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name, string phoneNumber) { UserId = userId; Name = name; PhoneNumber = phoneNumber; } }
最後提示:
「將密碼屬性設為私有,並加入建構函式中初始化的 DateTime CreatedAt 屬性。」
輸出:
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555"); var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556"); var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557"); var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558"); var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
範例:
提示:
*「為以下 C# 類別建立一組單元測試:
公有類別使用者{公共int用戶Id{取得;放; } 公有字串名稱 { get;放; } 公用字串電話號碼 { 取得;放; } }
一步步思考:
輸出:
public class UserTests { [Fact] public void UserConstructor_SetsProperties() { // Arrange var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555"); // Act & Assert Assert.Equal(1, user.UserId); Assert.Equal("John Doe", user.Name); Assert.Equal("john.doe@example.com", user.Email); Assert.Equal("555-555-5555", user.PhoneNumber); } }
本文原由 Pieces for Developers 的 Devreal 負責人 Jim 撰寫。您可以在本文中找到更多範例和細微差別 https://pieces.app/blog/llm-prompt-engineering
以上是有效的快速工程技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!