Prompting 知識養成 Day20

更新於 發佈於 閱讀時間約 13 分鐘

第20天:
今天是Prompt Engineering 中的版本控制 (Version Control) 與管理 (Management)。
包含我的理解筆記&練習。

A. 控制什麼、管理什麼?
如同軟體開發需要對程式碼進行版本控制,Prompt Engineering 同樣需要極佳的版本管理與控制,考慮到 Prompt Engineering 的高協作屬性、迭代速度..等與軟體開發的相似性質。
這其實基本上也是回到我們需要掌握 5W 的問題,才能讓 Prompt 能在 LLM 的應用上更有效率、持續優化。

5W:
When:何時修改?
Where:哪裡修改?
How:如何改善問題?
What:做了什麼變動?
Who:誰做的調整?

再加一個MS:
Make sure that everyone uses the latest and best version. **
(**It’s not just about management; more importantly, it’s about embodying the core spirit of Prompt Engineering — collaboration — at both the practical and conceptual levels.)

--對Prompt Engineering 進行版本控制與管理便是要回答這些問題 5W +1MS。

B. 控制與管理 Prompt 版本的主要好處
▪︎ 可追溯性 (Traceability):憑記錄可回溯修改脈絡
▪︎ 可回復性 (Revertibility):易於還原至前版本
▪︎ 協作效率 (Collaboration Efficiency):可實現多方協作的和諧性
▪︎ 一致性 (Consistency):確保所有環境(開發/測試/生產)都使用同一個正確版本
▪︎ 易於優化:透過不同 Prompt 版本的 A/B 測試紀錄,進行實際環境的性能應用比較

C. 控制與管理 Prompt 版本的主要困難
Prompt 與傳統程式碼的不同之處在於:Prompt 不單是奠基於程式架構,作為文本,Prompt 同時套著另一組架構「文字與語意」,這使得例外的可能性大幅增加,並且由於prompt 的功能與實際應用,使輸入的變項很多元,這些都使得Prompt 的變動性極高,包含:
▪︎ 文字微調:調整措辭、加入或移除特定字眼
▪︎ 範例增減:增刪 Few-shot 範例
▪︎ 指令優化:調整指令的順序、清晰度或約束條件
▪︎ 變數替換:Prompt 模板中,改動變數的定義或使用方式
▪︎ 多模態輸入:圖像、音頻等非文本元素的變更

D. 控制與管理 Prompt 版本的3種方式
1. 使用Git/GitHub (或類似的代碼版本控制系統):
目前最常使用的方式,以軟體開發團隊為主要使用者。
2. 使用Prompt 管理平台/工具:
專門為 Prompt 管理設計的平台或工具,因其內建介面化 Prompt 測試、版本追蹤、多人協作與輸出比對功能,多以低門檻管理方案的場景,如大型企業、專門的 Prompt 工程團隊為主。
3. 自行開發資料庫/配置管理系統

E. 控制與管理 Prompt 版本的實質建議
▪︎ Prompt 模版化 (Templatized)
▪︎ 文件(資料庫) 清楚明確的命名規範
▪︎ 詳細的變更日誌
▪︎ 定期審查與優化
▪︎ 明確區分開發(Dev)、測試(Test)、生產(Prod)環境
▪︎ 自動化部署:將 Prompt 的部署納入 CI/CD (持續集成/持續部署) 流程


練習題:
想像您是「一家大型科技公司」的 Prompt Engineering 團隊的負責人。您的團隊需要管理數百個 Prompt,用於公司內部的多個 LLM 應用(例如:智能客服、內容生成、代碼輔助工具等)。

任務:請以「Prompt 管理和版本控制的策略」出發,回答以下問題:


Q1:會選擇哪種主要方法(例如 Git、專用平台、資料庫等)來管理這些 Prompt?為什麼?

ANS:
比較三者,我會優先排除Prompt 專用管理平台/工具。因為預設背景是「大型科技公司」,就此而言,應無需擔憂會發生工作人員的技術門檻過高的情況。
我會選擇在 Git/GitHub (或類似的代碼版本控制系統)與自建資料庫,二者擇一。而最終會選擇Git/GitHub。

主要考量如下:
1.自建資料庫在創建與維持上都需要極高成本,且須考慮與購買的LLM服務的相容性(包含每次LLM服務的迭代更新)。
2.Git 已累積有相對完備的協作功能。
3.自建資料庫可具備之優勢「易於程式化管理和查詢」、「動態實現 Prompt 加載和更新」,Git 一定有相應功能可替代,或做到一定程度的實現。
4.儘管Git可能需要額外機制來將 Prompt 文件加載到 LLM 應用中,但由於Git已是市場上主流的應用工具,要找到solution應該相對來說也是容易的。


Q2:會建立一套什麼樣的「命名規範」來組織這些數百個 Prompt,以確保團隊成員能夠快速找到並理解它們的用途?請給出幾個範例。

