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

Guardrails节点就像是AI工作流的"安全卫士"。想象一个场景:你的客服机器人正在与用户聊天,突然用户粘贴了他的信用卡号码,或者尝试用巧妙的提示词技巧来欺骗AI做不该做的事。没有Guardrails,这些敏感信息就会直接流向你的AI模型,造成数据泄露、合规问题、甚至安全漏洞。
Guardrails节点解决的核心问题:
该节点于n8n 1.119版本正式发布,内置集成OpenAI的开源Guardrails包,开箱即用,无需编写复杂代码。
这是严格模式,用于完全阻止违规内容。当检测到任何违规时,文本会被路由到失败分支,你可以在这里进行日志记录、发送告警或向用户返回错误信息。
适用场景:
这是净化模式,检测到敏感信息后不是阻止,而是用占位符替换。例如将 我的电话是13800138000 变成 我的电话是[PHONE_NUMBER_REDACTED],这样信息可以继续流向AI处理,但敏感数据已被保护。
适用场景:

最简单但有效的过滤器。提供要阻止的关键词列表(逗号分隔)。
配置示例:
关键词: "confidential,internal,secret,delete database"使用AI模型检测试图绕过安全措施的狡猾提示。设置置信度阈值(0-1)来平衡安全性和误检。
配置参数:
- 阈值: 0.7 (70%置信度才标记为违规)
- 自定义提示: 可调整检测逻辑自动识别成人或不适当内容,使用AI模型进行深度分析。
扫描电话号码、信用卡、社保号、邮箱等。支持选择特定类型或检查所有类型。
可检测实体类型:
- CREDIT_CARD
- PHONE_NUMBER
- EMAIL_ADDRESS
- US_SSN
- IP_ADDRESS捕获被意外粘贴的API密钥、令牌等认证信息。三个严格度选项:严格(Strict) → 平衡(Balanced) → 宽松(Permissive)。
通过定义业务范围来确保对话不偏离主题。例如,客服机器人可配置为只讨论"账户问题、产品功能、计费"。
示例提示: "该对话应该围绕技术支持和产品特性展开,不应涉及财务建议或法律咨询"控制工作流中的链接。支持:
user:pass@site.com)创建基于自然语言的自定义检查。你描述要检查什么,AI模型就负责识别。
示例:
名称: "财务建议检测"
提示: "检查响应中是否包含财务建议或投资建议"
阈值: 0.8高级用户可以定义正则表达式模式来检测特定的文本模式。
下面是一个真实可执行的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}]]
}
}
}这个工作流的执行流程:
初学者必读:
不同场景的配置:
| 场景 | 推荐的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#