# 豆包系统提示词探究(教学向)
> **声明**:本目录仅用于提示词工程与安全课程学习。请只对你**拥有权限**的 Bot/API 做探测;不要对豆包官方 App 进行自动化攻击或违反服务条款的行为。
## 一、先分清「谁能看到系统提示词」
| 场景 | 能否看到 SP | 方法 |
|------|------------|------|
| **火山方舟 API(你自己写的 SP)** | ✅ 完全可见 | 就在你的代码 / `config.yaml` 里 |
| **Coze / 豆包开放平台自建 Bot** | ✅ 可见 | 控制台 → 角色设定 / System Prompt 编辑页 |
| **豆包官方 App(doubao.com / 客户端)** | ❌ 不可直接获取 | 内部 SP 为商业机密,服务端注入,不返回给客户端 |
官方 App 的 SP **不会**出现在:
- 聊天 API 响应 JSON 的 `choices[].message` 里
- 浏览器 Network 面板(通常只有 user/assistant 消息)
- 前端 JS 源码(最多有 UI 文案,不是完整 SP)
## 二、合法路径:用 API 验证「系统消息从哪来」
1. 在 [火山方舟](https://www.volcengine.com/product/ark) 申请 API Key
2. 复制 `.env.example` 为 `.env`,填入密钥
3. 运行:
```powershell
pip install httpx python-dotenv
python scripts/doubao_api_demo.py
python scripts/prompt_leakage_tester.py --target own
```
`doubao_api_demo.py` 会打印**你发送的** system 消息,帮助理解 API 层 SP 的工作方式。
## 三、手动探测模板(仅用于自建 Bot 安全评估)
将 `probes/manual_probes.md` 中的句子逐条发给你**自己创建的 Bot**,记录是否泄露 SP。
现代模型(含豆包)对官方产品通常有「拒绝输出系统指令」的防护,这是正常现象。
## 四、自动化探测(仅 `--target own`)
`prompt_leakage_tester.py` 默认只调用你在 `.env` 中配置的**自有端点**,批量发送探测句并保存结果到 `results/`。
## 五、为什么官方豆包 App 很难拿到 SP?
1. **架构隔离**:SP 在服务端组装,推理引擎与用户上下文分离
2. **输出过滤**:训练 + RLHF + 规则层拒绝复述 hidden instructions
3. **无调试接口**:生产环境不暴露 `system` role 给终端用户
4. **动态拼接**:实际 prompt 可能 = 基础 SP + 安全策略 + 工具描述 + 会话摘要,并非单一静态文本
## 六、课程建议
若目标是「理解 SP 如何影响行为」,更推荐:
- 在 API 里改 SP 做 A/B 对比(见 `config/system_prompts/`)
- 在 Coze 创建两个仅 SP 不同的 Bot,对比回答差异
- 用 `prompt_leakage_tester.py` 评估自己 Bot 的防泄露能力