ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【Agent 意图识别】输出协议、评估与置信度

【Agent 意图识别】输出协议、评估与置信度 《AI Agent 面试 8 讲从意图识别到多 Agent》系统讲透 AI Agent 工程师核心能力的付费专栏。覆盖意图识别、规划执行、上下文管理、RAG、评估反馈、多 Agent 通信、工程化与综合设计 8 大模块每节配高频面试题、可直接说的面试话术与图解。适合准备 Agent 岗位面试、或想系统补齐 Agent 工程能力的一线开发者。少背八股多懂原理既能答上来也能讲清楚。Q1Agent 意图识别输出什么结构化输出协议怎么设计 面试话术Agent 意图识别不只输出一个意图标签更完整的输出是一套结构化协议。简单来说就是除了意图标签还要输出子任务列表、独立意图、已抽取的参数槽位、缺失的参数以及硬约束和软约束。另外还有两类证据字段——已验证事实和暂定证据用来区分用户当前轮明确说的和历史画像推断出来的。其中 hard_constraints 是必须满足的约束如「不超过 100 块」soft_constraints 是努力满足但不强制的偏好如「最好是牛仔裤」两者要贯穿一轮对话的全过程。missing_slots 字段记录缺失参数触发澄清追问。识别不出来有两个出口unsupported 表示意图不在候选范围内需要拒识unclear 表示意图混淆或参数不够需要澄清。拒识和澄清的关键是区分误拒和漏拒——误拒是用户意图在范围内但被拒了漏拒是不在范围内但硬猜了。多意图场景要先区分过程性描述和真多意图——过程性描述中多个动作是同一任务的不同步骤真多意图才需要用 independent_intents 并行处理。Prompt 写法的核心是让模型在受控的业务意图空间里完成分类和结构化输出意图特别多时用层次意图或检索先缩小候选集合。评估不要只看 Top1 准确率——还要看 TopK Recall、分类别准确率、拒识准确率、澄清收敛率和槽位准确率其中约束识别准确率是当下 Agent 做得最差的一块。 详细讲解Agent 意图识别不只输出一个 intent 标签更完整的输出是一套结构化输出协议。比如用户说「我要买一条不超过 200 块的裤子最好是牛仔裤」应该输出{intent:product_recommendation,sub_tasks:[search_products],independent_intents:[],slots:{category:服装,subcategory:裤子},missing_slots:[size,color],hard_constraints:{budget_max:200},soft_constraints:{preferred_material:denim},verified_evidence:[{source:current_turn,content:不超过200块,field:budget_max}],provisional_evidence:[{source:user_profile,content:历史偏好:牛仔裤,field:preferred_material}]}结构化输出协议各字段说明字段类型说明intentstring主意图标签从候选意图集合中选取sub_taskslist主意图下的子任务序列过程性描述时用independent_intentslist真多意图场景下互相独立的并行意图slotsdict已抽取到的参数值missing_slotslist缺失的必填参数触发澄清追问hard_constraintsdict必须满足的约束如预算上限、日期限制模型无论如何不能违反soft_constraintsdict努力满足但不强制的偏好如材质偏好、颜色偏好不满足时降级而非拒绝verified_evidencelist当前对话中用户明确说过或工具确认的事实可作为硬约束来源provisional_evidencelist从历史画像、历史对话推断的信息不能自动升级为硬约束Slot Filling 的核心要点定义清楚每个意图需要哪些参数——如商品推荐需要 category、budget_max、usage_scenario 等区分硬约束和软偏好——hard_constraints 是模型无论如何必须满足的soft_constraints 是「努力满足但不强制」。约束要贯穿一轮对话的整个过程——即使用户中途补充了新条件也要更新而非覆盖之前的约束missing_slots 字段——记录缺失参数触发澄清追问多轮 Slot 补全——在 ReAct/Think-Action-Observation 循环中逐步补全所有槽位确保 missing_slots 为空拒识与澄清机制——什么时候追问、什么时候降级、误拒 vs 漏拒出口含义处理方式unsupported用户意图不在候选意图中拒识——超出系统能力范围礼貌告知用户能力边界unclear意图混淆候选间距过小或参数不够missing_slots 非空澄清——追问缺失信息或让用户在候选意图间选择拒识和澄清的关键是区分两类错误错误类型定义危害优化方向误拒False Reject用户意图在系统范围内但被错误地判为 unsupported用户觉得「这也不行那也不行」体验极差放宽拒识阈值增加 fallback 意图漏拒False Accept用户意图不在范围内但系统硬猜了一个意图去执行执行了不该执行的操作可能造成不可逆后果收紧拒识阈值增加硬约束校验什么时候追问、什么时候降级追问missing_slots 中有必填参数缺失且该参数缺失会导致后续工具调用无法执行或执行结果严重偏差降级missing_slots 中的参数虽缺失但有合理默认值或可以缩小搜索范围后给出泛化回答原则能降级解决的不追问——追问会打断用户流但必填硬约束缺失必须追问——否则执行后大概率出错多意图的处理策略——过程性描述 vs 真多意图类型定义例子处理方式过程性描述多个动作是同一任务的不同步骤「帮我查下订单顺便退一下」→ 查订单是为了确认要退哪个识别为主意图「退款」查订单作为 sub_tasks 自动执行真多意图多个意图互相独立用户确实想并行处理「帮我订个会议室再帮我查下明天的天气」输出 independent_intents用Plan 机制分别处理真多意图场景的 Plan 机制将多个独立意图拆成子任务可以并行执行如「订会议室」和「查天气」无依赖关系或串行执行如「查完天气再根据天气决定是否提醒带伞」并在输出中用 independent_intents 字段标识哪些是并行的。Prompt 怎么写Agent 意图识别 Prompt 的核心是让模型在一个受控的业务意图空间里完成分类和结构化输出定义清楚候选意图——列出系统支持的所有意图及其边界描述不允许模型自己发明意图定义清楚意图边界——容易混淆的意图必须明确区分如「推荐」vs「查询」vs「比较」定义清楚参数Slot——每个意图需要抽取哪些参数是否必选默认值加入 few-shot——关键是覆盖容易混淆的边界正反两方面例子。进阶用动态 few-shot每次从案例库检索最相似的案例注入意图特别多怎么办——用层次意图先分大类再分小类或检索先缩小候选集合从几百个意图中召回 top-K 再分类一句话总结Agent 意图识别不是为了给用户输入贴标签而是为了决定 Agent 后面应该怎么想、加载什么上下文、调用什么工具、进入哪个业务流程。Q2什么是 slot-filling它和 Agent 意图识别是什么关系 面试话术slot-filling 就是把用户输入里的关键信息填到预定义的结构化槽位里。它不是 Agent 意图识别的附属品而是 Agent 意图识别的「下半场」——意图告诉你「用户想做什么」slot 告诉你「这件事还需要哪些参数才能执行」。举个例子用户说「查一下上个月广州参保人的平均缴费」。意图是「业务指标查询」slot 包括时间上个月、城市广州、指标平均缴费、业务域。这些槽位缺一个SQL 都跑不出来。slot 和 Agent 意图识别的结合方式是同一次结构化输出里同时完成模型输出 intent 的同时输出 slots、missing_slots、hard_constraints、soft_constraints。在实际落地中就是这样做的——先识别意图再立刻检查必填槽位缺失就触发澄清而不是等到后面调工具时才报错。设计 slot 有三个要点。第一每个意图独立定义 slot不同意图的同名 slot 含义可能不同——「城市」在业务查询里是参保地在物流查询里是收货地。第二区分必填和选填必填缺失必须澄清选填缺失可以带默认值执行。第三slot 要直接对应到工具参数避免出现「模型抽到了城市名但工具要的是行政区划 code」这种断层。 详细讲解slot-filling 的本质是把非结构化用户输入映射到预定义结构化参数。它是对话系统中经典的任务在大模型时代变成了「Agent 意图识别 参数抽取」的一体化输出。用户输入查一下上个月广州参保人的平均缴费 │ ▼ Agent 意图识别 ──→ intent 业务指标查询 │ ▼ slot filling ├──→ slots: {time: 上个月, city: 广州, metric: 平均缴费, domain: 业务} ├──→ missing_slots: [] ├──→ hard_constraints: {domain: 业务} └──→ soft_constraints: {preferred_time_range: 最近一年}slot 定义的四个维度维度说明例子名称slot 的字段名通常直接映射到工具参数city、time_range、metric类型字符串、数字、枚举、日期、布尔city: stringbudget_max: number必填性是否必须填缺了能否执行必填city选填sort_by候选值是否来自封闭集合要不要做语义映射region440105对应「海珠区」不同意图的 slot 可能同名但含义不同意图slot: city实际含义业务查询city参保地/待遇领取地物流查询city收货地酒店预订city入住城市所以 slot 不能脱离意图单独理解必须在意图命名空间下定义。slot 缺失的处理策略缺失类型处理方式例子必填 slot 缺失触发澄清反问用户「您想查询哪个城市的参保数据」选填 slot 缺失使用默认值或合理推断默认查最近一年多个 slot 缺失优先问影响最大的先问城市再问时间slot 值模糊给出候选让用户确认「您指的是广州市还是广州市白云区」slot 与约束的关系slot 是事实参数约束是规则限制。比如slotbudget_max200用户说的hard_constraintbudget_max 200系统必须遵守soft_constraintpreferred_materialdenim尽量满足在政务场景中slot 是「广州、上个月、平均缴费」hard_constraint 可能是「只能访问授权业务域」「禁止写操作」。slot 填完只是参数齐了不代表约束一定满足。如何避免 slot 不完整Prompt 里明确列出每个意图的 slot 清单和必填性输出 JSON Schema 强制校验让模型必须输出 missing_slots 字段多轮补全在 Think-Action-Observation 循环中每轮都检查 missing_slots直到为空默认值 澄清结合能推断的slot用默认值不能推断的必须澄清一句话总结slot-filling 不是 Agent 意图识别的后续步骤而是同一套结构化输出协议的一部分——意图决定走哪条路slot 决定这条路能不能走通。Q3Agent 意图识别怎么评估有哪些指标 面试话术Agent 意图识别的评估不能只看 Top1 准确率要覆盖四大维度基础指标Top1、TopK Recall、分意图指标分类别准确率防止高频意图掩盖低频、拒识/澄清指标误拒率、漏拒率、澄清收敛率、Slot 指标槽位准确率、必填槽完整率、约束识别准确率。其中约束识别准确率是当下 Agent 做得最差的一块——很多 Agent 把 hard 和 soft 混为一谈。专属领域 Agent Top1 做到 99% 很正常通用 Agent 在 80%-90% 之间比较真实。关键在于给解释–太高要说明是专属领域意图少用户输入规范太低要说明正在优化。 详细讲解评估指标体系指标类别具体指标说明基础指标Top1 Accuracy最常用——系统输出的第一个意图是否正确Top-K Recall前 K 个候选中有标准答案就算命中——反映系统的召回能力即使 Top1 错了也能通过澄清救回分意图指标分类别准确率防止高频意图掩盖低频意图的识别差——Top1 做到 99% 不代表每个意图都 99%拒识/澄清指标拒识准确率拒掉的输入中真正应该被拒的比例——防止误拒误拒率False Reject Rate在范围内的意图被错误拒掉的比例漏拒率False Accept Rate不在范围内的意图被硬猜了的比例澄清触发准确率触发澄清的 case 中确实需要澄清的比例澄清后收敛率澄清后用户补充信息、任务顺利推进的比例——反映澄清是否有效Slot 指标槽位准确率抽取的参数值是否正确槽位召回率应抽取的参数中实际抽到了多少必填槽完整率missing_slots 是否最终清空约束识别准确率硬约束和软偏好是否识别正确——这是当下 Agent 做得最差的一块很多 Agent 把 hard 和 soft 混为一谈面试中怎么说准确率专属领域 AgentTop1 做到99%很正常——总共就几个意图用户输入规范通用 AgentTop1 在80%-90%之间比较真实关键在于给解释——太高要说明是专属领域意图少用户输入规范太低要说明正在优化不要只看准确率——拒识、澄清也是合理的策略不是永远追求猜中一句话总结评估要覆盖四大维度基础、分意图、拒识/澄清、Slot不能只看 Top1 准确率。Q4Agent 意图识别的置信度是什么阈值怎么设 面试话术模型输出的 confidence 本质上是 softmax 之后的相对排序分数不是模型真的有 85% 把握。即使模型完全在猜softmax 也会输出一个看似合理的分布比如 [0.85, 0.14]——但这个 0.85 只是「比第二高多少」不是绝对可信度。所以阈值不能只看 confidence 一个数要结合候选间距、规则校验、槽位完整性、硬约束风险一起判。路由可以分三档大于 0.85 直接接受0.6 到 0.85 进入仲裁或澄清小于 0.6 交给更强的深度推理模型。 详细讲解confidence 为什么不等于概率大模型输出 confidence 时经过 softmaxlogits [2.0, 0.5, -1.0] softmax → [0.79, 0.18, 0.04]这个 0.79 只是相对排序结果不代表模型有 79% 的把握。具体问题有三归一化假象即使 logits 都很接近softmax 也会拉开差距过度自信大模型在分布外OOD输入上 confidence 依然很高间距丢失0.85 可能是 [0.85, 0.14]明显领先也可能是 [0.85, 0.84]几乎并列所以 confidence 只能当排序信号不能当真实概率。阈值设定的三个来源来源做法适用场景测试集校准在标注测试集上画 PR 曲线找误拒和漏拒的平衡点通用方法业务风险高副作用意图退款、删除收紧阈值低副作用放宽资金/写操作候选间距top1 与 top2 差距过小即使 confidence 高也进澄清边界模糊路由决策表confidence候选间距槽位完整决策 0.85大完整直接执行 0.85小完整仲裁/低置信澄清0.6-0.85-不完整澄清补 slot 0.6--交给深度模型或 fallback一句话总结confidence 是 softmax 后的相对排序而非真实概率阈值要结合候选间距、规则校验和槽位完整性分档设定。
返回列表