Module 7 - LLM 實戰基礎

LLM 初階實戰班

作者: TK 最後更新: 2026-09-23

LLM 初階實戰班

LLM 運作概念圖

從 Prompt 寫法到 RAG 原理,再到把 LLM 串進工作流程做自動化漏洞通知。一堂課走完 LLM 實務應用的三個層次。

課程架構:

┌──────────────────────────────────────────────────┐
│  第一層  Prompt Engineering                      │
│  ── 學會怎麼跟 LLM 溝通                          │
├──────────────────────────────────────────────────┤
│  第二層  RAG                                     │
│  ── 讓 LLM 讀你的資料回答問題                     │
├──────────────────────────────────────────────────┤
│  第三層  RPA 工作流程自動化                       │
│  ── 把多個工具串起來自動執行                       │
└──────────────────────────────────────────────────┘

第一部分:Prompt Engineering

好的 Prompt 能讓 LLM 回答品質差到天差地別。這個部分介紹六種實戰技巧,從基礎到進階。

技巧總覽

技巧 難度 核心概念 適合場景
CRISPE 框架 入門 結構化指令 日常問答、報告
Custom Instructions 入門 個人化偏好 固定工作流程
Meta-Prompting 入門 用 AI 改 Prompt 不知道怎麼問
Few-Shot 中階 給範例讓 AI 學 分類、格式化
Chain-of-Thought 中階 逐步推理 數學、邏輯
Tree of Thoughts 進階 多路徑探索 複雜決策

CRISPE Prompt 框架

CRISPE 是一種結構化的 Prompt 寫法,把指令拆成五個面向:

元素 意義 你要寫什麼
C - Capacity and Role 能力與角色 讓 LLM 扮演什麼角色
R - Insight 洞察力 背景資訊和上下文
I - Statement 指令 你要 LLM 做什麼
P - Personality 個性 回應的風格和語氣
E - Experiment 嘗試 要求多個版本

壞 Prompt vs 好 Prompt:

壞 Prompt:
「推薦台灣的商機」
→ LLM 回答一堆籠統的廢話

好 Prompt (用 CRISPE):
[C] 你是有 10 年跨國創業經驗的商業顧問
[R] 我想在台灣找尚未普及但在海外已被驗證的商業模式
[I] 請條列三個具體的商機,每個包含:市場規模、競爭現況、進入門檻
[P] 用白話文回答,避免管理學術語
[E] 請提供「低資本」和「高資本」兩個版本

→ LLM 回答有結構、有深度、可以直接拿來用

Custom Instructions(自訂指示)

設定一次,之後每次對話都自動帶入偏好。

┌──────────────────────────────────────────┐
│ 你是什麼角色?                            │
│ → 「資安工程師,主要做滲透測試和紅隊」    │
├──────────────────────────────────────────┤
│ 回答風格?                                │
│ → 「技術文件風格,附指令和範例」          │
├──────────────────────────────────────────┤
│ 避免什麼?                                │
│ → 「不要廢話和客套,直接給解法」          │
└──────────────────────────────────────────┘

各平台的設定位置:

平台 設定位置
ChatGPT Settings → Personalization → Custom instructions
Claude 對話開頭用 System Prompt 帶入
Cursor .cursorrules 或 Project Rules

Meta-Prompting:用 LLM 幫你寫 Prompt

不知道怎麼問?讓 LLM 引導你優化 Prompt:

你是專業的 Prompt Engineer,工作是引導使用者產生更清晰、目標明確的 Prompt。

使用者有三種回覆方式:
輸入 1 → 選一個建議選項,根據選項重新產生 Prompt
輸入 2 → 補充資訊,根據新資訊更新 Prompt
輸入 3 → 直接用目前版本的 Prompt 回答,結束

每次回覆包含:
1. 修改後的 Prompt(更清晰、更容易被模型理解)
2. 三條改善建議(a, b, c)
3. 三個追問(a, b, c),提示該補充什麼資訊

實際對話範例:

你: 「幫我分析資安事件」

AI (Prompt Engineer):
修改後 Prompt:
  「分析以下資安事件,包含攻擊向量、影響範圍、建議對策」

建議:
  a. 加入事件的時間範圍和系統環境
  b. 指定分析框架(如 MITRE ATT&CK)
  c. 指定輸出格式(表格、報告、簡報)

