【n8n教程】:🛡️ Guardrails节点 - 掌握AI工作流安全防护完全指南

n8n的Guardrails节点是一个强大的内置安全层,可以在用户输入到达AI模型之前进行多层安全检查(如检测提示词注入、敏感数据、不当内容等),也可以对AI输出进行验证,确保整个工作流从入到出都受到保护。这个节点集成了9种安全检查类型,涵盖PII检测、NSFW过滤、密钥管理等场景,让非程序员也能轻松实现生产级别的AI安全防护。

n8n Guardrails节点在AI工作流中的安全防护作用
n8n Guardrails节点在AI工作流中的安全防护作用

🎯 什么是Guardrails节点?为什么你需要它?

Guardrails节点就像是AI工作流的"安全卫士"。想象一个场景:你的客服机器人正在与用户聊天,突然用户粘贴了他的信用卡号码,或者尝试用巧妙的提示词技巧来欺骗AI做不该做的事。没有Guardrails,这些敏感信息就会直接流向你的AI模型,造成数据泄露、合规问题、甚至安全漏洞

Guardrails节点解决的核心问题

该节点于n8n 1.119版本正式发布,内置集成OpenAI的开源Guardrails包,开箱即用,无需编写复杂代码。

🏗️ Guardrails的两大工作模式

模式1️⃣:检查文本违规(Check Text for Violations)

这是严格模式,用于完全阻止违规内容。当检测到任何违规时,文本会被路由到失败分支,你可以在这里进行日志记录、发送告警或向用户返回错误信息。

适用场景

模式2️⃣:清理文本(Sanitize Text)

这是净化模式,检测到敏感信息后不是阻止,而是用占位符替换。例如将 我的电话是13800138000 变成 我的电话是[PHONE_NUMBER_REDACTED],这样信息可以继续流向AI处理,但敏感数据已被保护。

适用场景

PII敏感数据检测和脱敏处理演示
PII敏感数据检测和脱敏处理演示

🔍 9种内置安全检查类型详解

1. 关键词检查(Keywords)

最简单但有效的过滤器。提供要阻止的关键词列表(逗号分隔)。


    
    
    
  配置示例:
关键词: "confidential,internal,secret,delete database"

2. 提示词注入检测(Jailbreak)

使用AI模型检测试图绕过安全措施的狡猾提示。设置置信度阈值(0-1)来平衡安全性和误检。


    
    
    
  配置参数:
- 阈值: 0.7 (70%置信度才标记为违规)
- 自定义提示: 可调整检测逻辑

3. 不当内容过滤(NSFW)

自动识别成人或不适当内容,使用AI模型进行深度分析。

4. 个人信息检测(PII - Personally Identifiable Information)

扫描电话号码、信用卡、社保号、邮箱等。支持选择特定类型检查所有类型


    
    
    
  可检测实体类型:
- CREDIT_CARD
- PHONE_NUMBER  
- EMAIL_ADDRESS
- US_SSN
- IP_ADDRESS

5. 密钥泄露检测(Secret Keys)

捕获被意外粘贴的API密钥、令牌等认证信息。三个严格度选项:严格(Strict) → 平衡(Balanced) → 宽松(Permissive)。

6. 话题对齐检查(Topical Alignment)

通过定义业务范围来确保对话不偏离主题。例如,客服机器人可配置为只讨论"账户问题、产品功能、计费"。


    
    
    
  示例提示: "该对话应该围绕技术支持和产品特性展开,不应涉及财务建议或法律咨询"

7. URL管理(URLs)

控制工作流中的链接。支持:

8. 自定义规则(Custom Guardrails)

创建基于自然语言的自定义检查。你描述要检查什么,AI模型就负责识别。


    
    
    
  示例: 
名称: "财务建议检测"
提示: "检查响应中是否包含财务建议或投资建议"
阈值: 0.8

9. 正则表达式模式(Custom Regex)

高级用户可以定义正则表达式模式来检测特定的文本模式。

🚀 实操:完整的工作流案例

