来源:互联网 更新时间:2026-07-31 07:19
先说一个真实案例。
让 Codex 写一个折扣函数。代码有类型标注、有异常处理,命名也很专业,运行时完全不报错。
但输入原价 100、折扣率 0.20,它返回了 20。业务要的是折后价 80,AI 算出的却是优惠金额。
这次问题让人意识到:AI 编程最危险的不是语法错误,而是代码看起来非常正确,业务含义却错了。下面用这个真实的小案例,完整走一遍业务契约、差异审查、3 个边界测试和人工批准,看看怎样让 AI 的错误过不了交付门。
pytest 结果为 3 passed,不是仅凭代码外观推断正确性。在编码场景里,幻觉不只是假造不存在的 API。以下情况都值得警惕:
这些问题有一个共同点:输出形式像答案,但证据不足。
假设需求是“计算折扣后的价格”,至少要先确定:
price 不能为负数;discount_rate 使用 0 到 1 的比例;如果只说“写一个折扣函数”,AI 可能把 discount_rate=20 理解成 20%,也可能把折扣金额直接累加到总价。需求没有表达清楚时,错误不全是模型问题,还是任务契约把关键判断权让了出去。
from decimal import Decimaldef final_price(price: Decimal, discount_rate: Decimal) -> Decimal:return price * discount_rate
函数能运行,类型也没有报错。但输入 100 和 0.20 时得到 20,这到底是折扣金额,还是最终应付金额?如果业务要的是最终价格,正确结果应该是 80。
这种错误靠语法检查发现不了,因为代码在语法层面完全成立。
from decimal import Decimaldef final_price(price: Decimal, discount_rate: Decimal) -> Decimal:if price < 0:raise ValueError("price must be non-negative")if not Decimal("0") <= discount_rate <= Decimal("1"):raise ValueError("discount_rate must be between 0 and 1")return (price * (Decimal("1") - discount_rate)).quantize(Decimal("0.01"))
这里没有追求复杂,而是把业务边界直接写进代码:输入范围明确,公式明确,金额精度明确。
第一条测试验证核心业务含义:
from decimal import Decimalfrom discount import final_pricedef test_twenty_percent_discount() -> None:assert (final_price(Decimal("100"), Decimal("0.20"))== Decimal("80.00"))
再补充非法边界:
import pytestdef test_rejects_invalid_discount_rate(rate: Decimal) -> None:with pytest.raises(ValueError):final_price(Decimal("100"), rate)
本地真实运行:
$ python -m pytest -q test_discount.py...[100%]3 passed
三条测试并不多,却分别保护了核心结果与上下边界。测试的价值不在数量,而在是否对应真实风险。
AI 可能通过改变测试来“解决”失败。例如把期望值从 80.00 改为 20.00,流水线会变绿,但业务错误被合法化了。
因此,测试结果必须和代码差异一起审查:
git diff -- discount.py test_discount.pypython -m pytest -q test_discount.py
审查时至少回答:
真实项目可以把验证分成四层:
不要为了显得“工程化”而把所有情况都塞进端到端测试。测试越接近底层业务规则,通常越快、越稳定,也越容易定位问题。端到端测试只保留最关键的成功与失败路径。
让 Codex 完成任务时,不要只要一句“已修复”。要求它保留:
一个可用的完成报告可以是:
修改:discount.py、test_discount.py验证:python -m pytest -q test_discount.py结果:3 passed,退出码 0未验证:未连接真实订单数据库人工检查:确认 discount_rate 的业务定义为比例
这比“测试都通过了”多不了几行,却能让下一位审查者知道证据覆盖到哪里、没有覆盖到哪里。
如果 AI 可以任意修改文件、访问网络、读取凭据并直接发布,那么一次错误判断的影响会被放大。
更稳妥的做法是按任务开放最小权限:
权限不是用来阻止 AI 工作,而是把错误限制在可恢复范围内。
生成者天然容易沿用自己的假设。至少要把“生成”和“最终裁决”分开,关键变更由人确认。
一次 AI 审查没有输出发现,只能说明它在当前上下文中没有识别到问题,不能证明系统安全或业务完全正确。
格式、未使用变量和简单类型问题交给确定性工具;AI 审查应关注跨文件语义、错误路径、权限和需求偏差。
每次 AI 编程完成后,按顺序检查:
其中任何一步缺少证据,就应该把状态写成“未验证”或“需要确认”,而不是“完成”。
Codex 生成代码不是交付终点,而是验证流程的输入。识别 AI 编程幻觉的核心,不是猜模型什么时候会错,而是用业务契约、差异审查、分层测试、最小权限和人工批准建立证据链。只要每个结论都能追溯到代码、命令输出和责任人,即使模型偶尔犯错,错误也很难悄悄穿过发布门。
参考资料:
摩托车活塞环性能如何
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
Ondo将于今日上线股票永续合约
暗黑4S14野蛮人终局BD攻略
区块链OTC交易所有哪几家比较正规?
Binance新增15种bStocks代币化证券为杠杆抵押资产
货拉拉如何查看历史订单 货拉拉往期行程轨迹查询【功能教学】
Meme币DOGS今晚上线!开局就解锁91%代币是否带来风险?
剑侠世界3雪峰论剑怎么打-剑侠世界3雪峰论剑打法介绍
五千元以下的笔记本几乎消失!经销商:至少一年看不到涨价尽头
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
今日小鸡庄园答案2026.7.2
美债股纳斯达克首盘暴跌38%且加密代理交易解体,AVAX价格何去何从?
男生头像配网名可爱(精选100个)
赵云与阿斗神兵符使用教程 神兵符怎么使用
国家养老服务消费补贴上线京东
余姚的路虎4s店在哪个位置
英伟达机器人团队在京沪深招人,聚焦具身智能等四大领域
一站式PDF转Markdown解决方案PDF3MD
彩云天气怎么看分钟级降雨预报 彩云天气精准预报方法【技巧】
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc