教程6:防护措施与验证


文档摘要

️ 教程 6:防护措施与验证 通过 OpenAI Agents SDK,掌握 AI 安全与验证技术!本教程将教你如何实现输入和输出防护措施,以创建安全、可靠的 AI 助手,在助手执行前后对请求和响应进行验证。 你将学到的内容 输入防护措施:在处理前验证并过滤用户输入 输出防护措施:在交付前检查并清理助手的响应 防护措施助手:专门用于验证和安全检查的助手 触发器系统:当验证失败时自动阻止 异常处理:针对防护措施违规的正确错误处理 生产安全:面向实际场景的 AI 生产安全模式 核心概念:什么是防护措施? 防护措施是自动化的安全机制,用于验证输入和输出,确保 AI 助手在可接受的范围内运行。

️ 教程 6:防护措施与验证

通过 OpenAI Agents SDK,掌握 AI 安全与验证技术!本教程将教你如何实现输入和输出防护措施,以创建安全、可靠的 AI 助手,在助手执行前后对请求和响应进行验证。

你将学到的内容

  • 输入防护措施:在处理前验证并过滤用户输入
  • 输出防护措施:在交付前检查并清理助手的响应
  • 防护措施助手:专门用于验证和安全检查的助手
  • 触发器系统:当验证失败时自动阻止
  • 异常处理:针对防护措施违规的正确错误处理
  • 生产安全:面向实际场景的 AI 生产安全模式

核心概念:什么是防护措施?

防护措施是自动化的安全机制,用于验证输入和输出,确保 AI 助手在可接受的范围内运行。可以把防护措施看作是安全检查点,它们:

  • 阻止处理不适当或有害的内容
  • 拒绝违反安全策略的响应
  • 根据业务规则和约束验证输入
  • 确保符合内容政策
  • 提供自动错误处理和用户反馈

防护措施的关键概念

输入防护措施

在助手处理前验证用户输入:

@input_guardrail async def content_filter(ctx, agent, input) -> GuardrailFunctionOutput: # Check if input violates policies if is_inappropriate(input): return GuardrailFunctionOutput( tripwire_triggered=True, output_info="Content blocked for safety" ) return GuardrailFunctionOutput(tripwire_triggered=False)

输出防护措施

在交付前验证助手的响应:

@output_guardrail async def response_filter(ctx, agent, output) -> GuardrailFunctionOutput: # Check if response contains sensitive data if contains_sensitive_info(output): return GuardrailFunctionOutput( tripwire_triggered=True, output_info="Response blocked for safety" ) return GuardrailFunctionOutput(tripwire_triggered=False)

防护措施助手

专门用于验证逻辑的助手:

validation_agent = Agent( name="Content Validator", instructions="Check content for safety violations", output_type=SafetyCheck )

本演示展示了什么

1. 数学作业检测

  • 输入防护措施检测学术作业请求
  • 基于置信度的阻断与阈值验证
  • 使用 Pydantic 模型进行结构化输出验证

2. 内容安全验证

  • 输出防护措施检测不当内容
  • 基于严重程度的过滤(低、中、高)
  • 对违反策略的响应自动阻断

3. 异常处理

  • InputGuardrailTripwireTriggered exception handling
  • OutputGuardrailTripwireTriggered 异常处理
  • 优雅的错误恢复与用户反馈

4. 防护措施集成

  • 与现有助手工作流无缝集成
  • 单一助手上使用多个防护措施
  • 自定义验证逻辑与业务规则

学习目标

完成本教程后,你将理解:

  • ✅ 如何实现输入验证以过滤请求
  • ✅ 创建输出防护措施以确保响应安全
  • ✅ 构建专门的防护措施助手进行验证
  • ✅ 优雅地处理防护措施异常
  • ✅ 面向生产的 AI 应用安全模式

开始使用

  1. 安装 OpenAI Agents SDK

    pip install openai-agents
  2. 设置环境

    cp env.example .env # Edit .env and add your OpenAI API key
  3. 运行防护措施示例

    import asyncio from agent import guardrails_example, test_input_guardrail # Test guardrails system asyncio.run(guardrails_example()) asyncio.run(test_input_guardrail())

