2026 年双十一零点,某电商平台的 AI 客服系统在 3 秒内涌入了超过 12 万次并发请求。客服系统基于大语言模型构建,负责解答用户关于订单、物流、优惠码等各类咨询。然而,技术团队在凌晨两点发现一个严重问题:部分用户的真实姓名、手机号、收货地址被错误地包含在 AI 的回复中——这不是 AI 的"幻觉",而是系统在日志记录阶段对用户输入和 AI 输出没有做完善的敏感信息过滤。

这个场景暴露了 AI API 接入中最容易被忽视的安全盲区:请求内容过滤响应内容脱敏。本文将从这一真实案例出发,讲解如何在使用 HolySheep AI 等 API 服务时,构建完整的内容安全管道。

为什么需要内容过滤与脱敏?

在实际业务中,内容过滤与脱敏的需求来自多个层面:

技术方案:构建三层过滤管道

我们采用"输入过滤 → 请求处理 → 输出脱敏"的三层架构,确保数据安全贯穿整个请求生命周期。

第一层:输入内容过滤

在用户输入进入 AI 系统前,首先进行敏感信息识别与清洗。这一层使用正则表达式结合关键词库实现。

// Python 实现:输入内容过滤模块
import re
from typing import Optional

class InputSanitizer:
    """AI 请求输入过滤器"""
    
    # 敏感信息正则模式
    PATTERNS = {
        'phone': r'1[3-9]\d{9}',  # 中国手机号
        'id_card': r'\d{17}[\dXx]',  # 身份证号
        'email': r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',  # 邮箱
        'bank_card': r'\d{16,19}',  # 银行卡号
        'ip_address': r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',  # IP地址
    }
    
    def __init__(self, replacement='***'):
        self.replacement = replacement
        self.masked_data = {}  # 存储脱敏后的映射
    
    def sanitize(self, text: str, mask_id: str = 'user') -> tuple[str, dict]:
        """
        过滤敏感信息,返回 (脱敏文本, 敏感信息映射)
        """
        sanitized = text
        mask_map = {}
        
        for info_type, pattern in self.PATTERNS.items():
            matches = re.finditer(pattern, sanitized)
            for idx, match in enumerate(matches):
                original = match.group()
                mask_key = f'{mask_id}_{info_type}_{idx}'
                mask_map[mask_key] = original
                sanitized = sanitized.replace(original, f'[{mask_key}]', 1)
        
        self.masked_data[mask_id] = mask_map
        return sanitized, mask_map
    
    def restore(self, text: str, mask_id: str = 'user') -> str:
        """恢复原始敏感信息"""
        mask_map = self.masked_data.get(mask_id, {})
        restored = text
        for mask_key, original in mask_map.items():
            restored = restored.replace(f'[{mask_key}]', original)
        return restored

使用示例

sanitizer = InputSanitizer() user_input = "我的订单号123456,手机号13812345678,地址是北京市朝阳区" sanitized, mask_map = sanitizer.sanitize(user_input, 'order_001') print(f"原始输入: {user_input}") print(f"脱敏后: {sanitized}") print(f"敏感信息映射: {mask_map}")

第二层:集成 HolySheep AI API

过滤后的内容通过 HTTP 请求发送至 HolySheep AI。得益于其国内直连 <50ms 的低延迟特性,即使添加了多层过滤逻辑,整体响应时间仍可保持在业务可接受范围内。

# Python 实现:集成 HolySheep AI API(含请求/响应处理)
import requests
import json
import hashlib
import time