追問:
  a. 事件涉及哪些系統或服務?
  b. 你需要技術層面還是管理層面的分析?
  c. 報告的讀者是誰(工程師、主管、客戶)?

你: 輸入 1,選 b

AI: 
修改後 Prompt:
  「使用 MITRE ATT&CK 框架分析以下資安事件,
   識別攻擊戰術和技術,評估影響範圍,
   提供偵測規則和緩解措施建議」
   ...

Few-Shot Prompting(給範例)

給 LLM 幾個輸入 → 輸出範例,它會學習格式和邏輯。

範例:Log 嚴重性分類

範例 1:
輸入: "Failed login attempt from 192.168.1.100"
分類: Medium
原因: 單次登入失敗,可能是密碼錯誤

範例 2:
輸入: "SQL injection detected in parameter 'id'"
分類: Critical
原因: 主動攻擊嘗試,可能導致資料外洩

範例 3:
輸入: "SSL certificate expires in 30 days"
分類: Low
原因: 預警性質,有時間處理

請分類:
輸入: "Brute force detected: 500 failed logins in 5 minutes from 10.0.0.55"

LLM 會根據範例的格式和判斷邏輯,給出結構化的分類結果。

Chain-of-Thought (CoT) 思維鏈

讓 LLM 顯示推理步驟,而不是直接跳到答案。

沒有 CoT:
Q: 一台伺服器 CPU 使用率 95%,記憶體使用率 30%,問題在哪?
A: CPU 瓶頸。
→ 對但沒有推理過程,你無法判斷是否可靠

有 CoT:
Q: 一台伺服器 CPU 使用率 95%,記憶體使用率 30%,問題在哪?
A: 讓我逐步分析:
   1. CPU 95% 表示計算資源幾乎耗盡
   2. 記憶體 30% 表示不是記憶體不足的問題
   3. 高 CPU + 低記憶體 → 可能原因:
      - CPU-bound 的程式(密碼學運算、壓縮、JSON parse)
      - 無窮迴圈或遞迴
      - 單一程序未利用多核心
   4. 建議先用 top/htop 看是哪個 process 吃 CPU
   → CPU 瓶頸,建議檢查耗 CPU 的 process

啟動 CoT 的關鍵詞:

語句 效果
「讓我們一步步思考」 基本 CoT
「請解釋你的推理過程」 要求透明
「先分析再回答」 確保不跳步

Few-Shot CoT

Few-Shot + CoT 結合:給帶有推理步驟的範例。LLM 學會「格式 + 思考方式」。

範例:
問題: 這個 log 是否為攻擊?"GET /admin/../../../etc/passwd HTTP/1.1"
分析:
1. 路徑包含 ../../../ → Path Traversal 攻擊模式
2. 目標是 /etc/passwd → 嘗試讀取系統密碼檔
3. 結合以上 → 確定是 Path Traversal 攻擊
判斷: 攻擊

請分析:
"POST /api/login HTTP/1.1" Body: {"user": "admin' OR '1'='1", "pass": "x"}

Tree of Thoughts(思維樹)

面對複雜問題,讓 LLM 同時探索多個方向,比較後選最佳方案:

步驟 1: 請提出三個不同的解法方向
  ┌── 方案 A: ...
  ├── 方案 B: ...
  └── 方案 C: ...

步驟 2: 針對每個方案深入分析
  ┌── 方案 A: 優點... / 缺點... / 可行性...
  ├── 方案 B: 優點... / 缺點... / 可行性...
  └── 方案 C: 優點... / 缺點... / 可行性...

步驟 3: 綜合分析,提出最終建議
  → 最佳方案: B
  → 原因: ...

適合商業決策、系統架構設計、應急事件處理等需要多角度思考的場景。

第二部分:RAG(Retrieval-Augmented Generation)

LLM 的知識局限

LLM 的知識有截止日,也不知道你公司的私有資料。這產生四種情境:

                    │ LLM 有內建知識  │ LLM 沒有內建知識
 ───────────────────┼────────────────┼────────────────
  有外部知識可查     │   RAG          │  傳統知識查詢
                    │   (最佳方案)    │  (關鍵字搜尋)
 ───────────────────┼────────────────┼────────────────
  沒有外部知識可查   │   Fine-Tune    │  幻覺
                    │   (成本高)      │  (瞎掰)

