---
title: AI / LLM 功能 Spec Review — 幻覺 / 評估 / 成本 / 法遵 8 個必問
description: AI 功能 spec review 完整指南。LLM 不確定性處理、評估指標、Prompt versioning、成本控制、安全護欄、法遵（EU AI Act / GDPR）、Fallback、人工 review 流程。
category: spec-review
tags: [ai, llm, spec-review, evaluation, ai-safety]
date: 2026-06-13
faq:
  - q: AI 功能 spec 跟一般 spec 最大差別？
    a: 一般 spec 寫「點 A 跳 B」、可重現可量測。AI 功能輸出**不確定**、同一個輸入可能不同輸出。Spec 要寫「品質指標」、「成功率」、「fallback 條件」、不能寫「絕對正確」。
  - q: 怎麼測「AI 是不是正確」？
    a: 三層 — (1) 自動 eval set 跑 100+ 範例算 precision/recall；(2) LLM-as-judge 用另一個 LLM 評；(3) 人工抽樣 5-10% 看品質趨勢。三層加在一起才可靠。
  - q: Prompt 改了算 breaking change 嗎？
    a: 算。Prompt 是 AI 功能的核心 logic、改 prompt 等於改 code。Spec 該寫 prompt versioning + 改 prompt 該重跑 eval。
  - q: AI 答錯出事誰負責？
    a: Spec 階段就該寫責任歸屬。EU AI Act 將高風險 AI 系統責任歸發行方、需要 audit log + 解釋性。Spec 沒寫等於 default 公司全責。
---

# AI / LLM 功能 Spec Review — 幻覺 / 評估 / 成本 / 法遵 8 個必問

「PM 寫『加 AI 助手』 — 你看完只想笑哭」。AI 功能 spec 95% 都漏掉關鍵維度。這篇給你 8 個必問問題 + 完整 review framework。

## AI 功能 spec 跟一般 spec 最大差異

```mermaid
flowchart LR
    Old[一般 spec] --> O1[輸入確定 → 輸出確定]
    Old --> O2[可重現]
    Old --> O3[二元對錯]

    AI[AI 功能 spec] --> A1[輸入確定 → 輸出機率分佈]
    AI --> A2[每次可能不同]
    AI --> A3[品質光譜]
    AI --> A4[會幻覺、會 bias]
    AI --> A5[成本隨用量]
    AI --> A6[法遵風險]

    style Old fill:#10b981,color:#fff
    style AI fill:#ef4444,color:#fff
```

**核心**：AI spec 不能寫「正確」、要寫「**成功率達到 X%、失敗時 Y**」。

## 8 個必問問題

```mermaid
mindmap
  root((AI 功能 Spec<br>8 必問))
    1 評估指標
      Precision/Recall
      eval set
      Human review
    2 失敗 fallback
      返回 null?
      人工接管?
      Retry?
    3 幻覺處理
      要不要驗證
      RAG citation
      自信度顯示
    4 Prompt 管理
      Versioning
      A/B test
      Rollback
    5 模型選擇
      哪個 model
      備用 model
      升級策略
    6 成本控制
      每次成本
      上限 rate limit
      Cache
    7 護欄 Guardrails
      禁忌話題
      Output 過濾
      Prompt injection 防禦
    8 法遵
      EU AI Act
      GDPR
      審計 log
```

## 必問 1: 評估指標

```mermaid
flowchart TD
    Eval[AI 怎麼算對?] --> E1["Eval set<br>100+ 黃金標準範例"]
    Eval --> E2["Automated metrics<br>BLEU/ROUGE/Embedding"]
    Eval --> E3["LLM-as-judge<br>用 Claude 評另一個 model"]
    Eval --> E4["Human review<br>抽 5-10% 看趨勢"]

    style E1 fill:#06b6d4,color:#fff
    style E2 fill:#10b981,color:#fff
    style E3 fill:#a855f7,color:#fff
    style E4 fill:#f59e0b,color:#fff
```

Spec 該寫：

```
Eval set 大小: 200 個範例
Pass 條件: ≥ 90% 通過 LLM-as-judge
Human review: 每月抽 50 個、QA 評分
Regression: 改 prompt 後 eval set 跑、不能降 > 2%
```

### 不能寫的爛 spec

❌ 「AI 要回答正確」
❌ 「AI 不能說錯話」

### 該寫的具體 spec