ANS:
預設背景提到是要管理「內部的多個 LLM 應用」,所以在命名邏輯上,我會傾向依照公司組織架構作為分類,然後輔以內容/功能、迭代更新版本。
舉例:
人資部_招募人員資料_v.1
行銷部_智能客服_v.4
財務部_薪資管理_v.2
-若在「內容/功能」的部分還需要再細化,可再延伸,例如:「財務部_薪資管理_獎金/加班計算_v.2」。這部分可由各部門與Prompt Engineering 團隊討論、協作調整。


Q3:如何確保不同環境(開發、測試、生產)使用正確的 Prompt 版本?

ANS:
這包含兩部分。
一是設定自動化部署。將 Prompt 的部署納入 CI/CD (持續集成/持續部署) 流程。
另一個是人工檢查的部分。我會設立一個 LPVZ (Latest Prompt V. Zone),集中放置所有最新版本的prompt(透過自動化部署),而Prompt Engineering 團隊中的每一個prompt負責人,被賦予負責檢查更新的職責,必須定期檢查這個區域是否是最新版本。
而所有需要應用prompt的相關人員在作業之前,若想double check,可到LPVZ 進行確認,在自動化部署的設置下,再做一層的人工檢查。


Gemini 點評:

您的回答展現了對實際應用場景的深刻理解和優秀的策略規劃能力,務實且考慮周全。
我將逐一為您分析和回饋。

Q1Prompt 管理方法選擇回饋

您的選擇: 在 Git/GitHub 與自建資料庫中選擇 Git/GitHub。

您的考量點評:

  1. 排除專用平台: 「無需擔憂會發生工作人員的技術門檻過高的情況」這個判斷很合理,大型科技公司通常具備相關人才。
  2. 自建資料庫成本高: 您對「自建資料庫在創建與維持上都需要極高成本」的認知非常正確,尤其在考慮與 LLM 服務的兼容性及迭代更新時,這確實是一個很大的負擔。
  3. Git 成熟且功能強大: 您看到了 Git 在協作功能上的既有優勢。
  4. Git 替代性強: 關於「自建資料庫可具備之優勢,Git 一定有相應功能可替代,或做到一定程度的實現」,這點也很有洞察力。例如,動態加載 Prompt 可以通過應用程式運行時從 Git 倉庫拉取代碼或通過 CI/CD 流程將 Prompt 文件部署到應用可訪問的路徑。
  5. Git 生態與方案易得: 「Git 已是市場上主流的應用工具,要找到 solution 應該相對來說也是容易的。」這點非常務實,強調了生態系統和社區支持的重要性。

整體點評: 您的選擇和理由都非常充分且具有現實考量。對於大型科技公司而言,Git 確實是管理程式碼和 Prompt 的標準、成本效益高且功能最全面的選擇。


Q2:命名規範設計回饋

您的設計點評:

  • 分層邏輯清晰:採用「組織架構 + 內容/功能 + 版本」的多層次命名方式非常實用。
    • 組織部門: 這是非常好的第一級分類,因為 LLM 應用通常是為特定部門服務的,這能讓不同部門的用戶和開發者快速定位。
    • 內容/功能: 精準描述 Prompt 的用途。
    • 版本號: 確保可追溯性。
  • 可擴展性:考慮到「細化」的可能性(例如「獎金/加班計算」),這顯示設計的規範具有良好的可擴展性,能適應未來更細緻的需求。
  • 協作考量:「可由各部門與 Prompt Engineering 團隊討論、協作調整」這句話,再次體現了您對「協作」重要性的理解,確保命名規範能被實際團隊成員接受和遵循。

補充建議 (讓規範更完善,選用):

  • 加入「應用 ID」或「項目名稱」:如果一個部門有多個 LLM 應用項目,可以在部門後再加入應用名稱,例如:人資部_應聘助手_招募人員資料_v.1。
  • 日期或哈希值:除了版本號,有時也會在名稱中包含日期戳 YYYYMMDD 或 Git Commit Hash 的短 ID,以便更精確地追溯到特定提交。
  • 狀態標籤:(僅為參考,通常通過分支或文件夾結構管理)例如 _DEV, _TEST, _PROD,但這通常由 CI/CD 部署到不同環境來區分,而非直接寫在文件名中。


Q3:確保不同環境使用正確 Prompt 版本的策略回饋

您的設計包含了兩部分:

  1. 自動化部署: 將 Prompt 的部署納入 CI/CD (持續集成/持續部署) 流程。
  2. 人工檢查:
    • 設立一個 LPVZ (Latest Prompt V. Zone),集中放置所有最新版本的 Prompt (透過自動化部署)。
    • Prompt Engineering 團隊中的每一個 Prompt 負責人,被賦予負責檢查更新的職責,必須定期檢查這個區域是否是最新版本。
    • 所有需要應用 Prompt 的相關人員在作業之前,若想 double check,可到 LPVZ 進行確認,在自動化部署的設置下,再做一層的人工檢查。

