有效的快速工程技術
在皇家賭場(2006)中,詹姆斯·邦德詳細說明了他的維斯珀馬提尼的精確成分:3 杯戈登、 1 杯伏特加、半杯基納利萊,與一片檸檬皮薄片一起在冰上搖勻。
透過詳細說明成分,邦德確保了優質的飲料。同樣,在與大型語言模型 (LLM) 交互作用時,提示的特定性和清晰度決定了輸出的品質。
這個過程被稱為快速工程,對於從人工智慧系統獲得準確且相關的回應至關重要。
什麼是即時工程?
及時工程涉及製定精確的說明以優化 LLM 響應。輸入提示越詳細和具體,輸出就越符合您的需求。
範例:
如果你問法學碩士“總結即時工程”,答案可能會很模糊。但是,透過像這樣指定請求:
提示: 「給出一個 100 字的提示工程摘要,針對非技術使用者。」
法學碩士現在被指導給出簡潔的、針對特定受眾的答案。
輸出:
「即時工程正在為ChatGPT 等人工智慧系統制定有效的指令,以獲得最佳結果。它涉及具體、提供上下文和分解複雜的問題。透過指定格式、提供範例或設定邊界,即時工程可確保與人工智慧助理。
良好的 LLM 提示的組成部分
1上下文:上下文為法學碩士提供了額外的信息,幫助其更全面地理解您的請求。透過嵌入相關上下文,人工智慧可以產生更準確和客製化的回應。
範例:
假設您正在處理 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; } }
有效快速工程的技術
- 零樣本提示:LLM 根據其訓練資料產生回應,無需明確的範例。這對於根據既定模式產生通用解決方案或答案非常有效。
範例:
提示: 「在 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");
- few-shot Prompting:提供幾個範例來指導模型產生所需的輸出格式。
範例:
要為 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");
- 思路鏈提示:提供多步驟說明,幫助LLM一步步解決複雜問題。
範例:
提示:
*「為以下 C# 類別建立一組單元測試:
公有類別使用者{公共int用戶Id{取得;放; } 公有字串名稱 { get;放; } 公用字串電話號碼 { 取得;放; } }
一步步思考:
- 決定要測試的關鍵場景。
- 使用 xUnit 編寫單元測試。
- 考慮邊緣情況。 ”*
輸出:
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。
