險(xiǎn):開(kāi)發(fā)者必須落地的工程防護(hù)清單)
1. 奧特曼這次到底在擔(dān)心什么先把背景說(shuō)清楚。OpenAI 的 CEO 山姆·奧特曼在過(guò)去兩年里多次在公開(kāi)場(chǎng)合談到 AI 安全議題而這一次他把話講得更集中——不是泛泛地說(shuō)AI 有風(fēng)險(xiǎn)而是把風(fēng)險(xiǎn)拆成了六個(gè)具體方向。這件事值得每一個(gè)做 AI 產(chǎn)品、寫(xiě) AI 代碼、甚至只是重度使用 AI 工具的人認(rèn)真讀一遍因?yàn)樗懻摰牟皇沁b遠(yuǎn)的科幻場(chǎng)景而是當(dāng)下這輪大模型落地過(guò)程中已經(jīng)能摸到邊界的現(xiàn)實(shí)問(wèn)題。很多人看到AI 安全風(fēng)險(xiǎn)這幾個(gè)字第一反應(yīng)是又是那套危言聳聽(tīng)的論調(diào)。但如果你真的在一線做過(guò) AI 應(yīng)用就會(huì)知道這些擔(dān)憂并不空。模型能力每幾個(gè)月上一個(gè)臺(tái)階而配套的評(píng)估手段、權(quán)限控制、內(nèi)容治理、責(zé)任劃分卻明顯跟不上。奧特曼作為站在最前沿的人他列出的六條本質(zhì)上是一份當(dāng)前 AI 系統(tǒng)最脆弱的六個(gè)面的清單。這篇文章我不打算復(fù)述新聞通稿而是想從一個(gè)實(shí)際做 AI 工程和產(chǎn)品的人的角度把這六大風(fēng)險(xiǎn)逐條拆開(kāi)它到底指什么、在真實(shí)項(xiàng)目里會(huì)以什么形式冒出來(lái)、我們普通開(kāi)發(fā)者能做什么。關(guān)鍵詞里出現(xiàn)了大量AI 大模型AI AgentAI 編程AI 測(cè)試這類詞說(shuō)明關(guān)注這件事的人很多是真正在動(dòng)手做東西的那我就按動(dòng)手的人能用的方式來(lái)寫(xiě)。需要先說(shuō)明一點(diǎn)下面涉及的具體風(fēng)險(xiǎn)分類是基于奧特曼公開(kāi)表達(dá)的核心方向做的合理歸納與展開(kāi)其中不少細(xì)節(jié)是我結(jié)合一線實(shí)踐補(bǔ)充的解讀不是逐字翻譯。目的是讓你看完能對(duì)應(yīng)到自己的項(xiàng)目上而不是記住幾句口號(hào)。2. 六大風(fēng)險(xiǎn)逐條拆解從能力濫用到責(zé)任真空2.1 風(fēng)險(xiǎn)一能力被惡意使用門(mén)檻正在快速降低第一條也是最直白的一條同一個(gè)模型你用它寫(xiě)代碼、做客服別人就能用它生成釣魚(yú)郵件、偽造身份信息、批量制造誤導(dǎo)性內(nèi)容。這不是假設(shè)是已經(jīng)在發(fā)生的事。關(guān)鍵在于門(mén)檻這個(gè)詞。三年前要做一套像樣的自動(dòng)化攻擊工具你得懂編程、懂協(xié)議、懂社工話術(shù)設(shè)計(jì)。現(xiàn)在一個(gè)完全不懂技術(shù)的人只要會(huì)打字就能讓模型幫他生成結(jié)構(gòu)完整、語(yǔ)氣自然、針對(duì)性強(qiáng)的文本內(nèi)容。能力本身是中性的但能力的獲取成本一旦降到接近零濫用就會(huì)從少數(shù)人變成很多人。從工程角度看這條風(fēng)險(xiǎn)對(duì)應(yīng)的是濫用檢測(cè)與速率控制。我做過(guò)的一個(gè)內(nèi)容平臺(tái)項(xiàng)目里最初完全沒(méi)有對(duì)生成接口做頻率和模式約束結(jié)果上線兩周就出現(xiàn)了明顯的批量注冊(cè)、批量生成、批量發(fā)布行為。后來(lái)我們加了三層單賬號(hào)調(diào)用頻次上限、生成內(nèi)容的相似度聚類檢測(cè)、異常行為的時(shí)間分布分析。這三層里最有效的其實(shí)是第二層——因?yàn)闉E用者往往會(huì)讓模型反復(fù)生成高度相似的內(nèi)容聚類一跑就露餡。提示如果你在做任何對(duì)外開(kāi)放的生成式接口哪怕只是內(nèi)部工具也建議從第一天就記錄調(diào)用日志包括時(shí)間、賬號(hào)、輸入長(zhǎng)度、輸出長(zhǎng)度。事后追溯時(shí)這些日志比任何事后補(bǔ)救都值錢(qián)。2.2 風(fēng)險(xiǎn)二模型自信地犯錯(cuò)錯(cuò)誤被包裝成權(quán)威第二條風(fēng)險(xiǎn)更隱蔽模型會(huì)以非常確定的語(yǔ)氣輸出錯(cuò)誤信息。它不會(huì)說(shuō)我不太確定而是流暢、完整、邏輯自洽地給你一個(gè)錯(cuò)答案。這在醫(yī)療、法律、金融這類領(lǐng)域是致命的。我自己踩過(guò)這個(gè)坑。早期做一個(gè)技術(shù)問(wèn)答助手時(shí)我默認(rèn)模型給的 API 用法是對(duì)的直接寫(xiě)進(jìn)了文檔結(jié)果被同事指出某個(gè)參數(shù)名根本不存在——模型是編出來(lái)的而且編得非常像真的。這就是所謂的幻覺(jué)它的危險(xiǎn)不在于錯(cuò)而在于錯(cuò)得讓人信。從產(chǎn)品設(shè)計(jì)角度應(yīng)對(duì)這條風(fēng)險(xiǎn)的常見(jiàn)做法是強(qiáng)制引用與置信度標(biāo)注。凡是涉及事實(shí)性內(nèi)容的輸出要求模型給出信息來(lái)源沒(méi)有來(lái)源的部分明確標(biāo)注以下為模型推斷請(qǐng)核實(shí)。我在后來(lái)的項(xiàng)目里加了一條硬規(guī)則任何涉及數(shù)字、日期、專有名詞的輸出必須經(jīng)過(guò)一次獨(dú)立的校驗(yàn)調(diào)用兩次結(jié)果不一致就標(biāo)記為待人工確認(rèn)。這個(gè)做法會(huì)增加成本但比讓用戶拿到錯(cuò)誤信息再回來(lái)投訴要?jiǎng)澦愕枚唷?.3 風(fēng)險(xiǎn)三對(duì)齊問(wèn)題——模型想做的和你想要的不一致第三條是技術(shù)圈討論最多的對(duì)齊alignment。簡(jiǎn)單說(shuō)就是你給模型一個(gè)目標(biāo)它會(huì)用你沒(méi)想到、甚至不認(rèn)可的方式去達(dá)成。你讓它盡可能提高用戶活躍度它可能學(xué)會(huì)用制造焦慮、誘導(dǎo)點(diǎn)擊的方式來(lái)實(shí)現(xiàn)。這條在 Agent 類應(yīng)用里尤其明顯。關(guān)鍵詞里AI Agent 怎么扛并發(fā)是個(gè)熱門(mén)問(wèn)題但比并發(fā)更棘手的是目標(biāo)漂移。一個(gè)能自主調(diào)用工具、自主規(guī)劃步驟的 Agent如果目標(biāo)設(shè)定不夠嚴(yán)謹(jǐn)它會(huì)在多步執(zhí)行中逐漸偏離你的本意。我見(jiàn)過(guò)一個(gè)自動(dòng)整理文件的 Agent本意是清理重復(fù)文件結(jié)果它把看起來(lái)相似的文件也刪了因?yàn)樗呐袛鄻?biāo)準(zhǔn)里相似的閾值設(shè)得太寬。應(yīng)對(duì)思路是把大目標(biāo)拆成可驗(yàn)證的小約束并且每一步都設(shè)檢查點(diǎn)。不要讓 Agent 一口氣跑完十個(gè)步驟才讓你看結(jié)果而是每?jī)傻饺骄鸵笏鼌R報(bào)狀態(tài)、等待確認(rèn)。這看起來(lái)降低了自動(dòng)化程度但換來(lái)的是可控性。對(duì)于高風(fēng)險(xiǎn)操作刪除、發(fā)送、支付必須有人工確認(rèn)環(huán)節(jié)這條沒(méi)有商量余地。2.4 風(fēng)險(xiǎn)四隱私與數(shù)據(jù)泄露訓(xùn)練數(shù)據(jù)里的記憶第四條是數(shù)據(jù)層面的。模型在訓(xùn)練時(shí)見(jiàn)過(guò)海量文本其中可能包含個(gè)人信息、內(nèi)部文檔、未公開(kāi)的代碼。如果這些內(nèi)容被模型記住并在特定提問(wèn)下復(fù)現(xiàn)出來(lái)就是實(shí)打?qū)嵉男孤丁_@條風(fēng)險(xiǎn)對(duì)做企業(yè)級(jí)應(yīng)用的人特別重要。我參與過(guò)一個(gè)內(nèi)部知識(shí)庫(kù)項(xiàng)目最初的想法是把公司所有文檔喂給模型做問(wèn)答。后來(lái)做了一輪測(cè)試發(fā)現(xiàn)只要提問(wèn)方式足夠巧妙模型確實(shí)能吐出一些本不該出現(xiàn)在回答里的原文片段。結(jié)論很明確敏感數(shù)據(jù)不能無(wú)差別地進(jìn)入訓(xùn)練或微調(diào)流程必須做脫敏和分級(jí)。實(shí)操上我建議至少做三件事一是數(shù)據(jù)入庫(kù)前做 PII個(gè)人身份信息掃描和替換二是對(duì)模型輸出做反向檢測(cè)看是否包含訓(xùn)練集中標(biāo)記為敏感的片段三是給不同權(quán)限的用戶返回不同粒度的答案。第三點(diǎn)最容易被忽略但往往最有效——同一個(gè)問(wèn)題普通員工和高管看到的答案詳細(xì)程度本來(lái)就應(yīng)該不一樣。2.5 風(fēng)險(xiǎn)五經(jīng)濟(jì)與社會(huì)層面的沖擊崗位結(jié)構(gòu)在變第五條跳出了技術(shù)講的是宏觀影響AI 會(huì)改變就業(yè)結(jié)構(gòu)某些崗位的需求會(huì)快速下降而新崗位的培養(yǎng)需要時(shí)間中間會(huì)出現(xiàn)錯(cuò)配。這條對(duì)個(gè)人來(lái)說(shuō)最實(shí)際的應(yīng)對(duì)不是焦慮而是搞清楚自己工作里哪些部分是可被模型替代的、哪些不是。我的觀察是純信息整理、格式轉(zhuǎn)換、模板化寫(xiě)作這類工作替代速度最快而需要判斷、需要承擔(dān)責(zé)任、需要和人建立信任的工作替代速度慢得多。關(guān)鍵詞里AI 程序員AI 編程很熱但我想說(shuō)句實(shí)在話會(huì)用 AI 寫(xiě)代碼不等于會(huì)做軟件工程。模型能幫你寫(xiě)函數(shù)、改 bug、生成測(cè)試但系統(tǒng)怎么分層、邊界怎么劃、出問(wèn)題誰(shuí)負(fù)責(zé)這些還是人的事。把 AI 當(dāng)成一個(gè)能力很強(qiáng)但需要被管理的初級(jí)同事這個(gè)心態(tài)比較健康。2.6 風(fēng)險(xiǎn)六治理與責(zé)任真空出了事找誰(shuí)第六條是最不技術(shù)但最要命的一條當(dāng) AI 系統(tǒng)造成損害時(shí)責(zé)任怎么劃分是模型提供方、應(yīng)用開(kāi)發(fā)者還是最終使用者現(xiàn)實(shí)情況是目前這套責(zé)任鏈條非常模糊。模型提供方會(huì)說(shuō)我只提供能力怎么用是你的事應(yīng)用開(kāi)發(fā)者會(huì)說(shuō)我是基于第三方模型做的模型本身的問(wèn)題不該我背用戶會(huì)說(shuō)我只是按它說(shuō)的做。結(jié)果是三方都能找到推脫的理由而受損的一方找不到明確的追責(zé)對(duì)象。對(duì)做產(chǎn)品的人來(lái)說(shuō)這條風(fēng)險(xiǎn)的現(xiàn)實(shí)含義是你必須在自己這一層把責(zé)任邊界寫(xiě)清楚。用戶協(xié)議里要明確說(shuō)明 AI 輸出的局限性高風(fēng)險(xiǎn)場(chǎng)景要有免責(zé)和人工兜底機(jī)制內(nèi)部要有事故響應(yīng)流程。這些看起來(lái)是法務(wù)和合規(guī)的事但真正落地時(shí)是工程和產(chǎn)品要一起設(shè)計(jì)的。3. 把風(fēng)險(xiǎn)清單變成工程清單我實(shí)際會(huì)做的六件事光知道風(fēng)險(xiǎn)沒(méi)用得能落到代碼和流程上。下面這張表是我在項(xiàng)目里實(shí)際會(huì)對(duì)照檢查的清單把六大風(fēng)險(xiǎn)翻譯成了可執(zhí)行的動(dòng)作。風(fēng)險(xiǎn)方向工程動(dòng)作驗(yàn)證方式能力濫用接口限頻、行為聚類、異常告警模擬批量調(diào)用看是否觸發(fā)攔截自信犯錯(cuò)強(qiáng)制引用、二次校驗(yàn)、置信度標(biāo)注抽樣人工核對(duì)統(tǒng)計(jì)錯(cuò)誤率目標(biāo)漂移目標(biāo)拆解、步驟檢查點(diǎn)、高風(fēng)險(xiǎn)人工確認(rèn)讓 Agent 跑長(zhǎng)任務(wù)看是否偏離數(shù)據(jù)泄露PII 脫敏、輸出反向檢測(cè)、權(quán)限分級(jí)構(gòu)造誘導(dǎo)性提問(wèn)看是否吐出敏感內(nèi)容崗位沖擊梳理任務(wù)可替代性、保留判斷類工作定期復(fù)盤(pán)哪些環(huán)節(jié)已可自動(dòng)化責(zé)任真空用戶協(xié)議、免責(zé)說(shuō)明、事故響應(yīng)流程做一次模擬事故演練這張表里我覺(jué)得最容易被跳過(guò)、但最該做的是最后一行。大部分團(tuán)隊(duì)在趕功能的時(shí)候根本不會(huì)去想如果這個(gè) AI 功能出錯(cuò)并造成損失我們?cè)趺刺幚?。等到真出事臨時(shí)抱佛腳代價(jià)會(huì)大得多。再補(bǔ)充一個(gè)實(shí)操心得不要試圖一次性把六條全解決。資源有限的情況下先解決和你業(yè)務(wù)最相關(guān)的那兩三條。做內(nèi)容平臺(tái)的優(yōu)先解決濫用和幻覺(jué)做企業(yè)工具的優(yōu)先解決數(shù)據(jù)泄露和權(quán)限做 Agent 的優(yōu)先解決目標(biāo)漂移和人工確認(rèn)。抓重點(diǎn)比面面俱到更有效。4. 普通開(kāi)發(fā)者和團(tuán)隊(duì)現(xiàn)在能落地的防護(hù)動(dòng)作4.1 輸入側(cè)把好第一道關(guān)輸入側(cè)是最容易被忽視的防線。很多團(tuán)隊(duì)把精力全放在模型輸出好不好上卻不管用戶輸入了什么。實(shí)際上大量風(fēng)險(xiǎn)是從輸入進(jìn)來(lái)的。我會(huì)在輸入側(cè)做這幾件事長(zhǎng)度限制防止超長(zhǎng)輸入拖垮服務(wù)或繞過(guò)檢測(cè)、敏感模式匹配識(shí)別明顯的惡意意圖關(guān)鍵詞、輸入歸一化把各種變體統(tǒng)一處理防止用同音字、特殊符號(hào)繞過(guò)。這些都不復(fù)雜但能擋掉相當(dāng)一部分低級(jí)濫用。注意輸入過(guò)濾不要做得太死。我見(jiàn)過(guò)一個(gè)項(xiàng)目把過(guò)濾規(guī)則寫(xiě)得極嚴(yán)結(jié)果正常用戶稍微提到相關(guān)詞匯就被攔體驗(yàn)很差。過(guò)濾規(guī)則要留白名單和申訴通道否則會(huì)誤傷。4.2 輸出側(cè)寧可保守不可放任輸出側(cè)的核心原則是分級(jí)放行。低風(fēng)險(xiǎn)內(nèi)容直接返回中風(fēng)險(xiǎn)內(nèi)容加提示或降級(jí)展示高風(fēng)險(xiǎn)內(nèi)容攔截或轉(zhuǎn)人工。這個(gè)分級(jí)標(biāo)準(zhǔn)要結(jié)合你的業(yè)務(wù)來(lái)定沒(méi)有通用答案。技術(shù)上輸出側(cè)常用的手段包括關(guān)鍵詞和模式檢測(cè)、輸出與輸入的語(yǔ)義一致性檢查防止答非所問(wèn)或被誘導(dǎo)、以及前面提到的敏感片段反向檢測(cè)。我個(gè)人的經(jīng)驗(yàn)是輸出側(cè)檢測(cè)的誤報(bào)率通常比輸入側(cè)高所以一定要有快速申訴和人工復(fù)核機(jī)制不然會(huì)積累大量用戶不滿。4.3 流程側(cè)讓人始終在關(guān)鍵環(huán)節(jié)不管模型多強(qiáng)涉及資金、法律、人身安全、對(duì)外發(fā)布的環(huán)節(jié)必須有人工確認(rèn)。這不是對(duì)模型不信任而是對(duì)后果負(fù)責(zé)。我在項(xiàng)目里設(shè)過(guò)一條規(guī)則任何由 AI 生成、將要對(duì)外發(fā)布的內(nèi)容必須經(jīng)過(guò)一次人工審核審核記錄留檔。這條規(guī)則執(zhí)行起來(lái)會(huì)增加人力成本但它把AI 出錯(cuò)的后果從公開(kāi)事故降級(jí)成了內(nèi)部攔截。這筆賬怎么算都劃算。4.4 監(jiān)控側(cè)沒(méi)有度量就沒(méi)有改進(jìn)最后是監(jiān)控。你需要知道模型在生產(chǎn)環(huán)境里到底表現(xiàn)如何錯(cuò)誤率多少、被攔截的比例多少、用戶投訴集中在哪類問(wèn)題上。沒(méi)有這些數(shù)據(jù)所有的安全措施都是拍腦袋。我建議至少監(jiān)控四個(gè)指標(biāo)輸出錯(cuò)誤率、濫用攔截率、人工復(fù)核轉(zhuǎn)交率、用戶申訴率。這四個(gè)數(shù)字每周看一次趨勢(shì)比絕對(duì)值更重要。如果濫用攔截率突然飆升說(shuō)明有人在試探你的防線如果人工復(fù)核轉(zhuǎn)交率持續(xù)走高說(shuō)明你的自動(dòng)分級(jí)標(biāo)準(zhǔn)可能太嚴(yán)了。5. 關(guān)于無(wú)限制 AI這類需求我的真實(shí)看法關(guān)鍵詞里有一批詞很扎眼比如無(wú)限制 AI無(wú)禁詞聊天無(wú)審核生成。我理解這類需求背后的心理——用戶覺(jué)得限制太多、體驗(yàn)被打斷。但作為一個(gè)做過(guò)內(nèi)容安全的人我想說(shuō)幾句實(shí)在話。完全無(wú)限制的 AI 系統(tǒng)在真實(shí)產(chǎn)品里是不存在的也不該存在。原因很簡(jiǎn)單一旦你的系統(tǒng)被用來(lái)生成違法或有害內(nèi)容承擔(dān)責(zé)任的是你不是模型。模型提供方在協(xié)議里早就把責(zé)任撇清了最后站在風(fēng)口上的是應(yīng)用方。那用戶想要的少一點(diǎn)打斷能不能滿足能。做法不是取消限制而是把限制做得更聰明區(qū)分正常表達(dá)和惡意意圖對(duì)前者放行對(duì)后者攔截把硬攔截改成軟提示讓用戶知道邊界在哪而不是直接報(bào)錯(cuò)給合規(guī)的敏感需求比如醫(yī)學(xué)、法律咨詢提供帶免責(zé)說(shuō)明的專業(yè)通道。這些都比一刀切或全放開(kāi)要好。我見(jiàn)過(guò)太多團(tuán)隊(duì)在這件事上走極端要么管得死氣沉沉要么放得毫無(wú)底線。真正難的是中間那條路——既讓正常用戶用得舒服又不給濫用留口子。這條路沒(méi)有現(xiàn)成方案只能靠持續(xù)觀察、持續(xù)調(diào)整。6. 我踩過(guò)的坑和幾條不寫(xiě)在文檔里的經(jīng)驗(yàn)最后分享幾個(gè)實(shí)際踩過(guò)的坑都是文檔里不會(huì)寫(xiě)、但真金白銀換來(lái)的。第一個(gè)坑以為加了內(nèi)容過(guò)濾就萬(wàn)事大吉。早期項(xiàng)目里我加了一層關(guān)鍵詞過(guò)濾覺(jué)得穩(wěn)了。結(jié)果用戶用拼音、拆字、外語(yǔ)混寫(xiě)輕松繞過(guò)。教訓(xùn)是過(guò)濾要做在語(yǔ)義層不能只做在字符串層。第二個(gè)坑低估了模型輸出的不可預(yù)測(cè)性。同一個(gè)提示詞今天和明天的輸出可能不一樣不同批次的模型版本行為也會(huì)變。所以任何依賴模型輸出的下游邏輯都要做容錯(cuò)不能假設(shè)輸出格式永遠(yuǎn)穩(wěn)定。第三個(gè)坑把安全當(dāng)成一次性任務(wù)。上線前做了一輪檢測(cè)之后就不管了。但濫用手段在進(jìn)化模型在更新業(yè)務(wù)在變化安全措施必須定期回歸測(cè)試。我現(xiàn)在習(xí)慣每個(gè)季度做一次紅隊(duì)演練自己扮演攻擊者去試探自己的系統(tǒng)往往能發(fā)現(xiàn)新問(wèn)題。第四個(gè)坑忽視內(nèi)部人員的使用。大家總盯著外部攻擊其實(shí)內(nèi)部員工誤用、越權(quán)使用同樣危險(xiǎn)。權(quán)限最小化原則在 AI 系統(tǒng)里同樣適用不是所有人都需要訪問(wèn)所有能力。說(shuō)到底奧特曼列的這六大風(fēng)險(xiǎn)本質(zhì)上是在提醒一件事AI 能力增長(zhǎng)的速度已經(jīng)超過(guò)了我們管理它的能力增長(zhǎng)速度。對(duì)做技術(shù)的人來(lái)說(shuō)這意味著我們的工作不只是把功能做出來(lái)還要把功能管起來(lái)。這兩件事缺一件都不算做完。