当前位置: 首页 > news >正文

业务接 AI 前,先别急着调模型,先做输入脱敏层

很多业务系统接 AI第一步就错了。不是模型选错也不是 Prompt 写得不好而是把原始数据直接丢给模型。客户聊天记录直接丢。工单详情直接丢。合同内容直接丢。数据库日志直接丢。用户手机号、邮箱、订单号也顺手带进去。然后团队还会说一句“我们只是内部测试。”这句话最危险。因为 AI 接入业务后真正的风险往往不是它答错而是它看到了不该看的东西。Google I/O 2026 之后Google 把 AI 和 Agent 能力继续往搜索、开发工具和生产应用方向推进开发者更新里也强调从 prompt 到 production-ready application 的工具链正在变得更完整。AI 越接近生产流程输入层就越不能裸奔。尤其是企业场景。客服系统里有客户姓名、手机号、地址。CRM 里有销售记录、报价、合同状态。日志系统里可能有 token、cookie、内部接口。财务系统里有订单金额、发票、付款信息。代码仓库里有配置、密钥、内部域名。这些东西不应该原样进入模型。所以业务接 AI 前第一层应该不是 Prompt而是 Input Sanitizer也就是输入脱敏层。它要做三件事识别敏感信息。替换敏感信息。记录脱敏映射但不要暴露给模型。一个简单结构可以这样设计pythonfrom dataclasses import dataclassfrom enum import Enumfrom typing import Dict, Listimport reimport uuidclass SensitiveType(str, Enum):PHONE phoneEMAIL emailID_CARD id_cardTOKEN tokenORDER_ID order_idAPI_KEY api_keydataclassclass SensitiveMatch:sensitive_type: SensitiveTyperaw_value: strplaceholder: str然后定义一些基础规则pythonPATTERNS {SensitiveType.PHONE: r1[3-9]\d{9},SensitiveType.EMAIL: r[a-zA-Z0-9_.-][a-zA-Z0-9-]\.[a-zA-Z0-9-.],SensitiveType.API_KEY: r(sk|api|key)_[a-zA-Z0-9]{16,},SensitiveType.TOKEN: rBearer\s[a-zA-Z0-9._-],}扫描文本pythondef scan_sensitive(text: str) - List[SensitiveMatch]:matches []for sensitive_type, pattern in PATTERNS.items():for item in re.findall(pattern, text):placeholder f[{sensitive_type.value}_{uuid.uuid4().hex[:8]}]matches.append(SensitiveMatch(sensitive_typesensitive_type,raw_valueitem,placeholderplaceholder))return matches替换敏感信息pythondef sanitize_input(text: str) - Dict:matches scan_sensitive(text)sanitized textmapping {}for match in matches:sanitized sanitized.replace(match.raw_value, match.placeholder)mapping[match.placeholder] {type: match.sensitive_type.value,raw_value: match.raw_value}return {sanitized_text: sanitized,mapping: mapping}比如输入text客户手机号 13812345678邮箱 testexample.com反馈订单 ORDER_20260521001 无法支付。脱敏后应该变成text客户手机号 [phone_xxxxxxxx]邮箱 [email_xxxxxxxx]反馈订单 ORDER_20260521001 无法支付。这时模型仍然能理解问题这是一个客户反馈。涉及手机号和邮箱。问题是订单无法支付。但模型不需要看到真实手机号和邮箱。如果涉及订单号也可以继续做占位pythonORDER_PATTERN rORDER_\ddef sanitize_order_id(text: str):return re.sub(ORDER_PATTERN, [order_id], text)输入脱敏层还要配合风险等级。不是所有内容都只是替换一下就能送给模型。可以分三层低风险公开资料、普通文案、通用问题。中风险客户问题摘要、内部流程、非敏感业务数据。高风险身份证、银行卡、合同原文、密钥、生产日志、未脱敏客户数据。高风险内容应该直接拦截而不是脱敏后继续丢给模型。pythonBLOCKED_TYPES {SensitiveType.API_KEY,SensitiveType.TOKEN,SensitiveType.ID_CARD,}def should_block(matches: List[SensitiveMatch]) - bool:return any(match.sensitive_type in BLOCKED_TYPES for match in matches)完整处理pythondef prepare_ai_input(text: str) - Dict:matches scan_sensitive(text)if should_block(matches):return {ok: False,reason: blocked_sensitive_data,message: 输入包含高风险敏感信息已阻止发送给 AI。}result sanitize_input(text)return {ok: True,sanitized_text: result[sanitized_text],mapping_count: len(result[mapping])}注意mapping 不应该传给模型。mapping 只应该留在业务系统内部用于必要的结果回填。但这里还要补一句真实工程里不能只靠正则。正则适合识别手机号、邮箱、token、订单号这类格式稳定的字段但很多敏感信息没有固定格式。比如“客户住在台北信义区某某路附近”。“这位客户是我们重点续约对象”。“这段日志来自生产支付接口”。“这个合同条款还没有对外公开”。“这是内部报价不要外传”。这些内容不是简单正则能识别的。所以更成熟的做法是三层组合第一层规则识别。用于手机号、邮箱、token、API key、身份证号、订单号。第二层模型分类。让模型只判断“这段文本是否包含敏感业务信息”而不是直接处理全文任务。第三层人工标注。把误判和漏判样本沉淀成规则让脱敏层不断迭代。可以加一个分类结果pythondataclassclass RiskClassification:risk_level: strreason: strsuggested_action: str例如pythondef classify_risk_with_model(text: str) - RiskClassification:# 这里实际工程中应调用内部合规模型或受控分类服务# 返回 low / medium / highreturn RiskClassification(risk_levelmedium,reason文本包含客户投诉内容但未发现账号密码或密钥。,suggested_actionsanitize_then_process)这样系统就不是“只靠正则硬扫”而是规则、分类、人工反馈一起工作。这就是很多 Demo 和真实业务系统的区别。Demo 只关心模型能不能回答。业务系统要关心模型看到了什么。前期比较不同模型对脱敏文本的理解能力可以用 gpt57.com 跑同一批 sanitized input看哪个模型在信息缺失的情况下仍然能准确分类、总结、生成回复草稿。但上线时是否脱敏、是否拦截、是否记录审计必须由自己的系统控制。AI 接业务前先别急着调模型。先保证模型看不到不该看的东西。这比 Prompt 更基础。
http://www.zskr.cn/news/1400410.html

