Prompt Engineering 完整指南:從入門到精通
系統性介紹 Prompt 設計技巧,包含 Chain-of-Thought、Few-shot Learning、System Prompt 最佳實踐,讓你的 AI 輸出更精準可控。
Prompt Engineering 完整指南:從入門到精通
什麼是 Prompt Engineering?
Prompt Engineering(提示工程)是設計與優化輸入給 AI 模型的文字指令,以獲得更準確、更符合需求的輸出結果。這是使用 LLM 最重要的技能之一。
為什麼 Prompt 很重要?
同樣的問題,不同的問法會得到截然不同的答案:
❌ 差的 Prompt:
"寫一篇文章"
✅ 好的 Prompt:
"請以科技部落格的風格,撰寫一篇 500 字的文章,主題是 AI 在醫療領域的應用。
目標讀者是對科技有基本了解的一般大眾。請包含 2-3 個具體案例。"
基礎技巧
1. 明確具體的指令
原則:告訴 AI 你要什麼,而不是不要什麼。
❌ 模糊:
"幫我改善這段程式碼"
✅ 具體:
"請檢查這段 Python 程式碼的效能問題,特別注意:
1. 是否有不必要的迴圈
2. 記憶體使用是否可以優化
3. 是否有更 Pythonic 的寫法
請提供修改建議和修改後的程式碼。"
2. 提供上下文
讓 AI 了解背景資訊,能大幅提升回答品質:
prompt = """
# 背景
我正在開發一個電商網站的後端 API,使用 FastAPI + PostgreSQL。
# 目前狀況
用戶反映結帳頁面載入很慢,大約需要 5 秒。
# 問題
請分析可能的效能瓶頸,並提供優化建議。
"""
3. 指定輸出格式
明確告訴 AI 你期望的輸出格式:
請分析以下客戶評論的情緒,並以 JSON 格式輸出:
評論:「這個產品真的太棒了!品質很好,出貨也很快。」
輸出格式:
{
"sentiment": "positive/negative/neutral",
"confidence": 0.0-1.0,
"key_points": ["...", "..."]
}
4. 使用分隔符號
用明確的分隔符號區分不同部分:
請將以下文章翻譯成英文:
---文章開始---
人工智慧正在改變我們的生活方式。從智慧手機的語音助理,
到自動駕駛汽車,AI 的應用無處不在。
---文章結束---
翻譯要求:
- 使用正式的商業英語
- 保持原文的段落結構
進階技巧
1. Few-shot Learning(少樣本學習)
提供範例讓 AI 學習你期望的模式:
請將產品描述轉換成行銷標語。
範例 1:
產品:無線藍牙耳機,續航 30 小時
標語:告別電量焦慮,音樂不間斷
範例 2:
產品:折疊式電動滑板車,重量 12kg
標語:輕鬆收納,城市通勤新選擇
現在請處理:
產品:智慧手錶,可監測心率和睡眠品質
標語:
2. Chain-of-Thought(思維鏈)
引導 AI 逐步思考,提升複雜問題的推理能力:
請解決以下數學問題,請一步一步思考:
問題:一家咖啡店週一賣出 45 杯咖啡,週二比週一多賣 20%,
週三比週二少賣 10 杯。請問這三天總共賣出幾杯咖啡?
請這樣思考:
1. 先計算週二的銷量
2. 再計算週三的銷量
3. 最後加總三天的銷量
進階用法:Zero-shot CoT
只需加上「Let's think step by step」:
prompt = """
問題:如果一個專案需要 5 個工程師工作 8 天完成,
現在只有 4 個工程師,需要多少天?
Let's think step by step.
"""
3. Role Prompting(角色扮演)
讓 AI 扮演特定角色,獲得更專業的回答:
你是一位資深的 Python 後端工程師,擁有 10 年經驗,
專精於高併發系統設計和效能優化。
請以這個角度,審查以下程式碼並提供改善建議:
[程式碼]
常用角色範例:
| 角色 | 用途 |
|---|---|
| 資深工程師 | 程式碼審查、架構設計 |
| 技術寫作者 | 文件撰寫、教學內容 |
| 產品經理 | 需求分析、使用者故事 |
| 資安專家 | 安全性審查 |
4. 結構化 System Prompt
設計完整的系統提示,定義 AI 的行為模式:
system_prompt = """
# 角色
你是 DataAgent AI Academy 的技術助教,專門協助學員學習 AI 和程式開發。
# 核心原則
1. 使用繁體中文回答
2. 解釋技術概念時,先給出簡單定義,再深入說明
3. 適時提供程式碼範例
4. 鼓勵學員動手實作
# 回答格式
- 使用 Markdown 格式
- 程式碼要標註語言類型
- 複雜概念用列表或表格呈現
# 限制
- 不提供完整的作業答案,而是引導思考
- 不確定的資訊要明確說明
- 超出 AI/程式開發範圍的問題,禮貌地說明無法回答
"""
實用 Prompt 模板
1. 程式碼生成
請用 [語言] 實作以下功能:
功能描述:[描述]
輸入:[輸入格式]
輸出:[輸出格式]
限制條件:[如有]
請遵循以下規範:
- 加入適當的錯誤處理
- 使用有意義的變數命名
- 加入必要的註解
2. 程式碼解釋
請解釋以下程式碼的功能:
```[語言]
[程式碼]
請包含:
- 整體功能概述
- 逐行解釋關鍵邏輯
- 使用到的設計模式或演算法
- 潛在的改進空間
### 3. 文件撰寫
請為以下 API 撰寫文件:
端點:[URL] 方法:[GET/POST/etc] 功能:[描述]
請使用以下格式:
- 端點描述
- 請求參數(表格)
- 回應格式(JSON 範例)
- 錯誤處理
- 使用範例
### 4. Debug 協助
我遇到以下錯誤,請協助分析:
錯誤訊息
[貼上完整錯誤訊息]
相關程式碼
[貼上程式碼]
環境資訊
- 語言/框架版本:
- 作業系統:
我已嘗試
[列出已嘗試的解決方法]
## 常見錯誤與解決
### ❌ 錯誤 1:指令太模糊
❌ "幫我寫個網站" ✅ "請用 Next.js 建立一個 Todo List 應用,包含:
- 新增/編輯/刪除任務
- 任務完成狀態切換
- 使用 Tailwind CSS 做基本樣式"
### ❌ 錯誤 2:一次問太多問題
❌ "解釋 React、Vue、Angular 的差異,並告訴我該學哪個, 還有怎麼找前端工作,薪水大概多少?"
✅ 一次專注一個問題,分多次詢問
### ❌ 錯誤 3:沒有提供足夠上下文
❌ "這段程式碼有什麼問題?" [貼一小段程式碼]
✅ "這段 Python 程式碼在處理大量資料時會變很慢, 預期處理 100 萬筆資料。請分析效能問題: [完整程式碼 + 錯誤訊息]"
### ❌ 錯誤 4:期望 AI 有最新資訊
❌ "最新版 React 19 有什麼新功能?"
✅ "根據你的知識,React 18 有哪些重要功能? (我知道你的資訊可能不是最新的)"
## 進階:Prompt Chaining
將複雜任務拆解成多個步驟:
```python
# 步驟 1:分析需求
prompt_1 = "分析以下用戶需求,列出功能清單:[需求描述]"
features = call_llm(prompt_1)
# 步驟 2:設計架構
prompt_2 = f"根據以下功能清單,設計系統架構:{features}"
architecture = call_llm(prompt_2)
# 步驟 3:產生程式碼
prompt_3 = f"根據以下架構,實作核心功能:{architecture}"
code = call_llm(prompt_3)
工具推薦
| 工具 | 用途 |
|---|---|
| OpenAI Playground | 測試和調整 Prompt |
| LangSmith | Prompt 版本管理和評估 |
| PromptPerfect | 自動優化 Prompt |
總結
Prompt Engineering 的核心原則:
- 明確具體:清楚說明你要什麼
- 提供上下文:背景資訊越多越好
- 指定格式:明確輸出格式
- 逐步引導:複雜問題分步驟處理
- 持續迭代:根據結果調整 Prompt
下一步行動:
- 選擇一個你常用的 AI 任務
- 用本文的技巧重新設計 Prompt
- 對比前後效果差異
- 建立自己的 Prompt 模板庫
相關文章:
參考資源: