iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
生成式 AI

可愛又迷人的提示詞工程 Prompt Engineering系列 第 18

Day18. 如何設計上下文的三個角色

  • 分享至 

  • xImage
  •  

我們在設計對話 AI 或 Agent 框架時,這三個角色:System、User、Assistant,是決定模型行為一致性與可控性的重要核心,我們的角色設計愈細緻,就能讓模型的輸出愈符合預期、也愈有深度。

系統提示詞

系統提示詞 (System Prompt) 是在系統層級或對話開始時就被注入,它的作用是定義模型的整體行為、風格、邊界與規格,可以把它想成是 AI 的最高指導原則或 SOP,他為 AI 後續所有的互動定了一個基礎的,也是最重要的規範。

深入了解系統提示詞

系統提示詞包括但不限以下幾個特性,我們需要了解這些特性,避免後續設計上下文時產生衝突:

  • 權重與覆寫的難易度
    • 系統提示詞中的指令權重通常高於使用者提示。當兩者發生衝突時,模型會優先遵守系統層級的設定,因此,建議大家將全域的約束,例如品牌語氣、安全邊界、角色人設等,明確寫入 System Prompt,確保模型行為不會輕易動搖。
  • 安全性與健壯性
    • 系統提示詞有著可能面臨的風險,其中一種是提示詞污染,也就是說,攻擊者可透過特定的使用者輸入,巧妙地操縱或感染系統提示詞,導致後續所有回應偏離正常軌道,就像是 AI 的 SOP 被偷偷竄改了
    • 此外,在面對冗長對話或衝突指令時,模型有時會遺忘或忽略部分的系統提示。如何強化系統提示的穩健性,使其在複雜互動中依然穩定,是提示詞工程與上下文工程都要繼續研究與微調的方向
  • 角色的效益爭議
    • 以往我們都這是這麼說,為模型設定一個專家角色 (例如你是一位資深科學家) 似乎能提升專業度。然而,這種人格設定可能對於提升模型在客觀任務上的表現幫助有限,而且過於花俏的角色描述,有時反而會干擾模型對核心任務的理解

設計系統提示詞的小技巧

首先就是前面說的,我們要將不會輕易變動的規則放在系統提示詞中,這些規則包含但不限:

  • 模型的風格
  • 模型的行為邊界
  • 核心角色定位

此外,過於冗長的系統指令,反而容易被模型忽略或截斷,我們應該將最核心的指令放在最前面。還要避免讓使用者可以將變數直接寫入系統指令中,以防止外部輸入惡意攻擊或誤導系統的核心設定

如果有需要,也可以使用 Meta-prompt 協助優化提示詞,讓 AI 生成更具泛用性與適應性的系統提示詞,我在之前的章節有介紹過 Meta-prompt,有興趣的朋友可以點擊閱讀:使用 Meta-prompt 優化提示詞

使用者提示詞與背景設定

一般的對話流程中,使用者提示詞用來告訴模型這次要做什麼,而背景設定 (Context) 則告訴模型執行任務前需要知道什麼,兩者的分工越清晰,系統的穩定性與可維護性就越高。

在設計時可以注意以下三點基本原則:

  • 對於跨任務的共通規範,應放在 System Prompt,不要每次在 User Prompt 中重複提及
  • User Prompt 應聚焦於任務本身,避免夾帶過多冗長的背景描述,以免模型混淆任務與資訊
  • 當背景資訊與使用者指令衝突時,系統應具備判斷的優先順序。通常的設計是:System > User > Context

多層的角色上下文

現在的 AI Agent 或多模態應用,都漸漸走向複合式的工作流程,這表示我們需要引入更多元的角色進行團隊合作

除了上述介紹的三個基礎角色外,系統還可以加入:

  • 工具角色 (Tool / Function Role):在 Agent 架構中,由系統呼叫外部工具 (如資料庫查詢、API 調用) 後返回的結果,本身就是一種獨立的角色上下文。
  • 思考角色 (Scratchpad / Thought):讓模型先以內部思考者的角色,生成分析問題的中間步驟或思路,再由最終回覆者的角色整理成精簡的回應。
  • 評估角色 (Evaluator Role):由另一個模型或外部模組扮演品管員,對主要的輸出結果進行事實查核、風格檢查或安全性驗證。

要讓這麼多的角色相互合作且不產生衝突,我們就需要清楚的邊界感與分層設計:

  • 角色的邊界定義:明確定義每個角色的責任範圍,例如它該做什麼、不該做什麼、能看到哪些資訊... 等等
  • 訊息流的設計:規劃不同角色間交換資訊的路徑,例如,工具的輸出是否需要經過思考角色的濃縮後,再交給回覆者?
  • 權重與優先順序:我們可以設計一套衝突的解決規則。例如,System 的指令優先級最高,工具的輸出結果僅作為參考,而 User 的最新指令可以覆蓋部分歷史背景。

多角色上下文的提示詞範例

以下是一個在商業分析的代理中,結合多個角色上下文來完成任務的提示詞範例

[System 系統層]
你是一個頂尖的商業策略助理。你的所有回覆都必須保持專業、客觀,並在引用外部資料時清楚標註來源。禁止提供任何個人投資建議。

[Context 工具層 / 來自知識庫的訊息]
Data Source: SEA Market Report Q3 2025
Content: 東南亞電商市場年增長率為 18%,消費者對數位支付接受度高,但物流基礎設施仍是挑戰...

Data Source: Internal Consumer Data
Content: 本公司產品在 25-35 歲年輕客群中滿意度高達 92%...

[User 使用者層]
我正在考慮是否要在東南亞市場推出我們的新產品(智慧手錶),請幫我分析其潛在機會與風險。

[Assistant 思考層 / 內部Scratchpad]
Thought:
1. 根據系統指令,我需要保持客觀並引用來源。
2. 結合市場報告與內部數據,機會點在於高市場增長率與我們產品在年輕客群的優勢。
3. 風險點則是報告中提到的物流挑戰。
4. 接下來,我將依此結構,草擬一份包含機會、風險與建議的回應。

[Assistant 回覆層 / 最終輸出]
根據您的需求,茲分析新產品進入東南亞市場的機會與風險如下:

市場機會:
根據《SEA Market Report Q3 2025》,東南亞電商市場正以 18% 的年增長率高速發展... 結合我們的內部數據,產品在年輕客群中的高滿意度,能有效切入此市場...

潛在風險:
...

在這個流程中,我們透過多個角色的分工,讓 AI 的分析過程更有條理、更可靠,最終產出的品質也遠高於單一的問答

小結

System、User、Assistant 這三個角色並非一成不變的規則,而是可以根據需求動態組合與拓展的強大工具。

隨著 AI Agent 與多模態應用的發展,我相信理解如何設計這些角色之間的邊界、互動與權重將會變得更加重要,他不再只是單純的提示詞技巧,而是核心的 AI 工程之一


上一篇
Day17. 上下文的容量限制與策略設計
下一篇
Day19. 持久化與遺忘機制
系列文
可愛又迷人的提示詞工程 Prompt Engineering19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言