# M0.3 能力边界与常见误区

> 目标：知道大模型/Agent 的"坑"在哪，避免被它骗、也避免把不该交给它的事交给它。

## 1. 幻觉（一本正经胡说）是什么、怎么防

**幻觉**：模型生成了听起来有理、但**根本不存在**的内容——假引用、假数据、假 API 名。

```python
# 幻觉的典型表现：模型"自信地编造"
user: "帮我找一下 Python 标准库里发送邮件的函数"
bad_answer: "用 smtplib.send_fast() 就行"        # 编造：send_fast 不存在
good_answer: "用 smtplib.SMTP(...) 发送，下面是示例..."
```

**防幻觉三招**：
1. **要来源**：让模型给出引用/出处，你再去核对。
2. **要代码就跑一遍**：代码类答案必须执行验证，别直接复制。
3. **关键事实加工具校验**：让 Agent 用搜索/查库的结果回答，而不是凭"记忆"编。

## 2. 数据隐私：别把机密喂给公网模型

```text
❌ 危险："帮我把这份客户合同摘要一下"（合同含商业机密，传到了第三方服务器）
✅ 安全：用私有部署模型 / 本地模型处理敏感数据，或先脱敏
```

**红线清单**：
- 客户名单、合同、身份证/银行卡等 PII
- 公司源码、内部架构、密钥密码
- 未公开财务/战略数据

## 3. Agent 不是"全自动万能工"，需要人把关

Agent 会"看起来很能干"，但它：
- 不理解后果，只按概率生成下一步
- 没有常识兜底，可能连环犯傻
- 对"破坏性操作"（删库、发钱、发公开消息）缺乏敬畏

```python
# 危险设计：让 Agent 直接拥有"无确认执行权"
def risky_agent(task):
    action = llm_pick_action(task)
    action.execute()          # ❌ 直接执行，删库跑路只在一瞬间
    return "done"

# 安全设计：高危动作加"人工确认闸"
def safe_agent(task):
    action = llm_pick_action(task)
    if action.is_destructive:
        human_ok = ask_human(f"确认执行：{action}?")   # ✅ 人把关
        if not human_ok: return "已取消"
    action.execute()
```

## 4. 哪些事不该交给 Agent

| 不该交 | 原因 |
|---|---|
| 高风险决策（投资、医疗诊断、法律判断） | 错误代价太大，需专业人负责 |
| 违法用途（人肉搜索、欺诈、绕过授权） | 法律与道德红线 |
| 替你承担责任的签字/承诺 | Agent 不担责，你担责 |
| 完全放任的"全自动"（无监控） | 连环出错无人止损 |

## 自测

1. 下面哪个场景适合直接让 Agent 全自动执行？哪个必须加人工确认？
   - (a) 每天把公开新闻汇总成简报
   - (b) 自动从公司账户给供应商打款
2. 你手上有什么"不该喂给公网模型"的数据？列 3 项。
3. 设计一条规则：什么情况下你的 Agent 必须先问你再动手？
