Prompt Engineering 完整指南:從入門到精通

系統性介紹 Prompt 設計技巧,包含 Chain-of-Thought、Few-shot Learning、System Prompt 最佳實踐,讓你的 AI 輸出更精準可控。

AI Academy 編輯部2025年11月21日

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. 程式碼解釋

請解釋以下程式碼的功能:

```[語言]
[程式碼]

請包含:

  1. 整體功能概述
  2. 逐行解釋關鍵邏輯
  3. 使用到的設計模式或演算法
  4. 潛在的改進空間

### 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
LangSmithPrompt 版本管理和評估
PromptPerfect自動優化 Prompt

總結

Prompt Engineering 的核心原則:

  1. 明確具體:清楚說明你要什麼
  2. 提供上下文:背景資訊越多越好
  3. 指定格式:明確輸出格式
  4. 逐步引導:複雜問題分步驟處理
  5. 持續迭代:根據結果調整 Prompt

下一步行動

  1. 選擇一個你常用的 AI 任務
  2. 用本文的技巧重新設計 Prompt
  3. 對比前後效果差異
  4. 建立自己的 Prompt 模板庫

相關文章

參考資源