一、「收窄决策空间」收窄的是什么
保留 LLM 的决策权–LLM 负责工具选择、语义理解、答案组织。在LLM决策前,工程侧压缩候选集、参数、上下文。
这一层的主线是LLM 决策空间越小,行为越稳定。
二、提示词工程:能力有边界
遇到准确性问题,第一反应是改提示词。我们的提示词分几类,大部分是预置固定的,我只改业务系统提示词。
为同类问题添加规则、正反示例和 CoT 模板。提示词打磨用了 Claude Code、Codex、Trae 几个工具轮流试。几轮下来效果明显,65% 涨到 75%。
但规则越多、越细、场景越特殊,效果越差——最后几次升级效果不明显,甚至下降。规则太多,LLM 的注意力被稀释,很多场景下,规则没有按预期的执行。
来来回回很多次,认清了两件事:没有评测闭环的调优就是猜谜(第 5 篇会展开);修改提示词有收益边界,不能过度依赖。
提示词能做的大概 +5~+8pt(估算,当时还没搭评测闭环,跟同期收采样、做消息预处理的动作混在一起,拆不准)。
三、收窄采样参数
业界提高准确率的一个通用做法是调整温度和 top_p。先按业界经验值起步(0.6/0.7),再基于评测数据继续收(0.3/0.1)。
业界常见 temperature 区间:
查询报表类:0.1–0.3
业务对话:0.4–0.6
创意发散:0.7–0.9
最开始按惯例采用 0.6/0.7。评测闭环搭起来之后,做了两次针对采样的调优:
参数 调整前 调整后 说明
temperature 0.6 0.3 收窄概率分布
top_p 0.7 0.1 只保留最高概率的前 10% token
parallelToolCalls 未显式设置 false 禁止单轮内并行 tool_call
presencePenalty 未显式设置 0 贴着已检索内容回答,不鼓励换话题
调整参数的效果很好:0.3/0.1 比 0.6/0.7 更稳。
采样收窄贡献约 +2~+4pt。
四、数据预加载
用户常见的业务数据,对模型来说是陌生的——存储在数据库中的工单、任务、业务组等。
这些数据随业务变动,不适合放进 RAG。写进提示词也不行,术语越多提示词越大,数据一变整段跟着改。
所以直接在创建智能体时从数据库预加载。只读 id 和 name,不带 description 和扩展属性。每类数据超过 100 条做规则截断,防止上下文膨胀、注意力稀释。
预加载失败则跳过,不阻塞启动——链路必须在没有它的情况下正常工作。用户查某个设备详情时,最新数据顺路刷新预加载里的对应条目,自动纠正陈旧问题。
贡献约 +1~+3pt。间接收益比分数更重要——后面的意图识别、消歧、工具选择都有稳定的业务词表可以参照。
五、工具信息分层注册
开始,业务智能体每次只加载 5 个工具,LLM 的选择受到限制,经常选错。当前做法是按工具总数分两档:
档位 触发条件 路由方式 工具信息加载
第一档 工具总数 ≤ 20 全量注册给 LLM 路由层全量看,执行层命中后加载
第二档 工具总数 > 20 两阶段意图路由,LLM 从目录挑 4~8 个候选 路由层只看候选,执行层命中后加载
≤ 20
20
命中
未命中
用户请求
工具总数
全量加载路由层
加载执行层 schema
意图路由挑 4~8 个候选
加载候选工具路由层
正则旁路匹配?
跳过路由筛选,保留全量
LLM 基于路由层选工具
LLM 推理 + 工具调用
工具的选择和调用是两个阶段,信息也分两层:路由层只放名称和一句话概述,在路由时,不会占太长上下文;执行层放完整 schema,命中后才加载,执行层信息全面有利于调用准确。执行层除了schema,也存储对该工具有效的规则,这写规则针对性强,容易被遵守。
两阶段路由不是万能的,某些多维度统计类问题会挑错工具。留了一个正则旁路开关,发现哪类问句容易挑错就补一条规则把它拦到旁路,跳过路由筛选保留全量工具。
当前两档已覆盖到接近 50 个工具的规模。再往上,LLM 在 50 多个工具的目录里挑 4~8 个,漏选和错选都会抬头。下一步规划用 RAG 检索替代 LLM 挑候选,而不是 embedding 检索——embedding
跟工具描述耦合太紧,描述改一个字索引就得重跑,工具集一调整索引永远追着业务跑。RAG 是显式的、可解释的、和描述解耦的。
贡献约 +3~+5pt,收益来自两处:减少选错工具(分层描述 + 旁路开关),减少参数错误(执行层 schema 命中后才注入,不干扰路由决策)。
六、工具调用的串行策略
ReAct 循环让每一步基于上一步返回值再决策,轮与轮之间天然串行。关掉 parallelToolCalls,单轮只走一个工具。
另一种串行:将工具调用拆成查询和筛选两步。先获取查询结果,再识别筛选条件,调用 data_filter 完成筛选。data_filter 的完整设计放第 5 篇。
七、收益与限制
手段 贡献区间 关键动作
提示词工程 +5~+8pt 收敛为规则清单
采样参数收窄 +2~+4pt temp/top_p 0.6/0.7 → 0.3/0.1
数据预加载 +1~+3pt 数据库直读 id+name,100 条截断
工具信息分层注册 +3~+5pt 两档路由 + 分层描述 + 旁路开关
合计 +9~+16pt 65% → 75% 第一阶段涨幅
⚠️ 四个模块同期推进,数字是事后拆开归因的估算,不能简单累加。
这一层的核心逻辑始终是同一件事:压 LLM 的决策空间,提高行为稳定性。但候选集压到最小,LLM 行为失稳的概率也压不到零。剩下的失稳,只能靠第三层「兜底修复」事后判定加纠错。