回到頂部

📏 LLM 輸出評估指南

怎麼衡量 AI 回答的品質——Benchmark、LLM-as-Judge、自動化評估。

📏 為什麼需要評估 LLM?

💡 一句話理解 你不會不跑測試就把程式碼部署上線。AI 也一樣——不評估品質就不該上線。

工程師常見的困境

老闆:「AI 客服的回答好嗎?」
工程師:「呃⋯⋯感覺還行?」  ← 這不是工程語言

正確回答:
「Faithfulness 97.2%, Relevancy 89.5%,
 比上個月提升了 3.1 個百分點。」  ← 這才是工程語言

🏆 公開 Benchmark 速查

當你在選模型或向老闆報告時,這些 Benchmark 是通用語言:

Benchmark衡量什麼如何理解分數
MMLU世界知識(57 學科)90+ = 頂級,70+ = 堪用
HumanEvalPython 程式碼能力90+ = 頂級
MT-Bench多輪對話品質9.0+ = 頂級(滿分 10)
GPQA博士級科學推理60+ = 頂級(很難的題目)
MATH數學推理80+ = 頂級
Chatbot Arena人類盲測投票排名ELO 分數,越高越好

2026 主流模型分數參考

模型MMLUHumanEvalMT-Bench
GPT-5.492.196.39.5
Claude Sonnet 4.691.895.89.4
Gemini 2.5 Pro91.594.29.3
DeepSeek V490.393.79.2
Llama 3.1 405B88.689.58.9

⚠️ Benchmark 分數不代表你的場景。MMLU 考的是通用知識,你的客服機器人需要的是「能根據知識庫準確回答」——這要用你自己的評估方式。更多模型比較請參考模型比較指南


🔧 自建評估系統

評估的四大維度

維度問的是什麼分數解讀
Faithfulness(忠實度)AI 有沒有亂掰?回答有根據嗎?(參考 AI 幻覺> 95% 才能上線
Relevancy(相關性)AI 有回答到問題嗎?> 85% 很不錯
Completeness(完整性)回答夠完整嗎?有沒有漏掉重要資訊?> 80% 可接受
Harmlessness(無害性)回答有沒有不當內容?必須 100%

LLM-as-Judge(用 AI 評估 AI)

最高效的方式——用一個強大的 LLM 當「考官」,評估另一個 LLM 的回答。

def llm_judge(question, ai_answer, reference=None, model="gpt-4o"):
    """用 GPT-4o 當考官評估 AI 回答"""

    judge_prompt = f"""你是一個嚴格的 AI 回答品質評審。
請評估以下 AI 回答的品質。

## 問題
{question}

## AI 的回答
{ai_answer}

{"## 參考答案" + chr(10) + reference if reference else ""}

## 評分標準(每項 1-5 分)
1. **準確性**:回答是否正確、有根據?
2. **相關性**:是否正確回答了問題?
3. **完整性**:是否涵蓋了關鍵資訊?
4. **簡潔性**:是否避免了冗餘和廢話?

請用 JSON 格式回答:
{{"accuracy": 1-5, "relevancy": 1-5, "completeness": 1-5,
  "conciseness": 1-5, "overall": 1-5, "reason": "簡短說明"}}"""

    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": judge_prompt}],
        response_format={"type": "json_object"}
    )

    return json.loads(response.choices[0].message.content)

# 使用範例
result = llm_judge(
    question="台灣的首都在哪裡?",
    ai_answer="台灣的首都是台北,位於台灣北部。",
    reference="台北市是中華民國的首都。"
)
print(result)
# {"accuracy": 5, "relevancy": 5, "completeness": 4,
#  "conciseness": 5, "overall": 5, "reason": "回答準確完整"}

批次評估框架

import pandas as pd

