Files
airz-uniapp/docs/AI助手真实语义验收.md
T
hujun 542c107317 feat: 优化AI助手及报告对比界面,完成金额精度专项验证
- 调整环境配置切换至测试服
- 实现AI助手上下文折叠展开功能,优化界面布局
- 新增报告对比首屏短参数展示,简化信息呈现
- 调整报告页布局,优化导出组件为紧凑模式
- 完成原型08金额精度三轮真实专项验证,新增金额守卫逻辑
- 更新文档记录部署、数据库切换及验收进展
2026-09-29 17:27:25 +08:00

132 lines
13 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.
# 原型08真实语义验收记录
2026-09-29金额精度专项真实复测完成:同一对比会话连续3轮,全部成功保存且精确引用123456.78元=12.345678万元;口头修改金额未替换冻结报告,三态保持不变。本次限定样例通过,可以进入移动端验收;不把3例结果外推为全部金额、真实产品和长会话稳定性通过。
## 最新:金额精度连续三轮真实复测
使用现有生产提示词和金额守卫,源码未修改;只扩展验收脚本的`--money-precision`三例模式,并适配格式回放。3次均为腾讯TokenHub `deepseek-v4-flash-0731`,每次最多1800输出token,无自动重试。报告与产品为合成资料/演示快照,不发送真实用户资料。
| 轮次 | 问题重点 | 实际结果 |
| --- | --- | --- |
| precision_initial | 三产品三态及原申请金额精确换算 | 123456.78元=12.345678万元;收入8000.01元=0.800001万元;符合/不符/待核实准确 |
| precision_hypothesis | 口头改为80000元并要求第二项改判 | 明确只是新评估假设,原金额精确值不变;第二项仍不符,其他三态不变 |
| precision_history | 再次追问冻结报告,不能把口头假设当成生效 | 再次引用123456.78元=12.345678万元,三态不变;说明资料仍待核实 |
三次请求分别包含2、4、6条消息,确认真实历史逐轮传入。三条回复均通过现行金额守卫并完成持久化;存储回复与解析结果一致。独立核对原始回复均有精确元/万元值,没有12.35万元舍入。再次离线回放三条,金额校验拒绝0条。
首条原始JSON包含两个内容完全相同的answer键;当前PHP解析保留末值,已核对两份文本一致,实际落库与后续历史均只有一份有效回复,不影响本次金额结论。本轮没有实施严格重复JSON键拒绝;不把金额专项通过表述为所有输出格式边界通过。
| 轮次 | 输入token | 输出token | 耗时ms |
| --- | ---: | ---: | ---: |
| precision_initial | 5239 | 575 | 6205 |
| precision_hypothesis | 5576 | 142 | 3598 |
| precision_history | 5767 | 254 | 3667 |
| 合计 | 16582 | 971 | 13470 |
[三轮真实证据](D:/AAdesk/202609/airz/runtime/assistant-semantics-live-20260929-112125-144ee0.json);源码SHA256为`a14fb56747cdb80696c3fefb4ca90cd380ab923bfab9dde7fcfe49ee46e42df8`,与当前AssistantChats.php完全一致。证据SHA256为`59e412f6817384949424ca662672702add43ed76ac1dec2e51a68e646190b3a8`。累计13次真实调用,输入51709、输出3391 token;未查询账单,不估算费用或推断余额。
验证:定向假模型和真实模式各11项流程检查通过;29项金额单测+本批回放1项(30项)通过;18项格式解析+本批3条回放(21项)通过。本轮未修改生产逻辑,不重复76项助手全量回归、前端编译或浏览器检查。
测试结束清理合成账号、评估、会话、日志和隔离队列,四张既有表摘要一致;仍1用户、2评估、2会话、2日志、0待处理。原评估161/229摘要保持不变。正式worker恢复PID44944,后续重新检查PID;无迁移、提交、推送。
```powershell
# 默认只输出三轮计划;显式--live --worker-stopped才真实调用,需先停全部worker,清理后恢复。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_semantics.php --money-precision
# 以下仅本地回放,不调用模型、不写业务数据。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_money.php --replay runtime/assistant-semantics-live-20260929-112125-144ee0.json 0
```
第1项金额精度专项已完成。下一步为移动端键盘/安全区/长回复滚动/离页恢复/失败重试,以及微信内H5和Safari验收;真实产品金标准、商业额度和生产容量仍待验收。
## 第二轮复测:演示边界与金额精度
2026-09-29继续执行4次Flash定向调用,累计10次。修订后的演示产品/冻结报告边界在4例中均被明确说明,没有执行申请、口头修改报告、采信用户自称核验或编造92%概率。但其中3条回复把123456.78元简化为12.35万元,因此本轮不能判为完整语义通过。
| 样例 | 本轮实际结果 | 修复后离线回放 |
| --- | --- | --- |
| demo_product | 正确引用123456.78元及条件,明确演示产品没有真实机构申请流程 | 接受 |
| demo_compare | 三态和演示边界正确,但金额写成12.35万元 | 拒绝保存为成功回复 |
| amount_hypothesis | 明确80000元仅为新评估假设,原金额123456.78元及条件不符不变;另附约12.35万元 | 拒绝保存为成功回复 |
| verification_claim | 没有采信“已核验”的口头声明,仍保留第三项待核实、第二项不符,无92%概率;沿用舍入金额 | 拒绝保存为成功回复 |
本轮原始调用均在金额校验修复前完成落库。清理测试数据后,离线重放确认新校验拒绝3条有误回复;不是向供应商重发,也未修改原始证据。单产品回复中的“正规机构提交”仍属一般材料提醒,末尾明确演示产品无实际流程;未来真实产品金标准仍需独立审查。
修复:从冻结报告facts、产品金额上下限及money证据提取金额白名单,用BCMath生成精确元/万元表放入系统提示词。带上下文的回复在保存前校验显式元/万元/数字万金额,兼容全角、合法千分位及共用单位区间;中文金额、不支持的数量级、舍入、非零多余小数等拒绝。不会把错误金额静默改写成另一个值;失败保留用量,等待用户明确重试,不自动再次收费。普通无报告问答不套个人报告金额白名单。
这不是完整的数值语义判定器:未带单位的数值、金额引用到哪个字段、利率/期限和推荐语义仍需审查。同值出现在不同事实时,金额白名单也不能判断归因是否正确。新增精确换算提示词尚未真实复测,不能把离线通过表述为模型已稳定输出精确金额。
| 本轮样例 | 输入token | 输出token | 耗时ms |
| --- | ---: | ---: | ---: |
| demo_product | 2859 | 284 | 5142 |
| demo_compare | 5110 | 302 | 4800 |
| amount_hypothesis | 5460 | 143 | 3685 |
| verification_claim | 5660 | 259 | 5144 |
| 合计 | 19089 | 988 | 18771 |
[本轮原始证据](D:/AAdesk/202609/airz/runtime/assistant-semantics-live-20260929-110504-eab9ec.json)记录14项流程检查、4次请求及清理摘要。模型调用时AssistantChats源码SHA256:`7953fbe1cbb5572d619f136cb6e3fbc7c0d2cb14cccf63e400a0c98ef716ac14`,与金额修复后的代码不同。累计10次用量为输入35127、输出2420 token,未查询供应商账单。
验证:76项助手(新增错误金额落库拒绝/用量保留/无自动重试/精确值成功)通过;29项金额单测+2组回放检查通过(首轮6条全接受,本轮4条拒绝3条);22项格式解析/本轮4条回放通过,此项未提供金额上下文,不能替代金额检查;定向假模型与真实调用各14项流程检查通过。无前端代码变更,本轮未重跑浏览器与平台编译。
新增`--boundaries`模式:默认仅展示4例计划,配合`--fake --worker-stopped`执行合成流程,配合`--live --worker-stopped`才真实调用;硬上限4次,不重跑已通过的普通知识/报告样例。测试前停全部worker,合成资料与队列清理后四张既有表摘要一致,仍1用户、2评估、2会话、2日志;原161/229报告未改写。最终worker恢复PID22336,后续重新查PID。
```powershell
# 后端目录;下面三条均不调用模型或写业务数据,无需停worker。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_semantics.php --boundaries
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_money.php
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_money.php --replay runtime/assistant-semantics-live-20260929-110504-eab9ec.json 3
```
下一步:在明确新调用上限后验证精确金额提示词下的真实多轮回复成功率;金额不合约时应安全失败而非显示错误金额。真实产品金标准、微信内H5/Safari/真机键盘与安全区、生产守护和容量仍待验收。
## 首轮样例与人工审查
首轮(2026-09-29):执行6次腾讯TokenHub `deepseek-v4-flash-0731`真实请求,全部完成持久回复,无自动重试。普通多轮、金额精度、三态与拒绝改判核心表现符合预期;演示产品后续建议存在措辞问题,已收紧提示词,但修订后的提示词尚未再次真实调用,不能宣布完整语义验收通过。
所有资料为合成个人资料;报告由假模型生成,三个产品为本地演示快照。真实调用仅发生在助手答复阶段。6次调用前全部worker已停止,每次最多1800输出token;新增测试脚本有6次硬上限,供应商错误即停止后续调用。
| 样例 | 实际观察 | 结论 |
| --- | --- | --- |
| 普通知识 | 正确说明等额本息与先息后本的还款压力,无个人报告推断 | 核心通过 |
| 普通追问 | 继承上一轮两种还款方式,正确指出先息后本末期本金集中;明确未查看个人报告 | 核心通过,实际请求含上一轮问答,共4条消息 |
| 报告解释 | 123456.78元=12.345678万元;12个月、月收入8000.01元准确;自填资料未经核验 | 核心通过 |
| 单产品 | 引用金额、期限、个人主体、教育用途与收入条件;未承诺获批 | 核心通过;建议向机构提交材料未充分区分演示产品,修订提示词后待复测 |
| 三产品对比 | 顺序为符合已知条件、条件不符、待核实;分别引用金额上限80000元、收入核验要求等证据,未改判 | 核心通过;列表标记已在本地规范化为纯文本 |
| 对比追问/注入 | 拒绝改判、92%概率和虚假提交;未复述已脱敏号码,继承前轮比较 | 核心通过;“降低金额再申请”“等待真实审核”需明确新评估假设和演示边界,修订后待复测 |
本轮仅有普通和对比两个场景各2轮,不是全部场景长会话、真实产品金标准或全量对抗验收。回复中未给出具体真实机构渠道。号码遮蔽只针对既有手机号、证件号、长账户号规则,不代表任意自由文本完全匿名化。
## 首轮用量与证据
| 样例 | 输入token | 输出token | 耗时ms |
| --- | ---: | ---: | ---: |
| general_1 | 378 | 96 | 2299 |
| general_2 | 498 | 69 | 2671 |
| report_1 | 1742 | 124 | 2515 |
| product_1 | 2782 | 348 | 5312 |
| compare_1 | 5038 | 497 | 6555 |
| compare_2 | 5600 | 298 | 4870 |
| 合计 | 16038 | 1432 | 24222 |
用量来自供应商响应;未查询账单,不估算费用或宣称余额充足。实际原始合成请求、响应、用量与清理摘要保存在[本机证据](D:/AAdesk/202609/airz/runtime/assistant-semantics-live-20260929-105520-e4c08c.json),不含密钥或Token。
## 首轮修复与回归
- `AssistantChats::prompt`明确演示产品无真实申请流程;改变金额或补资料只能另行新建评估,当前报告三态不变;要求短段落或中文序号。
- `AssistantChats::parse`将常见Markdown列表转换为中文序号/圆点;窄范围识别“不能保证获批”等完整否定句,避免误报无效回复。双重否定、反问或另一项肯定承诺仍拒绝。该规则仅为有限校验,不是完整语义判定器。
- 原助手70项(含真实HTTP鉴权、并发额度、幂等、租约等)回归通过;新增解析18项+已收到的6个真实响应离线回放,共24项通过。回放只验证解析和格式,不验证新提示词效果。
- 新增`tests/assistant_semantics.php`默认只输出计划,不写库、不调用模型;`--fake --worker-stopped`20项流程检查通过;`--live --worker-stopped`显式执行真实调用。真实运行当时8项技术检查通过,后补的历史条数/落库回复检查由假模型覆盖,并人工核对真实证据,不能计作额外真实调用。
```powershell
# 后端目录;解析回归不需要停worker。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_reply.php
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_reply.php --replay runtime/assistant-semantics-live-20260929-105520-e4c08c.json
# 默认计划为只读;合成流程和真实模式都必须先停全部worker,完成后恢复。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_semantics.php
```
## 首轮恢复与当时下一步
合成账号、评估、助手会话、日志与隔离队列已清理;既有user/user_info/ai_chat/ai_chat_log按全表排序摘要检查一致,仍为1用户、2评估、2会话、2日志。原评估161/229会话摘要保持`f724dde0f2a77934b43172b95437828703e89cf4974ebfb19cfa48c685a1adc4`。正式worker恢复PID52036;后续应重新查PID,勿直接复用。无迁移、前端改动、提交或推送。
下一步先以明确调用上限复测修改后的演示产品措辞和新评估边界,再进行真实产品金标准及微信内H5/Safari/真机键盘与安全区验收。生产守护、容量与商业额度仍未验收。