RAG:讓模型看大抄考試

不用 RAG 用 RAG
LLM 回答依據 訓練時學到的知識 你提供的最新資料
資料更新 要重新訓練模型 更新知識庫就好
準確度 可能過期或瞎掰 有參考資料佐證
成本 低(推論費) 中(推論 + 檢索)

RAG vs Fine-Tune 比較:

RAG Fine-Tune
知識來源 外部知識庫,即時檢索 訓練進模型權重
更新成本 低:更新資料庫 高:重新訓練模型
適合 常變動的資料(產品文件、法規) 不常變的專業語言(醫療、法律術語)
幻覺風險 低:有來源可查 中:仍可能混淆
部署複雜度 中:需要向量資料庫 低:用訓練好的模型

RAG 完整流程

第一步:建立知識庫(離線處理,只做一次)

  公司文件 / 產品手冊 / 內部 Wiki
           ↓
  ┌────────────────┐
  │  文件切塊        │  把文件拆成 200-500 字的段落 (Chunks)
  │  (Chunking)     │
  └────────┬───────┘
           ↓
  ┌────────────────┐
  │  向量化          │  用 Embedding Model 把文字轉成數字向量
  │  (Embedding)    │  語意相近的文字 → 向量距離相近
  └────────┬───────┘
           ↓
  ┌────────────────┐
  │  向量資料庫      │  儲存所有向量
  │  (Vector DB)    │  例如 Pinecone, Weaviate, Chroma
  └────────────────┘
第二步:查詢回答(每次使用者提問時即時執行)

  使用者問題: 「我們的退貨政策是什麼?」
           ↓
  ┌────────────────┐
  │  問題向量化      │  把問題也轉成向量
  └────────┬───────┘
           ↓
  ┌────────────────┐
  │  相似度搜尋      │  在向量資料庫中找出最相關的 3-5 筆 chunks
  │  (Similarity)   │  語意相近 = 向量距離小
  └────────┬───────┘
           ↓
  ┌────────────────┐
  │  組合 Prompt     │  「根據以下資料回答使用者問題:
  │                  │   [chunk 1] [chunk 2] [chunk 3]
  │                  │   問題:我們的退貨政策是什麼?」
  └────────┬───────┘
           ↓
  ┌────────────────┐
  │  LLM 回答       │  根據檢索到的資料生成回答
  │                  │  不是瞎掰,有參考來源
  └────────────────┘

Embedding 的直覺理解

Embedding 把文字轉成數字向量:

「資安漏洞」   → [0.82, 0.15, 0.93, ...]
「安全弱點」   → [0.80, 0.17, 0.91, ...]   ← 語意接近,向量也接近
「今天天氣」   → [0.12, 0.88, 0.05, ...]   ← 語意不同,向量差很遠

向量的距離 ≈ 語意的距離
距離小 = 語意相關 = 這個 chunk 可能包含答案

第三部分:RPA 工作流程自動化

什麼是 RPA

RPA(Robotic Process Automation)= 用軟體自動完成重複性工作。

人工流程:
  每天手動查漏洞網站 → 讀公告 → 判斷影響 → 寫摘要 → 傳到群組
  費時: 30-60 分鐘/天
  漏看: 高風險

RPA 流程:
  RSS 自動訂閱 → Jina AI 自動讀取 → LLM 自動分析 → Bot 自動推送
  費時: 0(全自動)
  漏看: 幾乎零

API:工具之間的橋樑

API(Application Programming Interface)讓不同軟體能互相溝通。

類比:
  API = 餐廳服務生
  你 (客人) → 點菜 (Request) → 服務生 (API) → 廚房 (服務) → 上菜 (Response) → 你

技術上:
  你的程式 → HTTP Request → API Endpoint → 處理 → HTTP Response → 你的程式
API 類型 特點 範例
REST API 最常見,用 HTTP 動詞 GitHub API, Twitter API
GraphQL 精確查詢需要的資料 GitHub v4 API
WebSocket 即時雙向通訊 聊天室、即時通知
Webhook 事件觸發,主動推送 Stripe 付款通知

實戰案例:自動漏洞通知系統

以下是一個完整的自動化工作流,把 RSS、Jina AI、LLM 和 Telegram Bot 串起來。

