news 2026/5/12 11:10:23

保障AI应用安全:OpenAI Agents SDK防护栏功能完整使用手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保障AI应用安全:OpenAI Agents SDK防护栏功能完整使用手册

保障AI应用安全:OpenAI Agents SDK防护栏功能完整使用手册

【免费下载链接】openai-agents-jsA lightweight, powerful framework for multi-agent workflows and voice agents项目地址: https://gitcode.com/gh_mirrors/ope/openai-agents-js

OpenAI Agents SDK是一个轻量级且功能强大的多智能体工作流和语音智能体框架,其防护栏功能为AI应用提供了全面的安全保障。本文将详细介绍如何使用这一功能,帮助开发者轻松构建安全可靠的AI应用。

为什么AI应用安全防护至关重要 🛡️

随着AI技术的快速发展,AI应用在各个领域得到广泛应用。然而,AI应用也面临着诸多安全风险,如敏感信息泄露、不当内容生成等。OpenAI Agents SDK的防护栏功能正是为了解决这些问题而设计,它可以在AI应用的输入和输出环节进行安全检查,有效防范安全风险。

OpenAI Agents SDK防护栏功能概述

OpenAI Agents SDK的防护栏功能主要包括输入防护栏和输出防护栏两种类型。输入防护栏用于检查和过滤输入到AI应用的数据,防止恶意输入或敏感信息进入;输出防护栏则用于检查AI应用生成的输出结果,确保输出内容符合安全规范。

输入防护栏:阻止恶意输入和敏感信息

输入防护栏是保障AI应用安全的第一道防线。通过定义输入防护栏,开发者可以对输入数据进行严格的检查和过滤。

定义输入防护栏的基本方法

使用defineToolInputGuardrail函数可以定义一个输入防护栏。以下是一个简单的示例,用于阻止包含敏感信息(如API密钥)的输入:

const blockSecrets = defineToolInputGuardrail({ name: 'block_secrets', run: async ({ toolCall }) => { const args = JSON.parse(toolCall.arguments) as { text?: string }; if (args.text?.includes('sk-')) { return ToolGuardrailFunctionOutputFactory.rejectContent( 'Remove secrets before calling this tool.', ); } return ToolGuardrailFunctionOutputFactory.allow(); }, });

在这个示例中,blockSecrets防护栏会检查输入数据中是否包含sk-(通常是API密钥的开头),如果包含则拒绝该输入。

在工具中应用输入防护栏

定义好输入防护栏后,可以将其应用到具体的工具中。例如,在classify_text工具中应用blockSecrets防护栏:

const classifyTool = tool({ name: 'classify_text', description: 'Classify text for internal routing.', parameters: z.object({ text: z.string(), }), inputGuardrails: [blockSecrets], execute: ({ text }) => `length:${text.length}`, });

这样,当调用classify_text工具时,会先经过blockSecrets防护栏的检查。

输出防护栏:确保输出内容安全合规

输出防护栏用于检查AI应用生成的输出结果,防止不当内容或敏感信息被输出。

定义输出防护栏的基本方法

使用defineToolOutputGuardrail函数可以定义一个输出防护栏。以下是一个示例,用于检查输出结果中是否包含敏感信息:

const redactOutput = defineToolOutputGuardrail({ name: 'redact_output', run: async ({ output }) => { const text = String(output ?? ''); if (text.includes('sk-')) { return ToolGuardrailFunctionOutputFactory.rejectContent( 'Output contained sensitive data.', ); } return ToolGuardrailFunctionOutputFactory.allow(); }, });

在这个示例中,redactOutput防护栏会检查输出结果中是否包含sk-,如果包含则拒绝输出该内容。

在工具中应用输出防护栏

与输入防护栏类似,输出防护栏也可以应用到工具中。例如,在classify_text工具中同时应用输入防护栏和输出防护栏:

