iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0

什麼是提示工程

提示工程是一種如何以清楚指令來引導 AI 的實踐,藉此讓 Copilot 可以更為精準回答正確的問題或完成需求,如解釋專案內容與產生相對應的程式碼。這可以確保程式碼在語法、功能與內容上為正確的。想像一下搭計程車的情境,乘客必須給司機準確的地點與方向引導,否則可能會有繞路或無法精準抵達想要位置情況發生。有了明確指示,乘客可以在最短時間內抵達想要的地點,而無需有額外負擔去進行修正(如自行過馬路到對街、自己再往前走100公尺..)。
https://ithelp.ithome.com.tw/upload/images/20241004/20091494isR6bxT77E.png

 
 
 

提示工程原則

  • Single
    提示集中在單一明確定義的工作或問題上。 這種清楚非多個目標的方式,對於從 Copilot 獲得準確且有用的回應是很重要的。
  • Specific
    明確且詳細,對於從 Copilot 可以獲得合適且精準的程式碼建議。
  • Short
    盡量保持簡潔、扼要,沒有多餘的贅詞與口語。 對於 Copilot 不會造成額外負擔,或使互動複雜化,進而要進行多餘的釐清。
  • Surround
    藉由開啟儲存庫、程式碼檔案、相關專案或指定名稱方式,這可為 Copilot 提供豐富的內容背景,進而產生更量身定制的程式碼建議。

 
 
 

流程

1 - 安全的提示傳輸和情境收集
透過 HTTPS 確保自然語言可以安全的傳送至 GitHub Copilot 伺服器。在這個階段,Copilot 也會收集情境詳細資料,包含

  • 游標位置前後的程式碼
  • 正在編輯之檔案的檔案名稱和類型
  • 相鄰的已開啟索引標籤的相關資訊

2 - 內容篩選
進行內容篩選後再繼續擷取意圖和產生程式碼,其中包含

  • 個人資料
  • 仇恨言論和不當內容

3 - 情境分析
情境分析將從自然語言註解中擷取意圖,包含從關鍵字、片語與情境線索。而後會將意圖對應至特定的程式碼編輯工作或功能,轉譯成使用者需求成具體的程式碼工作要求。

4 - 程式碼產生
透過對應的意圖而獲知訊息的 Copilot 會完成下列動作:

  • 提供專為您的程式碼喜好設定量身打造的程式碼建議。
  • 建議 apt 函式和變數名稱。
  • 製作可確保語法和情境正確性的完整程式碼區塊。
  • 與專案的特定語言、架構和標準達成一致。
  • 遵守自訂設定,例如程式碼樣式和條件約束

5 - 使用者互動
您會看到所產生的程式碼以便進行檢閱和互動,並有選項可供您:

  • 原封不動地接受程式碼
  • 修改建議的程式碼
  • 拒絕建議的程式碼

6 - 意見反應迴圈起始
Copilot 會根據您的動作起始意見反應迴圈,以達成下列目的:

  • 從已接受的建議中增長知識
  • 透過建議的修改和拒絕來學習和改進

7 - 針對後續提示重複此程序
此程序會在您提供更多提示時重複進行,Copilot 會持續處理使用者要求、了解其意圖並產生程式碼以作為回應。 一段時間後,Copilot 會運用累積的意見反應和互動資料 (包括情境詳細資料) 以改善其對於使用者意圖的了解,並精進其程式碼產生功能
https://ithelp.ithome.com.tw/upload/images/20241004/20091494rGwX5QKnP8.png

 
 
 

從0開始的樣本學習

起初,當使用者與 GitHub Copilot 互動或提供建議時,是在沒有任何具體範例的情況下 (僅依靠其基礎訓練) 來產生程式碼。 例如,假設您要建立一個函式以在攝氏溫動轉華氏溫度。 使用者可以先透過註解撰寫你的需求解,Copilot 可能能夠根據其先前的訓練來為您產生程式碼,而無需任何其他範例。隨後,你可以依據此函式為基底,讓 Copilot 藉由此樣本延伸出不同相似函式,像是華氏溫度轉攝氏溫度,即為單一樣本學習。理所當然,當樣本越來越多,Copilot 能產生的建議經過細緻的微調,會從差距甚遠逐漸取得平衡,這就多樣本學習。

 
 
 

提示工程最佳實踐

  • 提供足夠的清楚性: 如同工程師般描述 “寫一個 .NET函式來篩選並傳回指定內容中的偶數”
  • 提供充足的內容與細節: 在註解中提供詳細步驟,如: 建立 5 個隨意整數在指定內容、建立偶數陣列、回傳內容為 List 型態..等。
  • 提供學習範例:同前一個段落 “從0開始的樣本學習” 內描述,提供多樣本
  • 判斷提示並逐一查看:第一個提示可能不會總是產生完美的程式碼,但這完全沒關係。 如果第一個輸出不完全符合您的要求,請將它視為對話中的一個步驟。 清除建議的程式碼、透過新增的詳細資料和範例來豐富您的初始註解,然後再次提示 Copilot。

 
 
 

參考資料

  1. 提示工程基礎和最佳做法

上一篇
GitHub Mobile 上使用 Copilot
下一篇
GitHub Copilot 自動建議與完成功能介紹
系列文
現代化應用程式開發與維運 - GitHub Codespace 與 GitHub Copilot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言