Files
ZNJJ-api-server/docs/complex-vehicle-immediate-transfer.md
T

59 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 三辆及以上机动车事故立即转人工
## 业务边界与原因
用户已明确要求:首次确定三辆及以上机动车参与事故的当轮立即返回0003,不继续采集人伤、非机动车/行人、时间及确认、在场情况,也不询问拍照能力。原始案例为“在高速上,三辆车子追尾了”,期望回复:
```text
<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存储,不接触当前持久会话。
## 复现
```bash
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`通过。单次样本通过不代表所有模型输出均无波动。