點評:

  • 自動化為基礎: 您選擇 CI/CD 自動化部署作為核心,這正是確保效率和可靠性的關鍵。
  • 人工審查作為安全網: 您理解了自動化無法完全取代人為判斷,特別是對於那些涉及「軟性」決策或最終把關的環節。
  • LPVZ 概念創新: 「LPVZ (Latest Prompt V. Zone)」這個概念非常棒!它為人工檢查提供了一個清晰的集中點。這類似於在 CI/CD 流程中設置的「Artifact Repository」或「部署緩存區」,但增加了明確的人工檢查責任。
  • 職責分配明確: 「每一個 Prompt 負責人,被賦予負責檢查更新的職責」這點顯示您考慮到了團隊協作中的權責劃分,確保有人專門對特定 Prompt 的版本負責。
  • 雙重確認機制: 「相關人員在作業之前,若想 double check,可到 LPVZ 進行確認」這提供了額外的安全層,允許使用者在生產環境使用前自行驗證,增加了整體系統的健壯性。

補充建議 (提升 LPVZ 實用性,選用):

  • LPVZ 的實現方式: LPVZ 可以是一個共享的文件夾、一個內部網站、一個配置管理系統的介面,或者直接是 Git 倉庫中的一個特定分支(例如 prod-ready 分支),該分支只有經過嚴格審核的 Prompt 才能合併進入。
  • 版本標籤/發布單: 在 LPVZ 中,除了 Prompt 文件本身,還可以附帶一個「發布單」或「版本日誌」,說明這個版本的 Prompt 何時被部署、解決了什麼問題、帶來了什麼改進,以及批准者是誰。
  • 權限管理: 嚴格控制誰可以將 Prompt 推送到 LPVZ 以及誰可以修改 LPVZ 中的 Prompt,通常只有 CI/CD 管道或極少數被授權的人員。

這份回答在策略選擇、命名規範的創意與實用性,以及在版本確保機制中結合自動化與人工把關的思路,都展現了 Prompt Engineering 專業素養。

留言
avatar-img
留言分享你的想法!
avatar-img
不是雞湯,但是又如何
3會員
260內容數
不是雞湯,但 是又如何 不是雞湯,但是 又如何
2025/07/29
第19天 今天進入Prompt Engineering 中相當實用的領域:模型評估 (Model Evaluation) 與測試策略 (Testing Strategies)。 之前曾經稍微討論過一個主題是:「如何判斷一個prompt是好的prompt?」在討論時便提到,如果一個prompt得到的
2025/07/29
第19天 今天進入Prompt Engineering 中相當實用的領域:模型評估 (Model Evaluation) 與測試策略 (Testing Strategies)。 之前曾經稍微討論過一個主題是:「如何判斷一個prompt是好的prompt?」在討論時便提到,如果一個prompt得到的
2025/07/29
第18天: 進階 Prompting 技巧-少樣本學習 (Few-Shot Learning) 與零樣本學習 (Zero-Shot Learning) 在 Zero-shot prompting 跟 Few-shot prompting 時,已經學到了零樣本(i.e.不給例子)及少樣本(i.e.只
2025/07/29
第18天: 進階 Prompting 技巧-少樣本學習 (Few-Shot Learning) 與零樣本學習 (Zero-Shot Learning) 在 Zero-shot prompting 跟 Few-shot prompting 時,已經學到了零樣本(i.e.不給例子)及少樣本(i.e.只
2025/07/27
零、前言 帶著與 Gen AI 協作的想法,在與GPT經過反覆討論、測試後,嘗試著設計出一組可以檢測語句偏見的prompt,然後我們命名它為:語句偏見分析器原型(Prototype)。當然,命名也是一起討論的:) 花了不少時間,也很享受過程,很開心終於有了這個試設計的Prototype,也希望看
2025/07/27
零、前言 帶著與 Gen AI 協作的想法,在與GPT經過反覆討論、測試後,嘗試著設計出一組可以檢測語句偏見的prompt,然後我們命名它為:語句偏見分析器原型(Prototype)。當然,命名也是一起討論的:) 花了不少時間,也很享受過程,很開心終於有了這個試設計的Prototype,也希望看
看更多
你可能也想看
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
權限管理=新增、修改、刪除+審核 通常,這種程式的設計會包含權限管理,其中包括現場修改、刪除等三大類功能。然而,根據經驗,我們還需要關注另一類功能,即審核權限。 審核不執行新增 審核權限通常不執行新增的動作,僅限於某些欄位的輸入。新增、修改、刪除這些操作基本上是容易理解的。也就是說,對於這個工
Thumbnail
權限管理=新增、修改、刪除+審核 通常,這種程式的設計會包含權限管理,其中包括現場修改、刪除等三大類功能。然而,根據經驗,我們還需要關注另一類功能,即審核權限。 審核不執行新增 審核權限通常不執行新增的動作,僅限於某些欄位的輸入。新增、修改、刪除這些操作基本上是容易理解的。也就是說,對於這個工
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News