完整架構圖:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  RSS 訂閱    │ ──→ │  Jina AI    │ ──→ │  LLM 分析    │ ──→ │ Telegram Bot│
│  漏洞情報源  │     │  讀取內容    │     │  摘要判斷    │     │  推送通知    │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
     │                    │                    │                    │
 CISA / NVD          網頁→純文字         判斷嚴重性            群組/個人
 漏洞公告             結構化內容         分析影響範圍           即時收到

步驟 1:RSS 訂閱漏洞情報

RSS(Really Simple Syndication)= 自動訂閱網站更新。不用手動刷網頁,有新內容就通知。

常見漏洞情報 RSS 來源:

來源 RSS URL 內容
CISA cisa.gov/cybersecurity-advisories 美國 CISA 資安公告
NVD nvd.nist.gov CVE 漏洞資料庫
TWCERT/CC twcert.org.tw 台灣資安通報

步驟 2:Jina AI 讀取網頁內容

Jina AI Reader 把網頁轉成 LLM 容易處理的純文字:

API 用法:
GET https://r.jina.ai/https://example.com/vulnerability-alert

回傳:
純文字版本的網頁內容,去掉 HTML、廣告、導航列
→ 乾淨的文字,直接丟給 LLM 分析

步驟 3:LLM 分析摘要

把讀取到的漏洞內容送給 LLM:

Prompt:
「你是資安分析師。根據以下漏洞公告,提供:
1. 漏洞摘要(50 字內)
2. 嚴重性(Critical/High/Medium/Low)
3. 影響的軟體和版本
4. 建議的處理優先順序
5. 緩解措施

{jina_ai_讀取的內容}」

LLM 回覆:
1. 摘要: Apache Log4j 遠端程式碼執行漏洞
2. 嚴重性: Critical (CVSS 10.0)
3. 影響: Apache Log4j 2.x < 2.17.0
4. 優先順序: 立即處理
5. 緩解: 升級到 2.17.0 以上,或設定 log4j2.formatMsgNoLookups=true

步驟 4:Telegram Bot 推送通知

建立 Telegram Bot:

1. 開 Telegram 搜尋 @BotFather
2. 輸入 /newbot
3. 取得 API Token: 123456789:ABCdefGHI...
4. 搜尋 @getmyid_bot 取得你的 Chat ID

API 推送:
POST https://api.telegram.org/bot{TOKEN}/sendMessage
{
  "chat_id": "你的 Chat ID 或群組 ID",
  "text": "🚨 Critical 漏洞通知\n\nApache Log4j RCE...",
  "parse_mode": "Markdown"
}

工作流程比較

人工處理 RPA 自動化
速度 漏洞公布後數小時才注意到 幾分鐘內收到通知
準確度 可能漏看、誤判 一致的分析品質
成本 人力時間 API 費用(低)
擴展性 一個人看不了太多來源 可同時訂閱數十個來源
24/7 人需要休息 全自動不間斷

作業

作業 1:寫一個 CRISPE Prompt

選一個你工作中常遇到的任務,用 CRISPE 框架寫一個 Prompt:

  1. 先寫一個「沒有結構」的普通 Prompt
  2. 改寫成 CRISPE 格式(標明 C、R、I、P、E 各部分)
  3. 兩個 Prompt 分別丟給 ChatGPT 或 Claude,截圖比較回答品質

作業 2:Meta-Prompting 實作

把課堂中的 Meta-Prompt(用 LLM 幫你寫 Prompt)貼到 ChatGPT 或 Claude,實際跑一輪:

  1. 輸入一個你真正想問的問題
  2. 跟著 AI 的引導走 3 輪以上(選建議、補充資訊)
  3. 比較最初的 Prompt 和最終的 Prompt,記錄差異

作業 3:建一個簡單的 RPA 流程

用 n8n(免費)或 Make(有免費額度)建一個自動化流程:

  1. 訂閱一個 RSS 來源(可以用 CISA 或任何新聞網站)
  2. 有新內容時觸發 LLM 摘要
  3. 把摘要推送到 Telegram 或 Slack

不需要寫程式,這些平台都是拖拉介面。

知識檢測

1 題 / 共 8

CRISPE Prompt 框架中的 E(Experiment)是什麼意思?