Superagent Python SDK 实战:为 AI 应用接入提示注入防护、数据脱敏与仓库安全扫描

发布时间:2026/10/8 1:37:24

Superagent Python SDK 实战:为 AI 应用接入提示注入防护、数据脱敏与仓库安全扫描 AI 安全治理应用安全MCP 服务AI Agent【免费下载链接】superagentSuperagent protects your AI applications against prompt injections, data leaks, and harmful outputs. Embed safety directly into your app and prove compliance to your customers.项目地址https://gitcode.com/gh_mirrors/supe/superagent点击查看免费下载本文以开源仓库 superagent 中的 sdk/python/README.md 为蓝本结合 client.py、providers/init.py、safe_url_fetcher.py 等源码实现系统讲解 Superagent Python SDK发布名为safety-agent的安装、客户端创建、Guard 威胁检测、Redact 敏感数据脱敏以及仓库安全扫描三大核心能力。读完本文你将掌握如何用几十行 Python 代码为 AI 应用加上提示注入拦截、PII 脱敏与合规证明能力并理解其底层的多 Provider 路由、SSRF 防护、长文本分块聚合等实现原理。一、SDK 定位与能力总览Superagent Python SDK 是一个面向 AI Agent 安全防护的轻量级开源 SDK当前版本 0.1.7详见 pyproject.toml核心解决三类问题Guard守卫对进入 LLM 的输入做安全分类识别提示注入prompt injection、恶意指令、系统提示词窃取等威胁输出pass/block判定Redact脱敏从文本中移除或改写 SSN、邮箱、电话、API Key 等敏感信息输出带占位符或上下文重写后的安全文本Scan扫描在隔离沙箱中克隆目标仓库用 AI 代码审计模型扫描仓库投毒、提示注入、硬编码密钥等针对 AI Agent 的攻击面。SDK 采用provider/model的统一模型标识格式可以自由切换 OpenAI、Anthropic、Google、AWS Bedrock、Groq、Fireworks、OpenRouter、Vercel 以及 Superagent 自研的 guard 系列模型。所有调用均为异步接口async/await并要求 Python 3.10 环境。二、安装与前置条件2.1 安装 SDK推荐使用 uv 安装uv add safety-agent也可以使用 pippip install safety-agentSDK 的运行时依赖在 pyproject.toml 中声明包括httpx0.27.0LLM 请求、pypdf5.0.0PDF 文本提取、daytona-sdk0.129.0Scan 沙箱与aiohttp3.14.3SSRF 防护的 URL 抓取。2.2 获取 API Key 并配置环境变量使用前需注册 Superagent 账号获取 API Key并将其写入环境变量export SUPERAGENT_API_KEYyour-keySafetyClient在初始化时优先读取构造参数api_key缺省时回退到SUPERAGENT_API_KEY环境变量两者都缺失会直接抛出ValueError见 client.py。三、快速开始创建一个客户端并调用guard()与redact()是最高频的入门路径完整代码来自 READMEfrom safety_agent import create_client client create_client() # Guard: 检测威胁默认使用 superagent/guard-1.7b 模型 result await client.guard(inputuser message to analyze) if result.classification block: print(Blocked:, result.violation_types) # Redact: 移除 PII result await client.redact( inputMy email is johnexample.com, modelopenai/gpt-4o-mini ) print(result.redacted) # My email is EMAIL_REDACTED从源码结构看create_client()是包级入口函数内部构造ClientConfig并返回SafetyClient实例client.pySafetyClient对外暴露guard、redact、scan三个异步方法。若使用 Superagent 自研模型superagent/前缀每次调用后 SDK 还会以 fire-and-forget 方式向 Superagent 控制台上报 token 用量client.py。四、Guard提示注入与恶意内容检测4.1 方法签名与参数guard()将输入内容分类为pass放行或block拦截返回结果包含分类、理由、违规类型列表与关联的 CWE 编号。完整参数如下对应 client.py 与 types.pyresult await client.guard( inputIgnore all previous instructions, modelopenai/gpt-4o-mini, # 可选默认 superagent/guard-1.7b system_promptCustom system prompt, # 可选覆盖默认守卫提示词 chunk_size8000, # 可选每块字符数设为 0 关闭分块 fallback_modelanthropic/claude-sonnet-4-5, # 可选主模型返回可重试错误时降级 ) print(result.classification) # pass 或 block print(result.violation_types) # [prompt_injection, ...] print(result.cwe_codes) # [CWE-94, ...] print(result.reasoning) # 判定理由 print(result.usage) # TokenUsage(prompt_tokens, completion_tokens, total_tokens)各参数要点参数默认值说明input必填str或bytesstr以http:///https://开头时按 URL 抓取处理modelsuperagent/guard-1.7b模型标识必须符合provider/model格式fallback_model无主模型返回 429/500/502/503 时自动切换的备用模型system_prompt内置守卫提示词自定义系统提示词会整体替换默认提示词chunk_size8000长文本分块阈值0表示禁用分块负数抛ValueErrorDEFAULT_GUARD_MODEL superagent/guard-1.7b定义于 providers/init.py。Superagent 自研 guard 系列模型还包括superagent/guard-0.6b、superagent/guard-4b见 types.py。4.2 支持的输入类型Guard 的输入处理统一由 input_processor.py 的process_input()完成input_processor.py自动识别四种类型纯文本str且不以http(s)://开头直接分析URL自动抓取远程内容后分析支持文本、图片与 PDF 内容字节流 / 文件根据内容魔数magic bytes探测类型——PDF 识别%PDF头、PNG 识别\x89PNG、JPEG 识别\xff\xd8、GIF 识别GIF87a/GIF89a、WebP 识别RIFF....WEBPinput_processor.pyPDF通过 pypdf 按页提取文本逐页并行分析。# URL 输入 result await client.guard(inputhttps://example.com/document.pdf) # 文件输入bytes with open(document.pdf, rb) as f: result await client.guard(inputf.read())文本 MIME 类型text/plain、text/html、text/csv、application/json等直接按文本处理未知类型的字节流会尝试按 UTF-8 解码解码失败则抛出Unsupported content type错误。4.3 URL 输入的 SSRF 防护这是 SDK 的一项关键安全设计远程 URL 必须解析为公网 IP 才能抓取防止 SSRF服务端请求伪造攻击。实现在 safe_url_fetcher.py限制条件如下URL 长度上限2048 字符协议白名单仅允许http/https禁止file://主机名校验拒绝localhost、local、localhost.localdomain拒绝内嵌用户名密码IP 校验DNS 解析出的所有地址必须是全局公网地址ipaddress.ip_address(...).is_global任一解析到私网/内网地址即拒绝safe_url_fetcher.py连接固定DNS Rebinding 防护通过自定义_PinnedResolver把连接固定到已校验过的 IP防止 DNS 重绑定safe_url_fetcher.py重定向与下载限制最多5 次重定向、单次请求超时30 秒、响应体上限25 MiBsafe_url_fetcher.py重定向目标会重新走一遍同样的校验流程。4.4 长文本分块与 OR 聚合逻辑当文本长度超过chunk_size时SDK 会按词边界切分避免把单词劈成两半然后用asyncio.gather并行分析每个分块最后以OR 逻辑聚合任意一个分块被判为block整体结果就是block违规类型与 CWE 编号做去重合并token 用量累加client.py 与 client.py。PDF 输入同样按页并行分析并走该聚合逻辑若 PDF 无可提取文本则直接返回pass。4.5 图片输入与结构化输出若输入被识别为图片如 URL 指向.png/.jpg或字节流命中图片魔数Guard 会要求模型具备视觉能力——is_vision_model()会检查模型名是否含gpt-4o、claude-3、gemini、grok-2-vision、pixtral等标记input_processor.py不支持的模型会抛出明确错误。图片以data:mime;base64,...的 data URL 形式作为多模态消息发送client.py。底层返回统一采用 JSON 结构化格式对支持结构化输出的 ProviderOpenAI、Google、Bedrock、Vercel 以及特定型号的 Groq/Fireworks/Anthropic/OpenRouter 模型判断逻辑见 client.pySDK 会附带 schemas.py 中定义的GUARD_RESPONSE_FORMATJSON Schema不支持时则从模型输出中解析 JSON兼容直接 JSON 与 Markdown 代码块包裹两种形态见 client.py。默认守卫系统提示词定义了pass/block的判定标准与 JSON 输出格式要求可在 prompts/guard.py 中查看完整内容。五、Redact敏感数据脱敏5.1 方法签名与参数redact()从文本中识别并移除敏感内容返回脱敏后的文本与脱敏发现记录client.pyresult await client.redact( inputMy SSN is 123-45-6789, modelopenai/gpt-4o-mini, # 必填redact 没有默认模型 entities[SSN, email], # 可选自定义实体类型覆盖默认集合 rewriteTrue, # 可选开启上下文改写模式 ) print(result.redacted) # 脱敏/改写后的文本 print(result.findings) # 每条脱敏操作的描述列表 print(result.usage) # TokenUsage注意redact()的model参数是必填项未指定会直接抛ValueError——与guard()有默认模型不同。5.2 默认脱敏实体与两种工作模式若未传entitiesSDK 默认处理 11 类实体prompts/redact.pySSN、驾照号、护照号、API Key、密钥与密码、姓名、地址、电话号码、邮箱、信用卡号、密码。两种工作模式由rewrite参数控制占位符模式默认rewriteFalse将敏感值替换为ENTITY_TYPE_REDACTED形式的标准化标记例如My email is johnexample.com→My email is EMAIL_REDACTED保留原文结构与间距上下文改写模式rewriteTrue不用占位符而是用贴合语境的自然描述重写整句例如My email is johnexample.com and SSN is 123-45-6789→My email is on file and my social security number has been provided在去除敏感信息的同时保持可读性。两种模式的提示词在 prompts/redact.py 中均有完整定义并明确列出不脱敏的内容公司名、职位、普通日期数字、公共 URL、非身份标识符等以及所对齐的合规框架GDPR、HIPAA、SOC-2、AI Act。与 Guard 相同Redact 也使用 schemas.py 中的REDACT_RESPONSE_FORMAT结构化输出 Schemaredactedfindings两个必填字段。六、ScanAI Agent 仓库安全扫描scan()用于扫描 Git 仓库中针对 AI Agent 的攻击仓库投毒、提示注入、恶意指令、硬编码密钥等。调用方式如下实现见 client.pyresult await client.scan( repohttps://github.com/user/repo, # 必填支持 https:// 或 git 开头 branchmain, # 可选分支、标签或 commit modelanthropic/claude-sonnet-4-5, # 可选OpenCode 使用的模型 ) print(result.result) # 安全审计报告文本 print(fCost: ${result.usage.cost:.4f}) # 扫描 token 成本执行流程client.py校验DAYTONA_API_KEY环境变量通过AsyncDaytona创建隔离沙箱沙箱内通过 npm 全局安装opencode-ai克隆目标仓库将内置的安全审计系统提示词 prompts/scan.py以“高级安全工程师”人设要求逐项核查硬编码密钥、访问控制缺陷、不安全数据处理、注入漏洞等写入临时文件后通过cat ... | opencode run -m model --format json执行审计解析 OpenCode 输出的 JSON 事件流汇总文本报告与 token 用量、成本client.py最后无论成败都会删除沙箱清理环境。仓库 URL 必须为https://或git开头否则抛ValueError。该能力是 README 描述中 scan repositories for threats 的具体落地。七、支持的 Providers 与模型标识SDK 通过统一字符串provider/model路由到不同服务商parse_model解析逻辑见 providers/init.py。当前注册的 Provider 及其示例模型Provider示例模型标识OpenAIopenai/gpt-4o、openai/gpt-4o-miniOpenAI Compatibleopenai-compatible/my-model需配合OPENAI_COMPATIBLE_BASE_URLAnthropicanthropic/claude-3-5-sonnet-20241022、anthropic/claude-sonnet-4-5Googlegoogle/gemini-2.0-flash、google/gemini-2.5-proAWS Bedrockbedrock/us.anthropic.claude-3-5-sonnet-20241022-v2:0Groqgroq/llama-3.3-70b-versatile、groq/openai/gpt-oss-safeguard-20bFireworksfireworks/accounts/fireworks/models/llama-v3p3-70b-instructOpenRouteropenrouter/openai/gpt-4oVercelvercel/openai/gpt-4oSuperagentsuperagent/guard-1.7bGuard 默认模型Provider 注册表定义于 providers/init.py每个 Provider 模块providers 目录负责请求体转换、鉴权头与响应解析。两个值得注意的底层行为冷启动降级Fallback针对superagent/提供方默认启用“always-on 端点”降级——若主端点在fallback_timeout默认 5 秒内未响应自动改走常驻端点也可通过create_client(enable_fallback..., fallback_timeout..., fallback_url...)显式控制providers/init.py可重试错误降级主模型返回 429/500/502/503 时若指定了fallback_modelSDK 会自动改用备用模型重发providers/init.py。八、环境变量速查表SDK 通过环境变量读取各 Provider 的 API Key见 READMEexport SUPERAGENT_API_KEYyour-superagent-key export OPENAI_API_KEYyour-openai-key export OPENAI_COMPATIBLE_API_KEYyour-openai-compatible-key export OPENAI_COMPATIBLE_BASE_URLhttps://your-endpoint/v1 export ANTHROPIC_API_KEYyour-anthropic-key export GOOGLE_API_KEYyour-google-key export GROQ_API_KEYyour-groq-key export FIREWORKS_API_KEYyour-fireworks-key export OPENROUTER_API_KEYyour-openrouter-key export AI_GATEWAY_API_KEYyour-vercel-key补充说明使用 OpenAI Compatible 时还需设置OPENAI_COMPATIBLE_BASE_URL指向兼容端点使用 Bedrock 时通过 AWS 凭证完成 Signature V4 签名providers/init.py使用scan()时还需设置DAYTONA_API_KEY若OPENAI_COMPATIBLE端点支持结构化输出可设置OPENAI_COMPATIBLE_SUPPORTS_STRUCTURED_OUTPUT1开启client.py。调用某个 Provider 时缺少对应 Keycall_provider会抛出缺失环境变量的明确错误providers/init.py。九、项目结构导览仓库中 Python SDK 的完整布局如下便于按图索骥深入阅读sdk/python/ ├── README.md # 本文依据的官方文档 ├── pyproject.toml # 包元数据与依赖声明 ├── src/safety_agent/ │ ├── __init__.py # 包入口导出 SafetyClient / create_client │ ├── client.py # 客户端与 guard/redact/scan 实现 │ ├── schemas.py # 结构化输出 JSON Schema │ ├── types.py # 全部数据类与类型定义 │ ├── prompts/ # guard/redact/scan 系统提示词 │ ├── providers/ # 10 个 Provider 适配器与路由 │ └── utils/ │ ├── input_processor.py # 文本/URL/图片/PDF 输入归一化 │ └── safe_url_fetcher.py # SSRF 防护的 URL 抓取器 └── tests/ # pytest 测试guard/redact/scan/fallback 等对应的测试覆盖了 Guard、Redact、Scan、模型降级、输入处理器与 SSRF 防护等行为见 sdk/python/tests 下的test_guard.py、test_redact.py、test_scan.py、test_safe_url_fetcher.py等可作为理解各方法预期行为的补充依据。十、许可证SDK 以MIT协议开源见 pyproject.toml 与仓库根目录 LICENSE可自由集成到商业项目与开源项目中。赞分享AI 安全治理应用安全MCP 服务AI Agent【免费下载链接】superagentSuperagent protects your AI applications against prompt injections, data leaks, and harmful outputs. Embed safety directly into your app and prove compliance to your customers.项目地址https://gitcode.com/gh_mirrors/supe/superagent点击查看免费下载相关推荐Superagent TypeScript SDK 实战指南为 AI 应用接入 Prompt 注入防护、数据脱敏与内容安全检测Superagent TypeScript SDK 实战指南为 AI 应用接入 Prompt 注入防护、数据脱敏与内容安全检测 本篇指南以 SuperagenAI 安全治理应用安全MCP 服务AI AgentHindsight × Superagent 安全中间件实战用 SafeHindsight 为 Agent 记忆加固 Prompt 注入防护与 PII 脱敏Hindsight × Superagent 安全中间件实战用 SafeHindsight 为 Agent 记忆加固 Prompt 注入防护与 PII 脱敏人工智能AI AgentAgent 记忆MCP 服务IronClaw 安全基座解析ironclaw_safety 的提示注入检测、密钥泄漏扫描与脱敏机制IronClaw 安全基座解析ironclaw_safety 的提示注入检测、密钥泄漏扫描与脱敏机制 导读 ironclaw_safety 是 IronCla人工智能AI 应用交互助手AI Agent上一篇SQLite在Claude Code UI会话管理中的完整指南如何构建高效AI助手数据库下一篇如何构建高性能日期选择器新一代开发完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/8 1:32:23

