iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
生成式 AI

AI Agent 開發養成記:做出屬於自己的Agent P系列 第 6

[Day 6] Agent 的挑戰與 Prompt 簡單技巧

  • 分享至 

  • xImage
  •  

前言

經過前天的實作,應該會發現 AI Agent 並非萬能,有時候會出現錯誤或額外風險。今天我們來聊聊常見的幾個挑戰吧 o( ̄▽ ̄)ブ


幻覺問題 (Hallucination)

什麼是幻覺?
AI 模型有時會生成 聽起來合理但實際上不正確的內容,這種現象稱為「幻覺」。它並不是模型「說謊」,而是因為 模型是依賴語言機率生成,而非基於事實驗證

常見類型:

  1. 事實性幻覺 (Factual Hallucination)
    生成的內容與真實世界事實不符。
  2. 忠誠性幻覺 (Faithfulness Hallucination)
    回答與使用者輸入的需求或上下文不一致。
分類 子類型 問題核心 舉例說明
事實性幻覺 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%" 
# 這可能是模型臆造的數字!

幻覺的危險性

  • 提供錯誤的事實資訊
  • 編造不存在的 API 端點
  • 虛構歷史事件或人物
  • 給出錯誤的醫療或法律建議(高風險!)

成本控制問題

常見成本失控原因

  • 過長的 system prompt:提示詞塞太多內容。
  • 無限制的對話歷史:每次都傳過去,token 不斷累積。
  • 重複 API 呼叫:Agent 沒有限制地循環嘗試。
  • 不必要的複雜推理:模型過度「想太多」。

解法通常包括:對話裁剪、prompt 壓縮、合理設計工具調用邏輯


安全性問題

潛在風險

  • Prompt Injection 攻擊:惡意輸入誘導模型洩露敏感資料。
  • 敏感資訊洩露:例如將內部 API Key 回覆給使用者。
  • 不當內容生成:暴力、歧視或違法資訊。
  • 系統權限濫用:Agent 調用外部工具做出危險行為。

搭配 安全過濾器 (Safety Filter)、存取控制 (Access Control) 來降低風險。


Prompt Engineering 核心技巧

技巧 1:結構化指令設計

不佳 Prompt

system_prompt = "你是一個助理,幫助用戶解答問題。"

改良版 Prompt

AGENT_DESCRIPTION = """
[代理功能概述]:簡要說明此代理的主要用途和能力
[處理範圍]:列出此代理能處理的請求類型
[在系統中的角色]:說明與其他代理的關係
"""

AGENT_INSTRUCTION = """
## 角色定義
你是 [代理角色描述]

## 核心職責
1. [主要職責1]
2. [主要職責2]
3. [主要職責3]

## 行為準則
- [規範1]
- [規範2]

## 回應格式
[定義結構與風格]

## 工具使用條件
- 當 [條件1] → 使用 [工具名稱]
- 當 [條件2] → 移交給 [子代理]

## 限制條件
- [限制1]
- [限制2]

## 範例互動
用戶輸入:[範例輸入]
期望回應:[範例回應]
"""

技巧 2:防幻覺策略

## 知識邊界聲明
我的知識更新至 2024 年 1 月,對於以下情況:

- **確定知道**:直接回答  
- **不確定**:明確說「我不確定」並解釋原因  
- **需要即時資料**:建議查官方來源  
- **超出知識範圍**:誠實承認並推薦可靠資源  

## 回覆模板
根據我的知識(截至 2024 年 1 月):  
[已知資訊]

但請注意:
- 資訊可能已過時  
- 建議查證官方來源:[來源連結]  
- 若需最新資料,請參考:[官方網站/API]

## 禁止行為
- 編造數字、日期、人名
- 虛構 API 文件或技術規格
- 對不確定的事情裝作確定

技巧 3:行為控制與格式規範

## 輸入分類

### 技術諮詢(正常處理)
- 程式設計問題
- 系統架構建議
- 工具使用指導

### 閒聊(友善但簡潔)
- 限制回覆 ≤ 100 字
- 引導回技術主題

### 不當請求(拒絕)
- 違法行為
- 有害內容
- 個資洩露

輸出格式標準

## 問題分析
[簡短分析]

## 解決方案
[具體步驟]

## 程式範例
# 可執行的範例程式

額外技巧

拒絕回覆範例

抱歉,我無法協助此請求,因為:
[原因]

我可以改為幫你:
[替代方案]

結尾廢話

今天看完就知道其實agent很好用,但真的不是萬能、完美的,也能知道自己的prompt 要如何撰寫~
那我們下一篇見(o゚v゚)ノ
reference link


上一篇
[Day 5] 第一個 Python Agent
下一篇
[Day 7] AI Agent 為甚麼需要 工具使用
系列文
AI Agent 開發養成記:做出屬於自己的Agent P8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言