花开月下机器人 业务智能体实战笔记:分层消除不确定性(一)|总纲:把不确定性从 LLM 侧转移到工程侧
做过业务智能体的开发者几乎都踩过同一个坑:把所有逻辑全部甩给大模型,结果线上运行时完全不可控,一会儿幻觉输出错误数据,一会儿乱调用工具,一会儿卡在循环里死跑出不来,业务成功率连60%都达不到,根本没法上线用。
这套「分层消不确定」的核心思路,就是彻底放弃"让大模型自己搞定一切"的幻想,把所有不可控的不确定性,从LLM侧一步步转移到确定性更强的工程侧,最终把业务智能体的线上成功率拉到99.9%以上,完全达到生产可用标准。
一、先搞懂核心底层逻辑:为什么LLM天生带不确定性?
大模型的本质是概率生成机器,每一个Token的输出都是从概率分布里采样出来的,哪怕你给完全一样的提示词,两次输出的结果也不可能100%完全相同,这是它的天生属性,靠写一万行提示词也不可能彻底消除。
过去很多人做智能体的思路,是试图用提示词工程把LLM的不确定性压到零,本质上是在和大模型的底层属性对着干,投入10倍的精力,最后可能只能拿到30%的效果提升,性价比极低。
而「转移不确定性」的思路完全反着来:能不让大模型做的决策,就绝对不让大模型做,把所有逻辑里的确定性部分全部抽出来,放到工程侧用硬代码实现,最后只把最模糊、最需要语义理解的部分留给大模型,从根源上减少LLM的不确定输出影响业务流程的机会。
二、第一层转移:把流程控制权从LLM手里抢回来
90%的新手智能体,都会把整个任务的流程调度权完全交给大模型,让它自己决定下一步调用什么工具、走什么分支,结果大模型经常脑子一热就乱跳流程,直接把业务搞崩。
第一层转移就是彻底把流程控制权从LLM手里收回来:
用硬代码把整个业务的流程分支全部提前定义好,做成像状态机一样的固定流转框架,比如用户查询订单的智能体,流程就固定成「意图识别→拉取用户信息→拉取订单数据→生成回复」这几个固定节点,大模型根本没有权限自己跳转到其他节点。
大模型在这个环节里,只负责做当前节点的语义理解工作,完全没有权限决定下一步该走哪条路,下一步的流转方向全部由工程侧的硬代码根据当前节点的输出结果判断。
做完这一步,你就会发现智能体乱走流程的问题直接消失了,再也不会出现用户问订单,大模型突然跑去调用天气接口的离谱情况,业务流程的可控性直接提升70%。
三、第二层转移:把工具调用的确定性完全锁死
很多智能体的工具调用完全交给大模型自由发挥,结果经常出现参数传错、漏传必填字段、甚至乱传非法参数的情况,直接导致工具调用报错。
第二层转移就是把工具调用的90%逻辑全部转移到工程侧:
不要让大模型直接生成完整的工具调用请求,大模型只需要输出工具需要的几个核心语义字段,比如调用查询订单工具,大模型只需要输出「用户ID、订单号」这两个语义信息,剩下的请求封装、参数校验、签名加密全部由工程侧的硬代码完成。
工程侧提前给所有工具加上强校验规则,必填字段为空直接拦截,参数格式不对自动修正,完全不让大模型生成的原始参数直接触达工具接口。
做完这一步,工具调用的报错率直接从原来的30%降到不到0.1%,再也不会出现大模型生成的参数格式不对导致工具调用失败的问题。
四、第三层转移:把输出格式的不确定性彻底消除
大模型输出的内容经常格式混乱,一会儿多一句废话,一会儿少一个字段,导致后续的解析逻辑直接报错。
第三层转移就是把输出格式的控制权从LLM手里转移到工程侧:
不要用自由文本让大模型输出结果,直接用结构化输出框架(比如Pydantic)把所有输出字段的类型、取值范围、枚举值全部提前锁死,大模型的输出必须严格匹配这个结构,不匹配的话工程侧直接自动重试,直到输出符合规范为止。
对于简单的分类任务,根本不要让大模型生成文本,直接把所有可选的分类选项列出来,让大模型只输出选项对应的编号,连文字都不让它自由生成,彻底消除输出的不确定性。
做完这一步,输出解析的报错率直接降到零,再也不会出现大模型输出格式不对导致后续逻辑崩溃的问题。
五、第四层转移:把异常兜底全部放到工程侧闭环
不管前面做多少层防护,线上总会出现极端的边缘情况,这时候绝对不能把异常处理交给大模型,所有异常兜底逻辑全部在工程侧用硬代码写死:
大模型输出超时、输出格式不对、工具调用失败,所有异常场景全部提前定义好兜底策略,比如重试3次失败之后,直接返回预设的人工兜底话术,绝对不让大模型在异常场景下自由发挥。
给整个智能体加上最大步数限制,一旦超过预设的最大执行步数,直接强制终止流程,返回兜底结果,彻底避免大模型陷入死循环无限调用工具的问题。
做完这四层转移之后,你会发现大模型在整个业务智能体里,只承担了最核心的「语义理解」这一个工作,剩下所有容易出问题的环节,全部都转移到了确定性极强的工程侧,智能体的线上业务成功率直接就能冲到99%以上,完全满足生产环境的要求。
下一篇我们会拆解每一层转移的具体代码实现,把这套思路落地成可以直接复制的生产级智能体框架。
需要我给你配套一份分层消不确定的智能体最小Demo代码,把流程状态机、工具强校验、结构化输出这几个核心环节全部封装好,拿到就能直接跑起来吗?