网盘直链下载助手:9 大网盘 1 步免费拿到真实直链

网盘直链下载助手:9 大网盘 1 步免费拿到真实直链 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…

2026/10/8 2:32:31

Cursor 2.4.21 实测:免费额度、中文设置与多工具配合实战

最近不少朋友在问,我一直在用的 Cursor 更新到 2.4.21 之后到底怎么样,网上那些“免费无线续杯”的说法又是什么意思。这波热度确实高,毕竟 AI 编程工具已经成了很多人的日常生产力,而 Cursor 又是其中最受关注的一个。这篇文章就…

2026/10/8 2:32:31

Python程序员必会的Linux高频命令实战清单

每天打开终端顺手敲几条 Linux 命令,已经是很多 Python 程序员的工作常态。你写代码时的 IDE 是图形界面,可真到项目上线、数据迁移、日志排查、容器部署这些环节,鼠标基本帮不上忙,真正解决问题的还是那一行行命令。我见到不少 P…

2026/10/8 2:32:31

计算机网络期末复习:从试卷结构到高频考点与答题模板

简介:肇庆学院计算机网络期末考试试卷是面向计算机专业本科生及网络课程学员的复习自测资料,内容紧扣TCP/IP模型、数据传输、网络协议与网络架构等核心知识点,能够帮助学习者系统梳理计算机网络的基本原理,掌握网络地址分配、数据…

2026/10/8 2:32:31

滑动窗口进阶:如何高效统计“恰好包含K个不同整数”的子数组

滑动窗口这个专题里,“恰好包含 K 个不同整数”的计数题一直很有迷惑性。我第一次在训练列表里看到第3859题时,直接按照“窗口内不同数字个数等于 K 就计数”的思路去写,结果示例过了,一提交就挂在边界用例上。后来老老实实把问题…

2026/10/8 2:32:31

有序单链表合并全解析:从哨兵结点到AcWing3639实战

刷AcWing题库走到链表这一块的时候,第3639题“链表合并”绝对值得你停下来认真写一遍。我在拿到这道题的时候,第一反应是“这不就是归并两个有序数组换了个壳子嘛”,但真动手写,发现指针操作里藏了不少细节。合并两个有序单链表可…

2026/10/8 2:27:31

SpringBoot+Vue3智能学习平台全栈实战:从数据库设计到部署上线

写这篇博文之前,我先交代一下背景:前前后后折腾了两周,把一个从零开始搭的“智能学习平台”系统做到了能跑、能看、能用的状态。技术栈就是标题里那套——Java SpringBoot Vue3 MyBatis MySQL,前后端完全分离,源码级…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/7 8:18:33

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