ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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),仅供参考
返回列表