fix(ai): AI越界生成——Prompt增加内容边界约束

- systemPrompt去掉'基于全局信息补充完善'诱导性措辞,改为明确【内容边界】警告
- systemPrompt明确告知AI:全局参考仅供理解上下文,updatedHtml只能包含目标区域本身内容
- promptText增加⚠️防越界指令:明确列出禁止混入的模块类型(术后情况、标本描述、病理结果、签名等)
This commit is contained in:
2026-04-19 04:26:16 +08:00
parent c7e7033e7d
commit a3cafcb672
5 changed files with 153 additions and 2 deletions

View File

@@ -749,3 +749,28 @@ ReportEditor 采用 `useRef` 作为自动保存的数据快照机制(避免 Re
**D. 后续如何避免问题**
- 当大模型返回的 HTML 需要在前端渲染时,**必须同时在输入端prompt和输出端后处理进行格式约束**,单靠一端无法完全控制不同 LLM 的输出随机性。
- 对于「生成完整性」类需求,必须在 prompt 中明确使用「必须生成完整...」「不要只改写...」等强制性措辞,否则大模型倾向于做最小化修改。
---
## 记录 33AI 越界生成——Prompt 中"补充完善"导致大模型过度联想
**A. 具体问题**
AI 修改确认弹窗右侧出现了不属于目标区域的内容:术后情况、切除标本描述、是否送病理检查、冰冻病理结果、手术者签名等。这些模块本应在报告的其他位置,却被 AI 混入了"手术步骤"区域的 updatedHtml 中。
**B. 产生问题原因**
1. **全局上下文暴露过多**`globalContextText` 包含了整个编辑器的纯文本AI 看到了报告中所有模块的内容。
2. **Prompt 措辞诱导过度联想**systemPrompt 中写着 `要基于全局信息补充完善`,大模型非常"听话"地把它在全局上下文中看到的所有内容都"补充"进了输出。
3. **缺少内容边界约束**Prompt 中没有明确告知 AI"只能输出目标区域本身的内容,严禁混入其他模块"。
**C. 解决问题方案**
1. **System Prompt 去掉诱导性措辞**
- 将 `请根据全局内容和用户的【医生指令】` 改为 `请根据用户的【医生指令】`
- 将 `updatedHtml 必须生成完整...要基于全局信息补充完善` 改为明确的【内容边界】警告:
> "全局参考内容仅供你理解上下文。你的 updatedHtml 只能包含目标区域本身的内容。严禁输出签名、落款、术后总结等属于报告其他部分的结构!"
2. **User Prompt 增加防越界指令**
- 增加第 2 点:用 ⚠️ 警告符号明确列出禁止混入的模块类型(基本信息、术后情况、标本描述、病理结果、医生签名、日期等)
**D. 后续如何避免问题**
- 在向大模型发送局部修改请求时,**必须设置严格的内容边界Fencing**。全局上下文可以提供给 AI 作为背景理解,但必须在 Prompt 中明确声明"仅供理解,严禁输出"。
- 避免使用"补充完善""基于全局信息扩展"等容易被大模型过度解读的措辞。大模型会尽其所能地"满足"用户的指令,即使这意味着越界生成。