下面是一个真实可执行的n8n Guardrails工作流示例,展示如何保护客服机器人:


    
    
    
  {
  "name"
: "Customer Support Chatbot with Guardrails",
  "nodes"
: [
    {

      "parameters"
: {},
      "name"
: "Webhook Trigger",
      "type"
: "n8n-nodes-base.webhook",
      "typeVersion"
: 1,
      "position"
: [250, 300]
    }
,
    {

      "parameters"
: {
        "operation"
: "check_text_for_violations",
        "textToCheck"
: "={{ $json.user_message }}",
        "guardrails"
: [
          {

            "name"
: "Jailbreak",
            "threshold"
: 0.7
          }
,
          {

            "name"
: "NSFW",
            "threshold"
: 0.6
          }
,
          {

            "name"
: "PII",
            "type"
: "All"
          }
,
          {

            "name"
: "Keywords",
            "keywords"
: "confidential,internal,secret"
          }

        ]

      }
,
      "name"
: "Check Text for Violations",
      "type"
: "n8n-nodes-langchain.guardrails",
      "typeVersion"
: 1,
      "position"
: [450, 300]
    }
,
    {

      "parameters"
: {
        "operation"
: "sanitize_text",
        "textToCheck"
: "={{ $json.user_message }}",
        "guardrails"
: [
          {

            "name"
: "PII",
            "type"
: "Selected",
            "entities"
: [
              "CREDIT_CARD"
,
              "PHONE_NUMBER"
,
              "EMAIL_ADDRESS"

            ]

          }
,
          {

            "name"
: "Secret Keys",
            "permissiveness"
: "Balanced"
          }
,
          {

            "name"
: "URLs",
            "blockAllUrlsExcept"
: "https://help.company.com,https://docs.company.com"
          }

        ]

      }
,
      "name"
: "Sanitize Sensitive Data",
      "type"
: "n8n-nodes-langchain.guardrails",
      "typeVersion"
: 1,
      "position"
: [450, 500]
    }
,
    {

      "parameters"
: {
        "model"
: "gpt-4o-mini",
        "prompt"
: "You are a helpful customer support assistant. Answer the user question professionally.",
        "messages"
: "={{ $json.sanitized_text || $json.user_message }}"
      }
,
      "name"
: "AI Response Generator",
      "type"
: "n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion"
: 1,
      "position"
: [650, 400]
    }
,
    {

      "parameters"
: {
        "operation"
: "check_text_for_violations",
        "textToCheck"
: "={{ $json.ai_response }}",
        "guardrails"
: [
          {

            "name"
: "NSFW",
            "threshold"
: 0.5
          }

        ]

      }
,
      "name"
: "Check AI Output Safety",
      "type"
: "n8n-nodes-langchain.guardrails",
      "typeVersion"
: 1,
      "position"
: [850, 400]
    }
,
    {

      "parameters"
: {
        "method"
: "POST",
        "url"
: "={{ $env.WEBHOOK_URL }}",
        "headers"
: {
          "Content-Type"
: "application/json"
        }
,
        "body"
: "={{ {response: $json.ai_response} }}"
      }
,
      "name"
: "Send Response",
      "type"
: "n8n-nodes-base.httpRequest",
      "typeVersion"
: 4,
      "position"
: [1050, 400]
    }

  ]
,
  "connections"
: {
    "Webhook Trigger"
: {
      "main"
: [[{"node": "Check Text for Violations", "type": "main", "index": 0}]]
    }
,
    "Check Text for Violations"
: {
      "main"
: [[{"node": "Sanitize Sensitive Data", "type": "main", "index": 0}]]
    }
,
    "Sanitize Sensitive Data"
: {
      "main"
: [[{"node": "AI Response Generator", "type": "main", "index": 0}]]
    }
,
    "AI Response Generator"
: {
      "main"
: [[{"node": "Check AI Output Safety", "type": "main", "index": 0}]]
    }
,
    "Check AI Output Safety"
: {
      "main"
: [[{"node": "Send Response", "type": "main", "index": 0}]]
    }

  }

}

这个工作流的执行流程

  1. 1. 用户通过Webhook发送消息
  2. 2. 第一道防线:检查违规(拦截注入、NSFW、敏感关键词)
  3. 3. 净化处理:清除PII、密钥、不安全的URL
  4. 4. AI处理:安全的清理数据送给AI模型
  5. 5. 第二道防线:检查AI输出是否安全
  6. 6. 响应返回:安全的响应发给用户

💡 实战建议(最佳实践)

初学者必读

不同场景的配置

场景推荐的Guardrails检查位置
客服机器人提示词注入、话题对齐、NSFW输入之前
内容审核NSFW、PII、URL发布之前
文档处理PII、密钥检测输入之前(净化模式)
公开API提示词注入、关键词、URL输入之前
通用AI代理所有类型输入前+输出后

引用链接

[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#