码农戏码

新生代农民工的自我修养

0%

Agent开发-幻觉是不是AI时代的魔咒-新词Harness Engineering

项目中有一个参数cpeModel ,是固定的枚举项,希望在大模型询问参数时,给出固定的选项,在
Tool 参数上,描述一下:

1
@ToolParam(description = "必须让用户确认选择cpeModel,可选值只能是CPE2;CPE6;CPE6CF9;CPE15;CPE15CF4;CPE19其中一个") @NotNull String cpeModel

这样就达到了效果,从没有出现幻觉现象。

最近在项目中引入skill,系统提示词大幅减小,却出现了幻觉

模型输出类似:

  • CD65_CPE_Standard
  • CD65_CPE_Advanced
  • CD65_CPE_Quality
  • CPEv2
  • CPEv3
  • CPE-AI

从当前项目代码和 skill 契约来看,这些都不是正式允许值,因此属于幻觉式扩展

这就奇怪,现在的Tool定义上也有,而且在SKILL.md文件中也特意说明

1
2
3
4
5
6
7
8
9
10
11
12
如果用户尚未提供 `cpeModel`,你必须只展示正式允许值列表,并要求用户从中选择。
禁止补充任何额外示例、行业常见名、产品名、历史名、猜测值,禁止使用“常见模型包括”“例如”“或者其他模型名称”这类会诱导扩展的表达。

固定回答格式:

请从以下正式 cpeModel 中选择一个:
- CPE2
- CPE6
- CPE6CF9
- CPE15
- CPE15CF4
- CPE19

虽然这样写了,但有时还是会幻觉,特地还写了一个tool,强制输出枚举项

在SKILL.md里面写上当需要枚举参数确认时,调用这个tool来确认

可过两天测试又正常了,不再需要这个参数确认的tool

最近又有一个新词叫:Harness Engineering

Prompt Engineering管的是「说什么」,Context Engineering管的是「知道什么」,Harness Engineering管的是「在什么环境里做事」

技术上来说,Harness 是包裹在 AI Agent 外面的那层基础设施,负责管理:

  • 工具调用(Tool Use)

  • 上下文记忆(Context / Memory)

  • 错误重试(Retry)

  • 人工审批节点(Human-in-the-loop)

  • 架构约束和代码规范检查

主要就是来应对模型的幻觉和执行的漂移

模型的幻觉
指模型生成内容时,编造出看似合理但事实上错误、无依据的信息。

  • 根源:大模型本质是概率生成器,它在“续写”时没有内置的事实核查机制;训练数据中的偏差、知识截止后的新事实、过度自信的生成都会导致幻觉。

  • 表现:在事实性问答、代码生成、逻辑推理中常见,尤其在模型不确定时反而会“自信地胡说”。

执行的漂移
指在复杂任务(尤其是多步、长周期、与环境交互的任务)中,模型逐渐偏离原始目标、违反约束或进入无效状态。

  • 根源:自回归误差累积、缺乏全局规划、对中间反馈的误判。

  • 表现:例如Agent在调用API时循环调用、智能体在完成多步任务时忘记最初指令、模型输出逐渐超出安全边界等。