✅ 「Eval set 200 個典型 QA 對、新 prompt 通過 ≥ 90% 才能上線」
✅ 「每月人工抽 50 個、品質分 ≥ 4/5」

## 必問 2: 失敗 Fallback

```mermaid
flowchart TD
    Q[AI 回答失敗] --> F{Fallback?}
    F --> F1["1. 重試 N 次"]
    F --> F2["2. 換 model（GPT-4 → Claude）"]
    F --> F3["3. 回傳「請稍候」"]
    F --> F4["4. 人工 escalate"]
    F --> F5["5. 預設答案 / 範本回覆"]

    style F fill:#f59e0b,color:#fff
```

Spec 該寫：

```
LLM call timeout (15s): 自動 retry 1 次
全部失敗: 回「目前無法回答、請聯絡客服」+ 記 log
明確錯誤: 顯示「我不確定、建議問人類」
高風險問題（健康/法律/金融）: 直接 escalate 人工
```

## 必問 3: 幻覺處理

幻覺 = LLM 編造事實。**100% 不可能消除、只能降低 + 偵測**。

```mermaid
flowchart LR
    Out[LLM Output] --> Verify{驗證機制?}
    Verify --> V1[RAG citation 必引文]
    Verify --> V2[Tool call 確認事實]
    Verify --> V3[Output classifier]
    Verify --> V4[Confidence score 顯示]

    style Verify fill:#a855f7,color:#fff
```

Spec 該寫：

```
RAG 模式: 每個事實聲明必須 cite source、無 source 不回
Fact check: 含日期 / 數字 / 名稱的回應要對知識庫驗
UI 警告: 「AI 生成、可能有誤」一律顯示
高風險 domain: 必須 cite + 人工 review
```

## 必問 4: Prompt 管理

```mermaid
flowchart TD
    PM[Prompt Management] --> V[Versioning v1, v2, v3]
    V --> AB[A/B test]
    AB --> Eval[Eval set 跑]
    Eval --> Deploy[上線一部分流量]
    Deploy --> Monitor[監控 metric]
    Monitor --> Rollback{有問題?}
    Rollback -->|是| V
    Rollback -->|否| Full[全量上線]

    style V fill:#06b6d4,color:#fff
    style Full fill:#10b981,color:#fff
```

Spec 該寫：

```
Prompt 存 Git: 每次改有 commit + reviewer
Prompt version: 帶在每次 LLM call、log 記版本
A/B test: 新 prompt 先 5% 流量、看 7 天 metric
Rollback: 一鍵切舊 prompt、< 30 秒
```

## 必問 5: 模型選擇

| 維度 | 該問 |
|------|------|
| Primary | 哪個 model（GPT-4 / Claude Sonnet / Gemini 2）？ |
| Backup | Primary 掛了用哪個？ |
| Cost limit | 每次 call 預算上限 |
| Latency | p95 要求? |
| 升級策略 | 新版 model 出來、A/B test 流程 |

## 必問 6: 成本控制

```mermaid
flowchart LR
    User[User request] --> Limit{Rate limit?}
    Limit -->|超| Reject[429 + Retry-After]
    Limit -->|OK| Cache{快取?}
    Cache -->|hit| Return[直接回]
    Cache -->|miss| LLM[呼叫 LLM]
    LLM --> Bill[計費]
    Bill --> Cache

    style Cache fill:#10b981,color:#fff
    style Bill fill:#a855f7,color:#fff
```

Spec 該寫：

```
Per-user rate limit: 100 calls/day（free） / 1000 calls/day（paid）
Cache: 完全相同問題 24h 內回 cache
Cost alert: 整體每日支出 > $X 自動 throttle
Prompt 大小: 上限 4K token、超過砍掉 history
```

## 必問 7: 護欄 Guardrails

```mermaid
mindmap
  root((Guardrails))
    輸入端
      Prompt injection 偵測
      禁忌字過濾
      個資偵測
      地區/法律限制
    輸出端
      Bias 過濾
      暴力 / 性 / 仇恨檢查
      Toxic 分類器
      Refusal 必要時
    後處理
      Citation 強制
      Disclaimer 加註
      Audit log
```

Spec 該寫：

```
禁忌主題: 醫療診斷 / 法律建議 / 投資建議 → 拒絕並建議找專業人
Prompt injection: 偵測 "ignore previous instructions" 模式、拒絕
個資輸出: 偵測 email / 電話 / 信用卡、mask 後回
冒充: 不能聲稱自己是「真人」、必須說 AI
```

