Guardrails验证器开发指南:创建自定义安全规则
想要为大语言模型添加更精准的安全防护?Guardrails验证器开发让你能够创建完全自定义的安全规则!🚀 无论你需要检测敏感内容、验证格式规范,还是集成外部AI服务,本指南将带你掌握从基础函数到复杂集成的完整开发流程。
为什么需要自定义验证器?🔍
Guardrails AI的核心功能是为大语言模型输出添加安全护栏,但标准验证器有时无法满足特定业务需求。自定义验证器让你能够:
- 精准控制:针对特定场景设计验证逻辑
- 灵活扩展:集成任意机器学习模型或外部服务
- 性能优化:根据数据特性调整验证策略
- 实时响应:支持流式处理和即时反馈
两种创建方式:函数与类
简单函数式验证器
对于不需要额外参数的验证逻辑,使用函数式开发最为便捷:
from guardrails.validators import register_validator, FailResult, PassResult
@register_validator(name="toxic-words", data_type="string")
def toxic_words(value, metadata):
for word in ["butt", "poop", "booger"]:
if word in value:
return FailResult(
error_message=f"检测到不当词汇: {word}"
)
return PassResult()
复杂类式验证器
当验证器需要配置参数或复杂逻辑时,继承Validator基类:
@register_validator(name="toxic-words", data_type="string")
class ToxicWords(Validator):
def __init__(self, search_words=["booger", "butt"], on_fail=None):
super().__init__(on_fail=on_fail, search_words=search_words)
self.search_words = search_words
def _validate(self, value, metadata):
mentioned_words = []
for word in self.search_words:
if word in value:
mentioned_words.append(word)
if mentioned_words:
return FailResult(
error_message=f"包含不当词汇: {', '.join(mentioned_words)}"
)
return PassResult()
集成机器学习模型的高级验证
将Hugging Face模型集成到验证器中:
@register_validator(name="toxic-language", data_type="string")
class ToxicLanguageValidator(Validator):
def __init__(self, threshold=0.9, model_name="unitary/toxic-bert"):
super().__init__(threshold=threshold)
self.pipeline = pipeline("text-classification", model=model_name)
def _validate(self, value, metadata):
result = self.pipeline(value)
if result[0]['label'] == 'toxic' and result[0]['score'] > threshold:
return FailResult(
error_message=f"检测到有害内容,置信度: {result[0]['score']}"
)
return PassResult()
验证失败处理策略
Guardrails提供多种验证失败处理方式:
- reask:重新请求LLM生成内容
- filter:过滤掉不符合要求的部分
- fix:自动修正错误内容
- refrain:停止生成并返回
- noop:无操作,继续流程
流式验证支持
验证器天然支持流式处理,可按句子或段落进行验证:
def _chunking_function(chunk):
"""按段落分块的验证策略"""
if "\n\n" not in chunk:
return []
fragments = chunk.split("\n\n")
return [fragments[0] + "\n\n", "\n\n".join(fragments[1:])]
实战应用场景
内容安全检测
- 敏感词汇过滤
- 有害语言识别
- PII信息保护
格式规范验证
- JSON/XML结构检查
- 数据类型确认
- 长度限制验证
业务逻辑约束
- 特定领域规则
- 合规性检查
- 质量评估标准
开发最佳实践
- 明确验证目标:确定要检测的具体问题
- 选择合适的创建方式:简单逻辑用函数,复杂需求用类
- 合理设置失败处理:根据业务重要性选择on_fail策略
- 性能优化:对于高频率验证,考虑本地模型部署
核心文件位置
- 验证器基类:guardrails/validator_base.py
- 注册装饰器:使用@register_validator注册自定义验证器
- 数据类型定义:guardrails/types/validator.py
开始你的第一个验证器
按照以下步骤创建你的第一个自定义验证器:
- 导入必要的模块和基类
- 使用装饰器注册验证器
- 实现验证逻辑
- 测试验证效果
现在你已经掌握了Guardrails验证器开发的核心知识,可以开始为你的AI应用创建专属的安全规则了!🎯
通过自定义验证器,你能够为LLM应用构建更加智能、安全的防护体系,确保每一次AI交互都符合你的业务标准和安全要求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





