經過前天的實作,應該會發現 AI Agent 並非萬能,有時候會出現錯誤或額外風險。今天我們來聊聊常見的幾個挑戰吧 o( ̄▽ ̄)ブ
什麼是幻覺?
AI 模型有時會生成 聽起來合理但實際上不正確的內容,這種現象稱為「幻覺」。它並不是模型「說謊」,而是因為 模型是依賴語言機率生成,而非基於事實驗證。
常見類型:
分類 | 子類型 | 問題核心 | 舉例說明 |
---|---|---|---|
事實性幻覺 | Factual Inconsistency | 答錯事實 | 把愛因斯坦說成電話的發明人 |
Factual Fabrication | 編造不存在的東西 | 虛構一本莎士比亞寫的「火星劇本」 | |
忠誠性幻覺 | Instruction Inconsistency | 指令誤解 | 指令是「翻譯」,結果卻直接「回答問題」 |
Context Inconsistency | 與上下文矛盾 | 上文說「他是老師」,下文卻把他當醫生 | |
Logical Inconsistency | 推理邏輯錯誤 | 「A > B > C」卻推成「C > A」 |
常見情境:
# 用戶詢問具體數據
user_input = "台灣 2024 年 GDP 成長率是多少?"
# Agent 可能的幻覺回應
hallucinated_response = "台灣 2024 年 GDP 成長率為 3.2%"
# 這可能是模型臆造的數字!
幻覺的危險性:
常見成本失控原因:
解法通常包括:對話裁剪、prompt 壓縮、合理設計工具調用邏輯。
潛在風險:
搭配 安全過濾器 (Safety Filter)、存取控制 (Access Control) 來降低風險。
不佳 Prompt:
system_prompt = "你是一個助理,幫助用戶解答問題。"
改良版 Prompt:
AGENT_DESCRIPTION = """
[代理功能概述]:簡要說明此代理的主要用途和能力
[處理範圍]:列出此代理能處理的請求類型
[在系統中的角色]:說明與其他代理的關係
"""
AGENT_INSTRUCTION = """
## 角色定義
你是 [代理角色描述]
## 核心職責
1. [主要職責1]
2. [主要職責2]
3. [主要職責3]
## 行為準則
- [規範1]
- [規範2]
## 回應格式
[定義結構與風格]
## 工具使用條件
- 當 [條件1] → 使用 [工具名稱]
- 當 [條件2] → 移交給 [子代理]
## 限制條件
- [限制1]
- [限制2]
## 範例互動
用戶輸入:[範例輸入]
期望回應:[範例回應]
"""
## 知識邊界聲明
我的知識更新至 2024 年 1 月,對於以下情況:
- **確定知道**:直接回答
- **不確定**:明確說「我不確定」並解釋原因
- **需要即時資料**:建議查官方來源
- **超出知識範圍**:誠實承認並推薦可靠資源
## 回覆模板
根據我的知識(截至 2024 年 1 月):
[已知資訊]
但請注意:
- 資訊可能已過時
- 建議查證官方來源:[來源連結]
- 若需最新資料,請參考:[官方網站/API]
## 禁止行為
- 編造數字、日期、人名
- 虛構 API 文件或技術規格
- 對不確定的事情裝作確定
## 輸入分類
### 技術諮詢(正常處理)
- 程式設計問題
- 系統架構建議
- 工具使用指導
### 閒聊(友善但簡潔)
- 限制回覆 ≤ 100 字
- 引導回技術主題
### 不當請求(拒絕)
- 違法行為
- 有害內容
- 個資洩露
輸出格式標準:
## 問題分析
[簡短分析]
## 解決方案
[具體步驟]
## 程式範例
# 可執行的範例程式
拒絕回覆範例:
抱歉,我無法協助此請求,因為:
[原因]
我可以改為幫你:
[替代方案]
今天看完就知道其實agent很好用,但真的不是萬能、完美的,也能知道自己的prompt 要如何撰寫~
那我們下一篇見(o゚v゚)ノ