相关文章:

  • 5分钟掌握AMD Ryzen隐藏性能:SMUDebugTool实战指南
  • 实战经验:如何修复 MariaDB 因 InnoDB 损坏导致的启动失败 (status=6/ABRT)
  • 从工具使用者到架构指挥者:Claude Code高级配置与协作模式实战
  • 保姆级教程:用博图V17搞定WINCC RT Advanced与S7-1200 PLC的通讯(含PG/PC接口设置避坑)
  • WarcraftHelper:魔兽争霸3终极兼容性与功能增强插件完全指南
  • 3步彻底解决Zotero中文文献乱码问题:茉莉花插件完全指南
  • BroadcastChannel 深度解析
  • Naftiko框架:统一治理AI能力调用,解决API蔓延难题
  • Windows窗口置顶终极指南:5分钟掌握AlwaysOnTop提升工作效率
  • Hugging Face分词报错怎么办?教你一招避坑
  • 基于ssm的大学校医院信息管理系统(10112)
  • 解锁、截图、删文件都能换声音?macOS Sequoia 新系统太会玩了
  • AI搜索优化:揭秘Schema标记44%提升神话与实证策略
  • UVa 294 Divisors
  • Hitboxer SOCD Cleaner:解决游戏键盘输入冲突的终极方案
  • 不确定系统中的多目标规划模型与应用【附代码】
  • 2026年5月液压升降平台厂家推荐:TOP5排名专业评测工业厂房重载升降性价比高 - 品牌推荐
  • Unity 2018+ 版本里,那个消失的Standard Assets去哪了?手把手教你从Asset Store找回并修复BUG
  • 微信聊天记录解密终极指南:3步快速恢复加密数据
  • ThinkPad开机滴滴响或显示Fan error/2100硬盘错误?保姆级拆机清灰与硬件检测指南(避免误判主板问题)
  • livox mid 360s使用记录
  • 面试复盘7.0
  • 个人笔记-wsl2 Ubuntu24.04安装oh-my-posh
  • 2026市面上耐用的给水pph管厂家推荐榜单 - 品牌排行榜
  • 面向AI智能体的API设计:从人类可读到机器可理解的技术演进
  • 终极炉石传说游戏增强插件:HsMod 55项功能完整指南
  • 2026年5月杨浦新房推荐:五大楼盘专业评测滨江置业防踩坑 - 品牌推荐
  • ExaLith PCIe卡:高性能AI推理的经济解决方案
  • 移动开发十年变革:从原生到跨平台,开发者如何重构技术栈应对挑战
  • C++字符串类实现详解