GuardrailsAI验证框架设置Skill guardrails-ai-setup

Guardrails AI验证框架设置技能,用于为大型语言模型(LLM)应用配置输入输出验证、内容安全检查和结构化输出强制执行。该技能专注于实现AI安全护栏,防止提示注入攻击,确保内容合规性,并强制LLM输出符合预定格式和标准。关键词:AI安全,LLM验证,提示注入防御,内容审核,结构化输出,Guardrails AI,大模型安全,AI应用开发。

AI应用 0 次安装 0 次浏览 更新于 2/23/2026

name: guardrails-ai-setup description: Guardrails AI验证框架设置,用于LLM应用。实现输入/输出验证、安全检查以及结构化输出强制执行。 allowed-tools: Read, Grep, Write, Edit, Bash, Glob, WebFetch

guardrails-ai-setup

配置Guardrails AI验证框架,以确保LLM输出满足质量、安全性和结构性要求。实现用于输入净化、输出格式强制执行和安全约束的验证器。

概述

Guardrails AI提供:

  • LLM调用前的输入验证
  • LLM响应后的输出验证
  • 结构化输出强制执行(JSON、XML等)
  • 来自Guardrails Hub的预构建验证器
  • 自定义验证器创建
  • 自动重试和纠正机制

功能

输入验证

  • 净化用户输入
  • 检测提示注入尝试
  • 验证输入格式和长度
  • 处理前检查PII(个人身份信息)

输出验证

  • 强制执行结构化输出模式
  • 验证内容准确性
  • 检查有害内容
  • 验证事实一致性

安全约束

  • 内容审核
  • 毒性检测
  • 偏见检查
  • 幻觉检测

集成特性

  • LangChain集成
  • 流式支持
  • 自动重试
  • 纠正策略

使用方法

基本设置

from guardrails import Guard
from guardrails.hub import ValidJson, ToxicLanguage, DetectPII

# 使用验证器创建guard
guard = Guard().use_many(
    ValidJson(),
    ToxicLanguage(on_fail="fix"),
    DetectPII(on_fail="fix")
)

# 与LLM一起使用
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4")

result = guard(
    llm,
    prompt="为笔记本电脑生成产品描述",
    max_tokens=500
)

print(result.validated_output)

基于模式的验证

from guardrails import Guard
from pydantic import BaseModel, Field
from typing import List

class ProductReview(BaseModel):
    """产品评论输出的模式。"""
    rating: int = Field(ge=1, le=5, description="1-5的评分")
    summary: str = Field(max_length=200, description="简要总结")
    pros: List[str] = Field(min_items=1, max_items=5)
    cons: List[str] = Field(min_items=1, max_items=5)
    recommendation: bool

# 从模式创建guard
guard = Guard.from_pydantic(ProductReview)

result = guard(
    llm,
    prompt="""分析此产品并提供结构化评论:
    产品:无线降噪耳机
    价格:299美元
    功能:30小时电池续航,主动降噪,蓝牙5.3
    """,
)

# 结果是一个经过验证的ProductReview实例
review = result.validated_output
print(f"评分:{review.rating}")
print(f"总结:{review.summary}")

使用Guardrails Hub验证器

from guardrails import Guard
from guardrails.hub import (
    CompetitorCheck,
    ProfanityFree,
    ReadingTime,
    RestrictToTopic,
    SensitiveTopic,
    ToxicLanguage,
    ValidJson,
    ValidLength
)

# 从hub安装验证器
# guardrails hub install hub://guardrails/toxic_language

# 组合多个验证器
guard = Guard().use_many(
    ValidJson(on_fail="reask"),
    ToxicLanguage(threshold=0.8, on_fail="fix"),
    ProfanityFree(on_fail="fix"),
    ValidLength(min=100, max=1000, on_fail="reask"),
    RestrictToTopic(
        valid_topics=["技术", "软件"],
        on_fail="reask"
    )
)

自定义验证器

from guardrails import Validator, register_validator
from guardrails.validators import ValidationResult