示例用例

输入防护措施测试

  • “我如何重置密码?” ✅(应通过)
  • “你能解这个方程吗:2x + 5 = 15?” (应触发作业检测)
  • “你的产品功能有哪些?” ✅(应通过)

输出防护措施测试

  • 正常的客户支持响应 ✅
  • 包含敏感信息的响应
  • 违反策略的内容

异常场景

  • 被阻断请求的优雅处理
  • 友好的错误提示
  • 记录与监控防护措施违规情况

防护措施关键模式

1. 输入验证模式

@input_guardrail async def validate_input(ctx, agent, input) -> GuardrailFunctionOutput: validation_result = await validate_with_ai(input) return GuardrailFunctionOutput( tripwire_triggered=validation_result.is_violation, output_info=validation_result.details )

2. 输出安全模式

@output_guardrail async def safety_check(ctx, agent, output) -> GuardrailFunctionOutput: safety_result = await check_safety(output.response) return GuardrailFunctionOutput( tripwire_triggered=safety_result.is_unsafe, output_info=safety_result.reason )

3. 异常处理模式

try: result = await Runner.run(protected_agent, user_input) return result.final_output except InputGuardrailTripwireTriggered as e: return "Request blocked by safety filters" except OutputGuardrailTripwireTriggered as e: return "Response blocked for safety reasons"

4. 基于置信度的阻断

return GuardrailFunctionOutput( tripwire_triggered=violation_detected and confidence > 0.7, output_info={"confidence": confidence, "reason": reason} )

防护措施最佳实践

  1. 分层防御:同时使用输入和输出防护措施,实现全面保护
  2. 置信度阈值:实施基于置信度的阻断,减少误报
  3. 清晰提示:提供有用的错误信息,引导用户提交恰当请求
  4. 性能优化:缓存验证结果,使用高效的验证模型
  5. 监控与日志记录:追踪防护措施违规情况,持续改进系统

高级模式

多级验证

agent = Agent( name="Protected Agent", input_guardrails=[content_filter, spam_detector, policy_checker], output_guardrails=[safety_validator, privacy_filter] )

上下文感知防护措施

@input_guardrail async def user_context_validator(ctx: RunContextWrapper[UserInfo], agent, input): user = ctx.context # Validate based on user permissions or context if user.permission_level < required_level: return GuardrailFunctionOutput(tripwire_triggered=True)

业务规则验证

@input_guardrail async def business_rules(ctx, agent, input) -> GuardrailFunctionOutput: # Validate against business constraints if violates_business_rules(input): return GuardrailFunctionOutput( tripwire_triggered=True, output_info="Request violates business policies" )

常见误区

  • 过度阻断:阈值设置过低可能阻断合法请求
  • 阻断不足:阈值设置过高可能导致有害内容通过
  • 性能影响:繁重的验证可能降低响应速度
  • 误报:训练不足的验证模型可能阻断有效请求

专业提示

  • 充分测试:为防护措施验证创建全面的测试套件
  • 监控指标:跟踪误报与漏报率
  • 迭代改进:根据实际使用情况持续优化验证逻辑
  • 用户反馈:为被阻断请求提供申诉流程
  • 逐步上线:逐步部署新防护措施并进行监控

生产注意事项

可扩展性

  • 使用高效的验证模型
  • 实现重复验证的缓存机制
  • 考虑异步验证以提升性能

监控

  • 记录所有防护措施决策以便分析
  • 跟踪违规模式与趋势
  • 监控系统性能影响

合规性

  • 使防护措施符合监管要求
  • 实施审计追踪以满足合规报告
  • 定期审查与更新验证规则

下一步

掌握防护措施后,你将准备好:

免责声明
本文档采用基于机器的 AI 翻译服务进行翻译。尽管我们力求准确,但请注意,自动翻译可能存在错误或不准确之处。应以原文语言版本的原始文档作为权威依据。如需获取关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


发布者: 作者: 转发
评论区 (0)
U