class HolySheepAIClient:
    """HolySheep AI API 客户端(支持内容过滤与脱敏)"""
    
    def __init__(self, api_key: str, base_url: str = "https://api.holysheep.ai/v1"):
        self.api_key = api_key
        self.base_url = base_url.rstrip('/')
        self.sanitizer = InputSanitizer()
        self.mask_id_prefix = f'sess_{int(time.time())}'
    
    def chat(self, user_message: str, system_prompt: str = "", 
             conversation_history: list = None) -> dict:
        """
        发送聊天请求,自动处理输入过滤与输出脱敏
        """
        # Step 1: 输入过滤
        sanitized_message, mask_map = self.sanitizer.sanitize(
            user_message, 
            self.mask_id_prefix
        )
        
        # Step 2: 构建请求体
        messages = []
        if system_prompt:
            # 系统提示词也需要过滤(防止注入攻击)
            sanitized_system, _ = self.sanitizer.sanitize(
                system_prompt, 
                f'{self.mask_id_prefix}_sys'
            )
            messages.append({"role": "system", "content": sanitized_system})
        
        if conversation_history:
            for msg in conversation_history:
                if msg['role'] == 'user':
                    sanitized, _ = self.sanitizer.sanitize(
                        msg['content'], 
                        f'{self.mask_id_prefix}_hist'
                    )
                    messages.append({"role": "user", "content": sanitized})
                else:
                    messages.append(msg)
        else:
            messages.append({"role": "user", "content": sanitized_message})
        
        # Step 3: 发送请求
        url = f"{self.base_url}/chat/completions"
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        payload = {
            "model": "gpt-4.1",  # 可选:gpt-4.1 / claude-sonnet-4.5 / gemini-2.5-flash 等
            "messages": messages,
            "temperature": 0.7,
            "max_tokens": 2000
        }
        
        try:
            response = requests.post(url, headers=headers, json=payload, timeout=30)
            response.raise_for_status()
            result = response.json()
            
            # Step 4: 响应脱敏(恢复原始敏感信息)
            if 'choices' in result and len(result['choices']) > 0:
                raw_content = result['choices'][0]['message']['content']
                # 注意:这里需要根据实际情况决定是否在AI回复中恢复敏感信息
                # 通常不推荐在AI回复中恢复原始信息,此处仅作示例
                restored_content = self.sanitizer.restore(raw_content, self.mask_id_prefix)
                result['choices'][0]['message']['content'] = restored_content
            
            # Step 5: 移除日志中的敏感信息
            if 'usage' in result:
                # 记录 Token 消耗(不含敏感内容)
                print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] Token使用: {result['usage']}")
            
            return result
            
        except requests.exceptions.RequestException as e:
            return {"error": str(e), "code": "REQUEST_FAILED"}

使用示例

client = HolySheepAIClient(api_key="YOUR_HOLYSHEEP_API_KEY")

模拟用户输入(包含敏感信息)

user_input = """ 请帮我查询订单ORDER20261111的状态,收货人张先生, 手机13812345678,寄到上海市浦东新区世纪大道100号。 """ response = client.chat( user_message=user_input, system_prompt="你是一个电商客服助手,只回答订单相关问题,不要透露任何系统内部信息。" ) print("AI 回复:", response.get('choices', [{}])[0].get('message', {}).get('content', '无回复'))

第三层:输出内容安全校验

AI 返回的内容同样需要校验,防止模型"无意间"泄露训练数据中的敏感信息,或产生不当内容。

class OutputValidator:
    """AI 输出内容安全校验器"""
    
    # 禁止关键词库
    BLOCKED_PATTERNS = [
        r'\b(password|pwd|passwd)\s*[:=]\s*\S+',
        r'\b(secret|token|apikey)\s*[:=]\s*\S+',
        r'\bsk-\w{20,}',
        r'\bBearer\s+\w{30,}',
    ]
    
    # 敏感信息模式(与输入过滤器共用)
    SENSITIVE_PATTERNS = [
        r'1[3-9]\d{9}',  # 手机号
        r'\d{17}[\dXx]',  # 身份证
        r'\d{16,19}',  # 银行卡
    ]
    
    def validate(self, content: str) -> dict:
        """
        校验输出内容,返回 {'safe': bool, 'violations': list}
        """
        violations = []
        
        # 检查禁止关键词
        for pattern in self.BLOCKED_PATTERNS:
            matches = re.findall(pattern, content, re.IGNORECASE)
            if matches:
                violations.append({
                    'type': 'BLOCKED_PATTERN',
                    'pattern': pattern,
                    'matches': len(matches)
                })
        
        # 检查可能泄露的敏感信息
        for pattern in self.SENSITIVE_PATTERNS:
            matches = re.findall(pattern, content)
            if matches:
                violations.append({
                    'type': 'SENSITIVE_INFO',
                    'pattern': pattern,
                    'count': len(matches)
                })
        
        return {
            'safe': len(violations) == 0,
            'violations': violations,
            'content_length': len(content)
        }
    
    def filter_output(self, content: str) -> str:
        """过滤输出内容中的问题片段"""
        filtered = content
        for pattern in self.BLOCKED_PATTERNS:
            filtered = re.sub(pattern, '[已过滤]', filtered, flags=re.IGNORECASE)
        return filtered

