iT邦幫忙

2025 iThome 鐵人賽

DAY 3
1

很明顯用錯誤的方式,一直問絕對不會得到多好的答案
但只要掌握以下基本原則,就會讓你跟 AI 聊天的過程更順暢

What is Prompt Engineering

介紹

一門透過設計和最佳化提示詞 (prompt) 來引導大型語言模型 (LLM) 生成所需回應的「藝術與科學」
就像給某人的一張便利貼,如何在有限的文字內,有效的傳達訊息

Zero-shot vs. Few-shot Prompting

零次提示 (Zero-shot Prompting):

零次提示是指在不提供任何範例的情況下,直接給予模型指令並要求其完成任務。模型必須依賴其自身在訓練過程中學到的知識和泛化能力來回答

少次提示 (Few-shot Prompting):

少次提示是指在提示詞中提供一個或多個「輸入-輸出」的範例,以引導模型理解任務的模式和風格,然後再給出需要處理的實際輸入

思維鏈 (Chain-of-Thought, CoT)

思維鍊是一種進階的提示技巧,其核心理念是「引導模型在回答最終問題之前,先列出其思考過程或解決步驟」。這能讓模型將複雜問題分解成多個邏輯步驟,類似人類的思考方式
透過在提示詞中加入 “讓我們一步一步思考” (Let's think step by step) 或類似的提示,可以強制模型生成中間步驟。這樣不僅能提高最終答案的準確性,還能讓使用者更容易理解模型的決策過程,方便除錯

How to use?

提示詞的四大核心要素

  • 指令(Instruction): 告訴模型「做什麼」
    • 範例:總結以下文章將這段文字分類為正面或負面
  • 上下文(Context): 提供背景資訊,幫助模型理解情境
    • 範例:假設你是一名行銷專家,撰寫一份報告
  • 輸入資料(Input Data): 模型需要處理的內容
    • 範例:這篇文章的全文是:...
  • 輸出指示(Output Indicator): 規範模型的輸出格式、風格或長度。
    • 範例:請以 JSON 格式返回結果請使用繁體中文,語氣應保持專業和嚴謹

有效提示詞的通用原則

  • 清晰且具體: 指令越明確,模型產生的結果越精準
  • 給予思考時間: 對於複雜任務,使用 讓我們一步一步思考 等提示,讓模型分解問題
  • 拆分複雜任務: 將大問題分解成多個小步驟,引導模型分階段完成
  • 指定角色與風格: 讓模型扮演特定專家(如:你是一位安卓APP資深工程師),以獲得更專業的回答
  • 使用分隔符: 利用引號、括號或換行來區分提示詞的不同部分,幫助模型理解

舉個栗子 💁🏼 🌰

以 Gemini 為例

將以下內容存成一個檔案(gemini.md),需要嚴格遵守以下規則。
#任務:
建立 chat agent api
#相關資訊:
chat requst:
{		
	"query": usr_msg
}
chat agent response:
{
	"text": chat_response
}
#流程:
範例流程...
*需等待api打完,使用者才能講下一句話(幫我想怎麼樣比較順)

#最佳修改步驟
1.因為我原本就有專案,所以先看過所有你需要的相關程式碼。
2.看完程式碼後,編寫程式流程,不要輸出程式碼。
3.跟我談論流程直到我滿意整個計畫。
4.開始輸出程式碼,一次輸出一個檔案,直到我說下一步。
5.每次我改完後,你要等我上傳程式碼,並且檢查。

#注意事項
程式碼開始輸出後,要使用檔案+文字標註,[新增]、[刪除]、[修改]。
程式碼是kotlin還是java要注意清楚。
有任何問題都可以詢問我的意見。
採用MVP架構。
採用最小變動原則。
每次完成一個必要的動作就要有log。
有很多功能我原本就有,請善用他,不要重複建立功能。
如果了解以上規則,輸出這個檔案,並說"以了解"。

可以看到,我區分了好幾個區塊:
“任務” : 一次最好給予一個任務就好,這樣會有最好的效果,而且出事的話可以讓受災範圍最小
“相關資訊”: 這是”Few-shot” 的概念,比如接 API 就可以給 request 跟 respone ,AI 特別會讀 json (之後篇章介紹
“流程”: 盡量把想要的細節描述清楚,不確定的可以備註給 AI 跟他一起討論怎麼樣比較好
“最佳修改步驟”: 這是類似 “思維鍊” 的概念,讓 AI 可以跟著你熟悉的步調寫程式
“注意事項”: 補充重點,不用條列式是為了不要誤導 AI 有要遵守的優先度,而是要全部遵守

不要小看這個基礎技術!

他是一個重要到可以直接聘一個工程師的程度,甚至有些工作會直接要求你要會。
https://ithelp.ithome.com.tw/upload/images/20250917/20176017dtVR2imJsD.png
https://ithelp.ithome.com.tw/upload/images/20250917/20176017ThHbP5bLzo.png
圖片來自: https://programmerhumor.io/programming-memes/promptengineer/

額外的…

一段提示词 让Gemini CLI变成自动化Agent! 提示词工程 https://www.youtube.com/watch?v=YCswP_xmxu0


上一篇
Day 2 - 魔法是想像的世界,在魔法的世界裡無法想像的事情就無法實現。
下一篇
Day 4 - AI 是能力放大器,你沒用,他也沒用: 將 AI 應用在學習上
系列文
Android 不會只更新 UI ! 用 Vibe Coding ? 加速打造 Al-native App6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言