5.2 KiB
三辆及以上机动车事故立即转人工
业务边界与原因
用户已明确要求:首次确定三辆及以上机动车参与事故的当轮立即返回0003,不继续采集人伤、非机动车/行人、时间及确认、在场情况,也不询问拍照能力。原始案例为“在高速上,三辆车子追尾了”,期望回复:
<state>0003</state>收到,您描述的是三辆机动车追尾,属于需要人工处理的复杂事故,我将立即为您转接人工警员。请保持通话。
按项目prompt-debugging及prompt-engineer技能检查,根因是原提示词明确要求三车事故先完成必要采集和时间确认,并且优先中断列表只有人伤、主动人工等。分流段落又将三车人工和单/双车拍照并列后统称遵守拍照条件,导致模型可能把拍照能力询问用于三车事故。JSON采集提示词与本地Markdown相同,这属于决策规则与新业务边界冲突,而非仅仅遗漏关键词。
修改
- 采集提示词靠前增加三辆及以上立即中断规则,使用当前form、用户历史及本轮输入;不等待并行提取器写入本轮表单。
- 表单已有vehicle_count>=3、没有新更正或冲突时直接采用,其他字段缺失不阻止人工分流。
- 同步修改状态表、每轮决策顺序、缺项采集适用条件和分流总前提,删除“先采集齐全再转人工”的旧数量条件。
- 拍照能力检查明确只适用于数量1或2且满足其他拍照条件的分支。
- 针对三辆机动车追尾采用用户指定话术;其他复杂事故按实际数量和经过组织同一结构,不编造追尾、人伤等事实。
- 非机动车/行人的既有分流策略独立保留;当前新规则针对机动车至少3辆。明确人伤仍优先使用人伤话术。
- 数量按最新明确更正解释;“可能三辆”仍未知,旁观车辆不计入。已知下限>=3即可立即转人工,但只给下限时不将下限冒充精确总数写入vehicle_count。
- 提取提示词明确人工转接时仍保留有证据的数量和经过,不把未采集的人伤、时间等填成默认值。
- 同步本仓库workflow/20261027的两个对应提示词;工作流节点、边、状态解析以及LangGraph分流代码不改。1002至0003本来就是合法转换。
检查设计
- 新增direct与browser_addon两个完整API案例:新会话、继续办理、呼叫、原始三车描述;在首次三车表达当轮断言0003、指定话术、form数量3/经过追尾,未知字段不得填写,不允许继续询问。
- 新增9项真实模型语义检查:原始表达、四车、仅表单数量3且离场无法拍照、表单2本轮更正3、表单3本轮更正2、至少3辆但精确总数未知、疑似3辆、无关停放车辆、等待时间确认时新增第三辆。
- 继续运行原有50个API案例,保留原断言,复查单方数量推断、已填表单不重复问、正常单/双车、非机动车、时间确认及其他行为。
- 语义检查总计执行38项;历史相对时间无基准的1项按用户此前要求继续暂缓,单独列为排除项,不记通过,本次未修改该时间规则。
模型沿用配置中的deepseek-v4.1-flash,temperature=0,reasoning_effort=none。所有Python命令使用Conda py3.11;API评估使用memory存储,不接触当前持久会话。
复现
conda run -n py3.11 python -m evals.prompt_compare --output-dir evals/results/customer-feedback/complex-reproduce-all
conda run -n py3.11 python -m evals.prompt_probes --runtime --exclude-case missing_historical_time_anchor --output evals/results/customer-feedback/complex-reproduce-probes.json
conda run -n py3.11 python -m pytest -q test/agent/test_workflow_prompts.py test/test_eval_runner.py test/agent/test_transitions.py
运行API评估前设置AGENT_BACKEND=langgraph、LLM_PROVIDER=deepseek、AGENT_STORAGE=memory。完整模型回复、表单和每轮断言保存在被Git忽略的evals/results/customer-feedback目录。
最终实测结果
| 检查 | 结果 |
|---|---|
| 全部API端到端案例 | 52/52 |
| 全部本轮语义检查 | 38/38 |
| agent及评估器离线测试 | 159通过 |
| 原50份案例输入与断言SHA-256 | 全部保持不变 |
| 暂缓的历史时间基准案例 | 1项排除,不记通过 |
两种客户端模式在首次收到“在高速上,三辆车子追尾了”时均立即0003,正文与用户指定话术完全相同。表单增量均为 {"vehicle_count":3,"accident_cause":"追尾"},人伤、非机动车/行人、时间和现场字段仍未填写,没有追加任何采集或拍照问题。
最终API结果:evals/results/customer-feedback/complex-verified-all/;语义检查:complex-verified-probes.json;汇总:complex-summary.json;逐例审核页:complex-review.html,由项目skill-creator自带的审核页生成器产生。此前专项中“至少三辆”被提取成精确3的问题保留在中间结果;补强精确数量与下限的边界后,最终该检查通过,不删改其断言。
修改限于两份提示词、对应工作流输入、评估用例及文档,没有改变生产节点或状态转换代码。Markdown与JSON的对应提示词一致,git diff --check通过。单次样本通过不代表所有模型输出均无波动。