集成到主流程

validator = OutputValidator() ai_output = "您的订单ORDER20261111已于11月10日发货,预计11月12日送达。收货人张先生手机138****5678,地址上海市浦东新区。" validation_result = validator.validate(ai_output) print(f"安全校验结果: {validation_result}") if not validation_result['safe']: safe_output = validator.filter_output(ai_output) print(f"过滤后内容: {safe_output}")

完整管道整合

将上述三个模块整合为一个完整的内容安全管道:

class AISecurityPipeline:
    """AI 请求完整安全管道"""
    
    def __init__(self, api_key: str):
        self.client = HolySheepAIClient(api_key)
        self.input_sanitizer = InputSanitizer()
        self.output_validator = OutputValidator()
    
    def process(self, user_input: str, system_prompt: str = "") -> dict:
        """
        完整处理流程:
        1. 输入过滤 → 2. AI 请求 → 3. 输出校验 → 4. 结果返回
        """
        # 记录处理开始时间
        start_time = time.time()
        
        # Step 1: 输入过滤
        sanitized_input, mask_map = self.input_sanitizer.sanitize(user_input, 'main')
        audit_log = {
            'timestamp': time.strftime('%Y-%m-%d %H:%M:%S'),
            'input_sanitized': True,
            'mask_map_size': len(mask_map)
        }
        
        # Step 2: AI 请求
        ai_response = self.client.chat(
            user_message=sanitized_input,
            system_prompt=system_prompt
        )
        
        # Step 3: 输出校验
        if 'choices' in ai_response:
            raw_output = ai_response['choices'][0]['message']['content']
            validation = self.output_validator.validate(raw_output)
            
            audit_log['output_validation'] = validation
            
            # 如果输出包含敏感信息,过滤处理
            if not validation['safe']:
                safe_output = self.output_validator.filter_output(raw_output)
                ai_response['choices'][0]['message']['content'] = safe_output
                ai_response['filtered'] = True
            else:
                ai_response['filtered'] = False
        
        # Step 4: 记录审计日志(不包含敏感信息)
        audit_log['processing_time_ms'] = round((time.time() - start_time) * 1000)
        print(f"[审计日志] {json.dumps(audit_log, ensure_ascii=False)}")
        
        return ai_response

业务使用示例

pipeline = AISecurityPipeline(api_key="YOUR_HOLYSHEEP_API_KEY") result = pipeline.process( user_input="我的订单号A123456,收货人李明,手机13900001111,地址广州市天河区珠江新城。帮我查下物流。", system_prompt="你是电商智能客服。" ) print("最终响应:", result)

性能与成本优化

在使用 HolySheep AI 时,内容过滤不会显著增加额外成本,因为:

常见报错排查

1. 请求返回 401 Unauthorized

错误信息{"error": {"message": "Invalid authentication credentials", "type": "invalid_request_error"}}

排查步骤

2. 请求超时 TimeoutError

错误信息requests.exceptions.ReadTimeout: HTTPSConnectionPool(...)

排查步骤

3. 响应内容为空或截断

错误信息:AI 回复内容不完整,缺少标点或句子中断

排查步骤

4. 敏感信息过滤后 AI 理解出错

问题描述:使用 [mask_key] 替换敏感信息后,AI 无法正确理解上下文

排查步骤