const classifyTool = tool({ name: 'classify_text', description: 'Classify text for internal routing.', parameters: z.object({ text: z.string(), }), inputGuardrails: [blockSecrets], outputGuardrails: [redactOutput], execute: ({ text }) => `length:${text.length}`, });

这样,classify_text工具在执行过程中,既会检查输入数据,也会检查输出结果。

多防护栏组合使用:增强安全防护效果

为了提高AI应用的安全性,可以组合使用多个防护栏。例如,可以定义多个输入防护栏和输出防护栏,对输入和输出进行多维度的检查。

多输入防护栏的应用

定义多个输入防护栏,并将它们同时应用到工具中:

const firstInputGuardrail = defineToolInputGuardrail({ name: 'first_input_guardrail', run: async ({ toolCall }) => { // 检查逻辑1 return ToolGuardrailFunctionOutputFactory.allow(); }, }); const secondInputGuardrail = defineToolInputGuardrail({ name: 'second_input_guardrail', run: async ({ toolCall }) => { // 检查逻辑2 return ToolGuardrailFunctionOutputFactory.allow(); }, }); const multiGuardrailTool = tool({ name: 'multi_guardrail_tool', description: 'Tool with multiple input guardrails', parameters: z.object({ text: z.string() }), inputGuardrails: [firstInputGuardrail, secondInputGuardrail], execute: ({ text }) => text, });

当调用multiGuardrailTool工具时,会依次执行firstInputGuardrailsecondInputGuardrail防护栏的检查,只有所有防护栏都允许通过,工具才会执行。

多输出防护栏的应用

同样,也可以定义多个输出防护栏并组合使用:

const firstOutputGuardrail = defineToolOutputGuardrail({ name: 'first_output_guardrail', run: async ({ output }) => { // 检查逻辑1 return ToolGuardrailFunctionOutputFactory.allow(); }, }); const secondOutputGuardrail = defineToolOutputGuardrail({ name: 'second_output_guardrail', run: async ({ output }) => { // 检查逻辑2 return ToolGuardrailFunctionOutputFactory.allow(); }, }); const multiOutputGuardrailTool = tool({ name: 'multi_output_guardrail_tool', description: 'Tool with multiple output guardrails', parameters: z.object({ text: z.string() }), outputGuardrails: [firstOutputGuardrail, secondOutputGuardrail], execute: ({ text }) => text, });

防护栏在智能体中的应用

防护栏不仅可以应用到工具中,还可以在智能体层面进行配置,对整个智能体的输入和输出进行安全防护。

创建带有防护栏的智能体

const agent = new Agent({ name: 'Classifier', instructions: 'Classify incoming text.', tools: [classifyTool], });

在这个示例中,智能体Classifier使用了带有输入和输出防护栏的classifyTool工具,从而确保在处理文本分类任务时的安全性。

实际应用案例:文本分类工具的安全防护

以下是一个完整的文本分类工具安全防护案例,展示了如何结合输入防护栏和输出防护栏来保障AI应用的安全。

import { Agent, ToolGuardrailFunctionOutputFactory, defineToolInputGuardrail, defineToolOutputGuardrail, tool, } from '@openai/agents'; import { z } from 'zod'; // 定义输入防护栏,阻止包含敏感信息的输入 const blockSecrets = defineToolInputGuardrail({ name: 'block_secrets', run: async ({ toolCall }) => { const args = JSON.parse(toolCall.arguments) as { text?: string }; if (args.text?.includes('sk-')) { return ToolGuardrailFunctionOutputFactory.rejectContent( 'Remove secrets before calling this tool.', ); } return ToolGuardrailFunctionOutputFactory.allow(); }, }); // 定义输出防护栏,检查输出结果中是否包含敏感信息 const redactOutput = defineToolOutputGuardrail({ name: 'redact_output', run: async ({ output }) => { const text = String(output ?? ''); if (text.includes('sk-')) { return ToolGuardrailFunctionOutputFactory.rejectContent( 'Output contained sensitive data.', ); } return ToolGuardrailFunctionOutputFactory.allow(); }, }); // 创建带有防护栏的文本分类工具 const classifyTool = tool({ name: 'classify_text', description: 'Classify text for internal routing.', parameters: z.object({ text: z.string(), }), inputGuardrails: [blockSecrets], outputGuardrails: [redactOutput], execute: ({ text }) => `length:${text.length}`, }); // 创建智能体并使用该工具 const agent = new Agent({ name: 'Classifier', instructions: 'Classify incoming text.', tools: [classifyTool], });

通过这个案例,我们可以看到防护栏功能如何有效地阻止敏感信息的输入和输出,保障AI应用的安全。

总结:构建安全可靠的AI应用

OpenAI Agents SDK的防护栏功能为AI应用提供了全面的安全保障。通过定义输入防护栏和输出防护栏,开发者可以有效地防范敏感信息泄露、恶意输入等安全风险。在实际应用中,建议根据具体需求组合使用多个防护栏,以增强安全防护效果。

要开始使用OpenAI Agents SDK的防护栏功能,你可以克隆仓库:https://gitcode.com/gh_mirrors/ope/openai-agents-js,然后参考examples/docs/guardrails/toolGuardrails.ts中的示例代码进行开发。

希望本文能够帮助你更好地理解和使用OpenAI Agents SDK的防护栏功能,构建安全可靠的AI应用!

【免费下载链接】openai-agents-jsA lightweight, powerful framework for multi-agent workflows and voice agents项目地址: https://gitcode.com/gh_mirrors/ope/openai-agents-js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 11:09:58

大语言模型评测实战指南:从基准测试到技术选型

1. 项目概述与核心价值最近在折腾大语言模型(LLM)的应用和评测,发现了一个宝藏仓库:onejune2018/Awesome-LLM-Eval。这不仅仅是一个简单的工具列表,而是一个由社区驱动的、系统化的大语言模型评估资源大全。对于任何深…

作者头像 李华
网站建设 2026/5/12 11:09:23

从NLP基础到LLM实战:手把手构建大模型全栈能力

1. 从NLP到LLM:为什么你需要一个坚实的“地基” 最近几年,大语言模型(LLM)的火爆程度有目共睹,ChatGPT、Claude、文心一言这些名字几乎成了日常谈资。很多开发者,尤其是刚入行的朋友,可能一上来…

作者头像 李华
网站建设 2026/5/12 11:07:58

DistroAV:3步构建专业级网络视频制作系统,告别复杂线缆连接

DistroAV:3步构建专业级网络视频制作系统,告别复杂线缆连接 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 你是否曾为视频制作中的线缆混乱而烦恼…

作者头像 李华
网站建设 2026/5/12 11:06:54

免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:公司只允许装签名应用 给察元AI打企业内部分发包

公司只允许装签名应用 给察元AI打企业内部分发包 公司规定终端只能装数字签名过的应用,第三方安装包必须经过 IT 审批。这种环境下要把察元AI 桌面单机版铺到几十台电脑上,最稳的做法是用公司证书重签一份内部分发包。这一篇把流程讲清楚。 先理解下数字…

作者头像 李华
网站建设 2026/5/12 11:06:53

终极指南:3分钟解决Windows苹果设备驱动缺失难题的完整方案

终极指南:3分钟解决Windows苹果设备驱动缺失难题的完整方案 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/g…

作者头像 李华
网站建设 2026/5/12 11:06:51

AI时代下加快制造企业人才建设

在AI时代,制造企业的人才需求已从“熟练操作工”转向“跨界复合型人才”。加速人才建设的核心不再是单纯的IT培训,而是培养能够理解工业机理并驾驭AI工具的“工业数字原住民”。以下是加速人才建设的四个关键策略:1. 培养“翻译官”型复合人才…

作者头像 李华