def evaluate_batch(test_cases, ai_function):
    """批次評估一組測試案例"""
    results = []

    for case in test_cases:
        # 取得 AI 回答
        ai_answer = ai_function(case["question"])

        # 用 Judge 評估
        scores = llm_judge(
            question=case["question"],
            ai_answer=ai_answer,
            reference=case.get("expected_answer")
        )

        results.append({
            "question": case["question"],
            "ai_answer": ai_answer,
            **scores
        })

    df = pd.DataFrame(results)

    # 印出統計
    print("=== 評估結果 ===")
    for col in ["accuracy", "relevancy", "completeness", "overall"]:
        print(f"{col}: {df[col].mean():.2f} / 5.00")

    return df

# 測試案例
test_cases = [
    {"question": "怎麼退貨?", "expected_answer": "7 天內無條件退貨..."},
    {"question": "運費多少?", "expected_answer": "滿 500 免運..."},
    {"question": "營業時間?", "expected_answer": "週一到週五 9-18..."},
]

results = evaluate_batch(test_cases, your_ai_chatbot)

📊 RAG 專用評估

如果你的 AI 系統使用 RAG,需要額外評估檢索品質。

用 Ragas 框架

from ragas import evaluate
from ragas.metrics import (
    faithfulness,
    answer_relevancy,
    context_precision,
    context_recall,
)

# 準備評估資料
eval_data = {
    "question": ["怎麼退貨?", "運費多少?"],
    "answer": ["7 天內可退貨...", "滿 500 免運..."],
    "contexts": [
        ["退貨政策:7 天內無條件退貨..."],
        ["運費規定:滿 500 元免運費..."],
    ],
    "ground_truth": ["7 天內無條件退貨", "滿 500 元免運"]
}

result = evaluate(
    eval_data,
    metrics=[faithfulness, answer_relevancy,
             context_precision, context_recall]
)

print(result)
# faithfulness: 0.97
# answer_relevancy: 0.89
# context_precision: 0.92
# context_recall: 0.85

RAG 評估指標說明

指標衡量什麼目標
Context Precision檢索到的段落有多少是真正相關的> 80%
Context Recall所有相關段落中,有多少被檢索到> 85%
FaithfulnessAI 回答是否忠實於檢索到的內容> 95%
Answer Relevancy最終回答和問題的相關程度> 85%

🔄 持續監控

模型上線後不是結束——品質可能隨時間退化。

建立監控流程

import logging

logger = logging.getLogger("ai_monitor")

class AIMonitor:
    """AI 回答品質持續監控"""

    def __init__(self, sample_rate=0.1):
        self.sample_rate = sample_rate  # 抽樣率 10%

    def log_interaction(self, question, answer, metadata=None):
        """記錄每次 AI 互動"""
        import random
        # 隨機抽樣評估(不是每次都評,太貴)
        if random.random() < self.sample_rate:
            scores = llm_judge(question, answer)
            logger.info(f"AI 品質抽檢: overall={scores['overall']}/5")

            # 低品質警報
            if scores["overall"] <= 2:
                logger.warning(
                    f"⚠️ 低品質回答偵測!\n"
                    f"問題: {question}\n"
                    f"回答: {answer[:100]}...\n"
                    f"分數: {scores}"
                )

監控儀表板指標

指標監控目的警報閾值
平均品質分數AI 整體表現< 3.5/5
Faithfulness有沒有更多幻覺< 90%
拒答率AI 回答「我不知道」的比例> 30%
延遲 P95回應速度> 5 秒
Token 成本成本趨勢日均超過預算 120%

❓ FAQ

用 AI 評估 AI 靠譜嗎?

研究顯示,GPT-4 級別的 LLM-as-Judge 和人類評審的一致性超過 80%,在大量評估場景中性價比最好。建議:重要決策仍做人工抽查,日常監控用 LLM Judge 自動化。

需要多大的測試集?

至少 50-100 個測試案例才能得到統計意義上有意義的結果。涵蓋常見問題、邊界案例和對抗性問題。建議持續累積,上線後每月加入真實用戶的問題。

多久評估一次?

上線前做完整評估。上線後持續抽樣(10%)。每次改 Prompt 或換模型前做完整評估。每月做一次和基線的比較。

📚 延伸閱讀