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, 前端工具, 安全测试, 攻击性安全, 暗色界面, 自动化攻击