☕ NEW! 完成新手任務即可參加抽獎!LINE 星巴克禮券等你拿,名額有限!        🎉 推廣活動:邀請好友註冊 DevLearn,累積推薦抽 LINE 星巴克禮券! 活動詳情 →        🔥 活動期間 2026/4/1 - 5/31 |已有 0 人參加       
AI 應用 中級

Prompt Engineering 提示工程

什麼是 Prompt?

💡 比喻:跟外國人溝通 Prompt 就像跟一個聽得懂中文但「不會猜你心思」的外國人說話。 你說得越清楚,他做得越好。 你說「那個東西放那邊」,他會傻住。 你說「把紅色的杯子放到桌上左邊第二格」,他馬上做到。

Prompt = 你給 AI 的指令。指令的品質決定 AI 輸出的品質。

這就是為什麼 Prompt Engineering(提示工程)是 AI 時代最重要的技能之一。


好 Prompt vs 壞 Prompt 對比

範例 1:修 Bug

❌ 壞 Prompt:
"幫我修 bug"

問題:什麼 bug?在哪個檔案?什麼錯誤訊息?
AI 只能猜,猜錯就浪費時間。
✅ 好 Prompt:
"HomeController.cs 第 42 行出現 NullReferenceException,
  Model 是 null。
  請檢查 Index action 有沒有回傳正確的 ViewModel。
  我的 Model 是 ProductViewModel,在 Models/ProductViewModel.cs。
  資料庫用 ApplicationDbContext。"

結果:AI 馬上定位問題,幾秒鐘就修好。

範例 2:建網站

❌ 壞 Prompt:
"做一個網站"

