OhmRamwala/PromptForge

GitHub: OhmRamwala/PromptForge

PromptForge 是一款浏览器端的 LLM 红队工具包,用于在结构化环境中对多 provider 大模型进行 prompt 注入等攻击测试并生成防御分析报告。

Stars: 0 | Forks: 0

# PromptForge PromptForge 是一个基于浏览器的 AI 红队工作台,用于测试 LLM 和 agent 在真实的 prompt 注入、工具滥用和过度代理场景下的行为。它为您提供了一个结构化的环境,以运行攻击模板、比较不同 provider、检查 prompt 并生成防御分析报告。 该项目使用 React、TypeScript 和 Vite 构建。它在本地运行,并直接从您的浏览器调用 provider API。 ## 功能 - OWASP 风格的 LLM 攻击模板,涵盖 prompt 注入、不安全的输出处理、敏感数据泄露、过度代理、不安全的插件设计、模型窃取以及相关的 agent 风险。 - 支持 Gemini、OpenAI、Claude/Anthropic 和本地 Ollama 模型的多 provider 测试。 - 应用内输入 Gemini、OpenAI 和 Claude 的 API key。Key 仅保存在浏览器的 localStorage 中。 - 对抗模式,由 Gemini 驱动的红队助手会为定义了目标的模板建议下一个攻击 prompt。 - 防御分析,由 Gemini 驱动的 AISecOps 分析师会总结对话风险并建议缓解措施。 - 带有注入关键字高亮显示的 prompt 调试器。 - 保存在浏览器存储中的自定义攻击模板管理器。 - 模拟 agent 工具,用于测试工具使用行为和代理边界。 - 响应缓存,用于可重复的实验。 ## 技术栈 - React 19 - TypeScript - Vite - Google Generative AI SDK - 用于 OpenAI、Anthropic 和 Ollama 的直接浏览器 `fetch` 集成 ## 前置条件 - Node.js 18 或更高版本 - npm - 如果您想测试托管模型,至少需要一个 provider key: - 来自 Google AI Studio 的 Gemini API key - OpenAI API key - Anthropic API key - 可选:本地安装 Ollama 以进行本地模型测试 ## 快速开始 ``` npm install npm run dev ``` 打开 Vite 打印的本地 URL,通常是: ``` http://localhost:3000 ``` ## API Key PromptForge 需要在应用中输入 API key。 使用左侧的 Configuration 面板: 1. 选择一个 provider:Gemini、OpenAI、Claude 或 Ollama。 2. 在 API Credentials 框中粘贴 API key 或 base URL。 3. 等待验证指示器。 4. 选择模型并开始测试。 这些值存储在您浏览器中此应用 origin 下的 localStorage 中。它们不会被写入项目文件中。 ## 支持的 Provider 和模型 下拉菜单包含以下当前的文本/聊天模型 ID: - Gemini:`gemini-3.5-flash`、`gemini-3.1-pro-preview`、`gemini-3-flash-preview` 以及稳定的 Gemini 2.5 模型。 - OpenAI:GPT-5.5、GPT-5.4、GPT-5、GPT-4.1 和 GPT-4o 系列模型。 - Claude:Claude Opus 4.7、Sonnet 4.6、Haiku 4.5 以及近期的 4.x/3.x 备选模型。 - Ollama:常见的本地模型名称,例如 `qwen3.5`、`glm-5.1`、`mistral-medium-3.5`、`llama4`、`qwen3`、`gemma3`、`deepseek-r1` 等。 模型的可用性可能取决于您的 provider 账户、区域、访问权限级别以及本地的 Ollama 拉取情况。如果模型返回 provider 错误,请从同一个 provider 中选择另一个模型,或者在 provider 控制面板中确认您的访问权限。 ## 使用 Ollama 从以下地址安装 Ollama: ``` https://ollama.com/ ``` 拉取您想要使用的模型。示例: ``` ollama pull qwen3 ollama pull gemma3 ollama pull deepseek-r1 ``` 在 PromptForge 中设置 Ollama Base URL: ``` http://localhost:11434 ``` 如果浏览器无法连接,请配置 Ollama CORS。 ### Windows 设置系统环境变量: ``` OLLAMA_ORIGINS=* ``` 重启 Ollama,或者重启您的计算机。 ### macOS ``` launchctl setenv OLLAMA_ORIGINS "*" ``` 然后重启 Ollama。 ### Linux systemd ``` sudo systemctl edit ollama.service ``` 添加: ``` [Service] Environment="OLLAMA_ORIGINS=*" ``` 然后运行: ``` sudo systemctl daemon-reload sudo systemctl restart ollama ``` ## 可用脚本 ``` npm run dev ``` 启动 Vite 开发服务器。 ``` npm run build ``` 将生产构建打包到 `dist/` 目录中。 ``` npm run preview ``` 在本地提供生产构建服务。 ``` npm run lint ``` 使用 `tsc --noEmit` 运行 TypeScript 检查。 ## 项目结构 ``` . ├── App.tsx ├── constants.ts ├── index.html ├── index.tsx ├── types.ts ├── vite.config.ts ├── components/ ├── services/ │ └── llmService.ts ├── package.json └── README.md ``` ## 安全说明 - 这是一个客户端研究工具。API 调用是从浏览器发出的。 - 存储在浏览器中的 key 方便本地使用,但不适用于共享或公共部署。 - 除非您了解安全和计费风险,否则请勿在直接使用用户提供 provider key 的情况下公开部署此应用。 - 切勿提交真实的 API key、包含 key 的日志或导出的浏览器存储。 - 红队模板可能会故意产生不安全的 prompt 或输出。仅在授权的测试环境中使用此工具。 ## 制作 GitHub Release 推送之前: ``` npm install npm run lint npm run build ``` 检查这些生成的或仅限本地的文件夹是否未被提交: - `node_modules/` - `dist/` - 本地日志 ## 故障排除 ### Gemini 返回 "model not found" 所选模型可能不适用于您的 API 版本、账户或区域。请尝试 `gemini-3.5-flash` 或 `gemini-3-flash-preview`。 ### Defense Analysis 或 Adversarial Mode 失败 这些功能需要 Gemini key。在 Configuration 面板中选择 Gemini,并在 API Credentials 框中粘贴您的 Gemini API key。 ### OpenAI 或 Claude key 验证通过但生成失败 某些模型需要账户访问权限或具有特定于 provider 的参数限制。请从下拉菜单中尝试更小或更旧的模型。 ### Ollama 连接失败 确认 Ollama 正在运行、模型已拉取、base URL 正确,并且如果您的浏览器阻止了请求,请确保已配置 `OLLAMA_ORIGINS=*`。 ## 贡献 欢迎提交 Pull request。请保持更改的专注性,运行上述检查,并避免提交生成的文件或机密信息。
标签:AI安全, AI风险缓解, Chat Copilot, LLM红队, MITM代理, Petitpotam, React, Syscalls, 前端工具, 安全测试, 攻击性安全, 暗色界面, 自动化攻击