@register_validator(name="custom/no-urls", data_type="string")
class NoURLs(Validator):
    """检查文本中URL的验证器。"""

    def validate(self, value: str, metadata: dict) -> ValidationResult:
        import re
        url_pattern = r'https?://\S+'

        if re.search(url_pattern, value):
            return ValidationResult(
                outcome="fail",
                error_message="文本包含不允许的URL",
                fix_value=re.sub(url_pattern, "[URL已移除]", value)
            )

        return ValidationResult(outcome="pass")

# 使用自定义验证器
guard = Guard().use(NoURLs(on_fail="fix"))

提示注入防御

from guardrails import Guard
from guardrails.hub import DetectPromptInjection

# 为提示注入创建输入guard
input_guard = Guard().use(
    DetectPromptInjection(
        on_fail="exception",
        threshold=0.9
    )
)

def safe_chat(user_input: str) -> str:
    # 首先验证输入
    try:
        input_guard.validate(user_input)
    except Exception as e:
        return "我无法处理该请求。"

    # 处理安全输入
    return llm.invoke(user_input)

与NeMo Guardrails集成

from guardrails import Guard
from nemoguardrails import LLMRails, RailsConfig

# 将Guardrails AI与NeMo Guardrails结合
config = RailsConfig.from_path("./config")
rails = LLMRails(config)

# 使用Guardrails AI进行结构化输出
output_guard = Guard.from_pydantic(OutputSchema)

async def guarded_chat(user_input: str) -> dict:
    # NeMo处理对话安全
    response = await rails.generate_async(
        messages=[{"role": "user", "content": user_input}]
    )

    # Guardrails AI验证结构
    validated = output_guard.validate(response["content"])

    return validated.validated_output

任务定义

const guardrailsAISetupTask = defineTask({
  name: 'guardrails-ai-setup',
  description: '为LLM应用配置Guardrails AI验证',

  inputs: {
    outputSchema: { type: 'object', required: false },
    validators: { type: 'array', required: true },
    onFailStrategy: { type: 'string', default: 'reask' },  // 'reask', 'fix', 'exception', 'filter'
    maxRetries: { type: 'number', default: 3 },
    enableInputValidation: { type: 'boolean', default: true },
    enableOutputValidation: { type: 'boolean', default: true }
  },

  outputs: {
    guardConfigured: { type: 'boolean' },
    validatorsInstalled: { type: 'array' },
    artifacts: { type: 'array' }
  },

  async run(inputs, taskCtx) {
    return {
      kind: 'skill',
      title: '配置Guardrails AI验证',
      skill: {
        name: 'guardrails-ai-setup',
        context: {
          outputSchema: inputs.outputSchema,
          validators: inputs.validators,
          onFailStrategy: inputs.onFailStrategy,
          maxRetries: inputs.maxRetries,
          enableInputValidation: inputs.enableInputValidation,
          enableOutputValidation: inputs.enableOutputValidation,
          instructions: [
            '安装Guardrails AI包和hub验证器',
            '如果需要结构化输出,定义输出模式',
            '配置具有失败策略的选定验证器',
            '设置输入验证以防御提示注入',
            '配置输出验证以保障内容安全',
            '实现带有纠正策略的重试逻辑',
            '使用示例输入/输出测试验证管道',
            '记录验证规则和预期行为'
          ]
        }
      },
      io: {
        inputJsonPath: `tasks/${taskCtx.effectId}/input.json`,
        outputJsonPath: `tasks/${taskCtx.effectId}/result.json`
      }
    };
  }
});

适用流程

  • 系统提示护栏
  • 提示注入防御
  • 内容审核安全
  • 聊天机器人设计与实现

外部依赖

  • guardrails-ai Python包
  • Guardrails Hub账户(用于hub验证器)
  • LLM提供商(OpenAI、Anthropic等)
  • 可选:NeMo Guardrails用于对话安全

参考资料

相关技能

  • SK-SAF-001 内容审核API
  • SK-SAF-003 nemo-guardrails
  • SK-SAF-004 提示注入检测器
  • SK-SAF-005 PII脱敏

相关代理

  • AG-SAF-001 安全审计员
  • AG-SAF-002 提示注入防御者
  • AG-PE-001 系统提示工程师