iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0

讓模組抽象化,AI 可以換 prompt 也能換模型,加上安全性的防護。

今日主題:

抽象就是不要把細節全部綁死,給未來更多自由。但做這些的時候,也要注意安全,像是資料不能亂用、權限要分清楚。

範例故事:

我有一個能換拼圖的盒子(抽象的框),可以放恐龍或太空拼圖。
我也允許我的朋友也來換拼圖放進去。
但為了安全,我規定朋友們只能在「放拼圖」的格子裡擺,不能拆開盒子後面機關或打開鎖。
這樣一來,既保留彈性,也保護了盒子不被破壞。

在程式中的應用是什麼?

寫程式時,不只要做抽象,還要設計安全規則。
比如在 AI 應用中,可能有以下安全考量:

  • 權限驗證:誰可以呼叫 AI?誰不能?
  • 資料隔離:輸入 prompt 的內容不能讓使用者看見其他人的秘密資料。
  • 範圍限制:prompt 或模型不可做違法或危險行為。
  • 錯誤防護:模型回傳異常、崩潰時要安全處理,不要洩漏內部細節。

範例程式(JavaScript 加安全檢查):

// 抽象 AI 插座,加上一層安全檢查
function askAI(model, prompt, userRole) {
  // 安全檢查:只有某些角色可以使用這功能
  if (userRole !== "admin" && userRole !== "user") {
    throw new Error("你沒有使用 AI 的權限");
  }
  
  // 安全檢查:prompt 不能包含禁止字串(比如「刪除資料」等危險操作)
  const forbidden = ["刪除資料", "偷資料", "破解系統"];
  for (let bad of forbidden) {
    if (prompt.includes(bad)) {
      throw new Error("你的提示含有不安全文字");
    }
  }

  // 最後才呼叫模型
  return model.reply(prompt);
}

// 模型 A 與 模型 B
const modelA = {
  reply: (q) => "模型A 回答:" + q
};
const modelB = {
  reply: (q) => "模型B 回答:" + q
};

// 範例使用
console.log( askAI(modelA, "你好嗎?", "user") ); 
// 模型A 回答:你好嗎?

console.log( askAI(modelB, "我要刪除資料", "user") ); 
// → 錯誤:提示有不安全文字

這樣做的好處是:

模型可以自由替換(抽象性)

又加了一層安全檢查,避免錯誤或惡意操作

小結與一個思考問題:

抽象性讓系統彈性強,可以換模型、換 prompt;
但安全性就像加鎖和門禁,確保不被亂用、不洩密、不出錯。

思考問題:

如果我設計一個能換角色的遊戲,要怎麼在讓玩家自由換角色的同時,防止有人作弊或用外掛?
我要加什麼安全機制?


上一篇
Day 17:SDP 穩定性:基礎模組要穩(安全延伸版)
系列文
Clean Architecture 無瑕的程式碼:國中生阿吉的暑期閱讀筆記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言