問題:什麼網站?給誰用?長什麼樣?
這就像跟裝潢師傅說「幫我裝潢」但不說要什麼風格。
✅ 好 Prompt:
"用 ASP.NET Core MVC 做一個吉他教學網站,
  功能:首頁(Hero banner)、課程列表(可按難度篩選)、聯絡表單
  技術:SQLite + EF Core,Bootstrap 5
  風格:暖米色系(背景 #F5F1EB),圓角按鈕
  部署:Railway,要有 Dockerfile"

結果:AI 一次到位,產出完整可用的專案。

範例 3:寫 Code

❌ 壞 Prompt:
"寫一個 API"

✅ 好 Prompt:
"在 Controllers/ 資料夾建一個 ApiProductController.cs,
  繼承 ControllerBase,加上 [ApiController] 和 [Route("api/products")]。
  用 ApplicationDbContext 注入。
  實作以下 endpoints:
  - GET /api/products → 回傳所有產品(JSON)
  - GET /api/products/{id} → 回傳單一產品
  - POST /api/products → 新增產品(接收 ProductDto)
  - PUT /api/products/{id} → 更新產品
  - DELETE /api/products/{id} → 刪除產品
  每個 action 都要有適當的 HTTP status code 回傳。"

Prompt 公式

一個好的 Prompt 通常包含五個元素:

角色 + 背景 + 任務 + 格式 + 限制

角色:你是一個資深 ASP.NET Core 開發者
背景:我正在做一個學習平台,用 .NET 8 + SQLite + EF Core
任務:幫我建一個 ChapterController 有完整的 CRUD 功能
格式:每個 action 加上中文註解,用 async/await
限制:不要用 Repository Pattern,直接用 DbContext

實際範例

你是一個資深 ASP.NET Core 開發者。
我正在做一個吉他教學網站 GuitarSchool,
技術棧是 .NET 8 + SQLite + EF Core + Bootstrap 5。

請幫我做以下事情:
1. 建立 Course model(Id, Title, Description, Level, Price, ImageUrl)
2. 在 ApplicationDbContext 加上 DbSet<Course>
3. 建立 CourseController 有 Index 和 Details action
4. 建立對應的 Views(用 Bootstrap 卡片排版)

注意事項:
- 所有 action 用 async/await
- View 裡的文字用繁體中文
- 不需要建 Repository,直接用 DbContext

Chain of Thought(思維鏈)

💡 比喻:考試寫計算題 老師說「寫出計算過程」,你就不會跳步驟算錯。 Chain of Thought 就是告訴 AI「一步一步想」, 讓它不要跳躍邏輯直接給答案。

怎麼用

普通 Prompt:
"這段 code 有什麼問題?"
→ AI 可能直接說「沒問題」或給一個模糊的答案

Chain of Thought Prompt:
"請一步一步分析這段 code:
  1. 先看每個變數的型別
  2. 追蹤資料流(從 input 到 output)
  3. 檢查每個可能的 null 情況
  4. 檢查 Exception 處理
  5. 最後告訴我有什麼問題"
→ AI 會系統性地分析,找到更深層的問題

在 Claude Code 中使用

> 我想在 ProductController 加上搜尋功能。
> 請先想一下:
> 1. 需要改哪些檔案?
> 2. 需要什麼 NuGet 套件?
> 3. SQL 查詢怎麼寫最有效率?
> 4. 前端搜尋欄怎麼設計?
> 想好之後再開始寫 code。

在 Claude Code 中,你還可以用 Plan Mode(規劃模式)

> 用 plan mode 先幫我規劃怎麼實作購物車功能,
> 不要直接寫 code,先列出步驟。

AI 會進入規劃模式,先列出完整的實作計畫,你確認後再執行。


Few-shot(給範例讓 AI 學)

💡 比喻:教新員工 與其跟新員工說「幫我寫報告」, 不如給他一份範本:「照這個格式寫」。 Few-shot 就是給 AI 範例,讓它學會你要的格式。

怎麼用

請幫我寫 Model 的中文註解,格式如下:

範例:
/// <summary>
/// 產品編號(主鍵,自動遞增)
/// </summary>
public int Id { get; set; }

/// <summary>
/// 產品名稱(必填,最大長度 100 字)
/// </summary>
[Required, MaxLength(100)]
public string Name { get; set; } = "";

現在請用同樣的格式,幫 Course model 的每個屬性加上中文註解。
Course 的屬性有:Id, Title, Description, Level, Price, ImageUrl

另一個範例:CSS 風格統一

我的 CSS 命名風格如下:

範例:
.card-guitar { ... }         /* 元件-用途 */
.btn-primary-warm { ... }    /* 元件-狀態-風格 */
.section-hero-home { ... }   /* 區塊-類型-頁面 */

請用同樣的命名風格,幫我寫課程列表頁的 CSS。
需要:課程卡片、篩選按鈕、分頁按鈕。

中文 vs 英文 Prompt 差異

語言      優點                        缺點
────────────────────────────────────────────────────────
中文      表達需求更自然               技術術語可能翻譯不精確
          溝通更快速                   某些 AI 的中文理解稍弱
          適合描述業務邏輯

英文      技術術語更精確               需要英文能力
          AI 訓練資料更多              描述業務邏輯較不自然
          錯誤訊息通常是英文

實用建議

最佳實踐:中英混用

"幫我在 HomeController 的 Index action 加上 [Authorize] attribute,
  只允許 Role 是 'Admin' 的使用者存取。
  如果未授權,redirect 到 /Account/Login。"

技術名詞用英文(Controller, Action, Attribute, Authorize)
描述邏輯用中文(加上、只允許、如果未授權)

實際範例:用一個 Prompt 完成整個功能

你是一個資深 ASP.NET Core 開發者。
我的專案是 DotNetLearning,.NET 8 + SQLite + EF Core。

請幫我實作「我的最愛」功能:

Model:
- Favorite(Id, UserId, ChapterId, CreatedAt)
- 跟 Chapter 是多對一關係

Controller:
- FavoriteController
- POST /Favorite/Toggle/{chapterId} → 切換最愛狀態
- GET /Favorite/MyList → 顯示我的最愛清單

View:
- 每個章節卡片上加一個愛心按鈕 ♥
- 點了變紅色,再點取消
- 用 AJAX 不刷新頁面

注意:
- 要先檢查使用者是否登入([Authorize])
- 用 async/await
- 加上適當的中文註解
- 不用 Repository Pattern,直接用 DbContext

這個 Prompt 包含了:角色、背景、任務(Model + Controller + View)、格式(async、中文註解)、限制(不用 Repository)。


🤔 常見錯誤

錯誤 1:一次給太多任務

❌ 一個 Prompt 要求:
"幫我做會員系統、購物車、結帳流程、
  金流串接、Email 通知、管理後台"
→ AI 會混亂、遺漏、品質下降

✅ 拆成多個 Prompt:
第一輪:"先幫我做會員系統(註冊、登入、個人資料)"
第二輪:"現在加購物車功能(加入、移除、數量修改)"
第三輪:"接下來做結帳流程(訂單建立、庫存扣除)"
→ 每一輪都能高品質完成

錯誤 2:不給上下文

❌ "幫我修這個 bug"
→ AI:什麼 bug?在哪裡?什麼錯誤訊息?

✅ "ProductController.cs 的 Details action,
  當 id 不存在時會回傳 500 而不是 404。
  請加上 null check,如果找不到就回傳 NotFound()。
  我的 DbContext 是 ApplicationDbContext。"

錯誤 3:不驗證結果

❌ AI 說「改好了」就直接部署
→ 可能:編譯錯誤、Runtime 錯誤、邏輯錯誤、安全漏洞

✅ 驗證清單:
□ dotnet build 編譯通過?
□ dotnet run 啟動正常?
□ 手動測試功能正確?
□ Edge case 有處理嗎?(null、空字串、負數)
□ 有安全疑慮嗎?(SQL Injection、XSS)

本章重點整理

技巧 說明
Prompt 公式 角色 + 背景 + 任務 + 格式 + 限制
Chain of Thought 「一步一步想」讓 AI 更精確
Few-shot 給範例讓 AI 學會你的風格
中英混用 技術名詞英文,業務邏輯中文
拆解任務 一次一個功能,品質更好
驗證結果 build → run → test → review

💡 大家的想法 · 0

載入中...
💬 即時聊天室 🟢 0 人在線
😀 😎 🤓 💻 🎮 🎸 🔥
➕ 新問題
📋 我的工單
💬 LINE 社群
🔒
需要註冊才能使用此功能
註冊帳號即可解鎖測驗、遊戲、簽到、筆記下載等所有功能,完全免費!
免費註冊