## 必問 8: 法遵

```mermaid
flowchart TD
    Law[法遵框架] --> EU[EU AI Act 2024]
    Law --> GDPR[GDPR]
    Law --> Local[地區法規]

    EU --> EU1[高風險分類]
    EU --> EU2[Audit log 必備]
    EU --> EU3[解釋性 right to explanation]

    GDPR --> G1[資料最小化]
    GDPR --> G2[Right to be forgotten]
    GDPR --> G3[Data processing record]

    Local --> L1[台灣個資法]
    Local --> L2[健保 / 金管會]

    style EU fill:#ef4444,color:#fff
    style GDPR fill:#a855f7,color:#fff
```

Spec 該寫：

```
AI 用途分類: 是否屬 EU AI Act「高風險」?
Audit log: 保留 user / prompt / response / decision、3 年
Right to explain: 使用者可問「為什麼這結果」
資料保留: LLM provider 是否會 train 我們資料？合約有規範嗎?
被遺忘權: 使用者刪帳號、AI 訓練資料怎處理?
```

## 完整 review 範例

### Spec 原文（典型 PM 寫法）

```
新增 AI 客服助手
- 使用者問問題、AI 回答
- 整合 OpenAI GPT-4
- 期望 80% 問題自動回答
```

### Review 提的 24 個問題

光是 8 必問 × 3 個延伸 = 24 個。例如：

```
1. 評估: 80% 怎麼量？哪 200 個 eval question?
2. Fallback: 答不出來怎處理?
3. 幻覺: 客戶問退款政策、AI 編造怎辦?
4. Prompt: 改一次 prompt 怎麼測影響?
5. 模型: GPT-4 掛了用什麼?
6. 成本: 每個使用者一個月平均花多少?
7. 護欄: 使用者罵髒話 / 問醫療問題怎處理?
8. 法遵: 對話 log 存多久? 客戶可以要求刪除嗎?
```

PM 多半答不出來 → spec 退回。

## QA 該堅持的 DoR

```mermaid
flowchart LR
    DoR[AI 功能 DoR] --> R1[Eval set 已建（≥ 100 範例）]
    DoR --> R2[Fallback 流程定義]
    DoR --> R3[Prompt versioning 機制]
    DoR --> R4[Cost cap 明確]
    DoR --> R5[Guardrails 列表]
    DoR --> R6[法遵 review 過]

    style DoR fill:#06b6d4,color:#fff
```

**6 項全達標才能進 sprint**。

## 反模式

```mermaid
flowchart TD
    Anti[AI Spec 反模式] --> A1["AI 一定要 100% 正確"]
    Anti --> A2["沒 eval set、靠直覺改"]
    Anti --> A3["Prompt 寫在 code、沒 versioning"]
    Anti --> A4["沒 fallback、AI 掛系統就掛"]
    Anti --> A5["沒成本 cap、燒爆"]
    Anti --> A6["不做 guardrail、被 prompt injection"]
    Anti --> A7["不寫法遵、被罰"]

    style A1 fill:#ef4444,color:#fff
    style A2 fill:#ef4444,color:#fff
    style A3 fill:#ef4444,color:#fff
    style A4 fill:#ef4444,color:#fff
    style A5 fill:#ef4444,color:#fff
    style A6 fill:#ef4444,color:#fff
    style A7 fill:#ef4444,color:#fff
```

## 給 QA 的 5 句

1. **AI 功能 spec 不能寫「正確」、要寫成功率**
2. **沒 eval set 等於沒 spec**
3. **Prompt 改動 = code 改動、要走 review**
4. **Fallback 比 happy path 重要 10 倍**
5. **法遵問題 spec 沒寫 = 公司賠錢**

## 最後

AI 功能 spec review 是 2026 後 QA 最稀缺的技能。一般 spec checklist 救不了你 — 必須有 AI 專用 framework。**從這 8 必問開始、每個 AI 功能 spec 至少問 3 倍的問題**、上線後 incident 砍 70%。

延伸：
- [用 LLM 跑 Spec Review](/ai-qa/llm-spec-review.html)
- [AI 共存的 QA 工具箱](/ai-qa/ai-toolkit-for-qa.html)
- [Spec Review Checklist](/spec-review/spec-review-checklist.html)
