保持确定性工作的确定性

这是代理工程和人工智能驱动开发系列文章的第二篇文章。请阅读此处的第一部分,并查找 4 月 2 日 O’Reilly Radar 上的下一篇文章。前 90% 的代码占用了前 90% 的开发时间。剩余 10% 的代码帐户 [...]

来源:O'Reilly Media _AI & ML

这是有关代理工程和 AI 驱动开发的系列文章中的第二篇文章。请在此处阅读第一篇文章,并查找 4 月 2 日在 O’Reilly Radar 上发布的下一篇文章。

前 90% 的代码占用了前 90% 的开发时间。剩下的 10% 的代码占据了另外 90% 的开发时间。

—Tom Cargill,贝尔实验室

作为代理工程和人工智能驱动开发工作的一部分,我一直在进行的实验之一是二十一点模拟,其中法学硕士与用简单英语编写的二十一点策略玩了数百手牌。人工智能使用这些策略描述来决定如何为每手牌做出打牌/停牌/双倍下注的决定,而确定性代码则发牌、检查数学并验证是否正确遵循了规则。

我的模拟的早期运行通过率为 37%。法学硕士会将牌总数加起来错误,完全跳过庄家的回合,或者忽略它应该遵循的策略。最大的问题是这些错误加剧了:如果模型错误地计算了第三张牌上玩家的总数,那么此后的每个决定都是基于错误的数字,所以即使其余的逻辑都很好,整手牌都是垃圾。

有一个有用的方法来思考此类可靠性问题:九九定律。让基于 LLM 的系统达到 90% 的可靠性是前九个,也是“简单”的一个。从 90% 达到 99% 所需的工程工作量大致相同。从 99% 到 99.9% 也是如此。每九个的费用和最后一个差不多,而且你永远不会停止前进。安德烈·卡帕蒂 (Andrej Karpathy) 根据他在特斯拉构建自动驾驶系统的经验创造了这个术语,他们花了数年时间获得了两到三个 9,但仍有更多工作要做。

提示 1:通过 7 步游戏跟踪运行“得分”。不要使用代码、Python 或工具。完全在你的脑海里做这件事。对于每一步,我都会给你一句话和一条规则。

重现聊天中的级联故障