fix(ai): AI越界生成——Prompt增加内容边界约束
- systemPrompt去掉'基于全局信息补充完善'诱导性措辞,改为明确【内容边界】警告
- systemPrompt明确告知AI:全局参考仅供理解上下文,updatedHtml只能包含目标区域本身内容
- promptText增加⚠️防越界指令:明确列出禁止混入的模块类型(术后情况、标本描述、病理结果、签名等)
This commit is contained in:
25
工程分析/经验记录.md
25
工程分析/经验记录.md
@@ -749,3 +749,28 @@ ReportEditor 采用 `useRef` 作为自动保存的数据快照机制(避免 Re
|
||||
**D. 后续如何避免问题**
|
||||
- 当大模型返回的 HTML 需要在前端渲染时,**必须同时在输入端(prompt)和输出端(后处理)进行格式约束**,单靠一端无法完全控制不同 LLM 的输出随机性。
|
||||
- 对于「生成完整性」类需求,必须在 prompt 中明确使用「必须生成完整...」「不要只改写...」等强制性措辞,否则大模型倾向于做最小化修改。
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 记录 33:AI 越界生成——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 中明确声明"仅供理解,严禁输出"。
|
||||
- 避免使用"补充完善""基于全局信息扩展"等容易被大模型过度解读的措辞。大模型会尽其所能地"满足"用户的指令,即使这意味着越界生成。
|
||||
|
||||
Reference in New Issue
Block a user