9fa6ea5a960840cee40a71d15cd3d6ff.gif

【CSDN 编者按】大型语言模型(LLM)技术迅猛发展,关于它们能否替代人类工作者的讨论愈发热烈。本文作者自 1996 年开始便一直从事 Web 开发,他通过自己编写 AI 应用的经验,深入探讨了 LLM 在辅助人类执行任务方面的能力与局限性。

原文链接:https://seldo.com/posts/what-ive-learned-about-writing-ai-apps-so-far

作者 | Laurie Voss      翻译 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

起初我打算写一篇名为“如何编写 AI 应用程序”的文章,但后来觉得这个话题过于宽泛,所以我把它简化成了现在的这篇文章。或许有人会问,我凭什么指导你如何编写任何东西呢?以下是我自己在编写 AI 应用,特别是大型语言模型(LLM)应用时会遵循的一些原则。

有一个我已经认输的争论点是:我们根本不应该把 LLM 称为“AI”;它们实际上是机器学习的一种形式,而非那个对普通大众而言听起来像是通用智能的技术——“AI”这个名字,甚至比我之前认为的最差技术名称“无服务器”还要误导人。但是,我们现在还是习惯把 LLM 叫做 AI,并且非 LLM 领域的部分也正在被 LLM 周围的喧嚣声所淹没。在日常工作中,我也经常这样做,所以我当然也是导致这个问题的一部分。

尽管我们可能无法改变这种叫法,但作为从业者,我们至少应该清楚它究竟是什么:非常高级的自动补全工具。当规模足够大时,自动补全功能可以执行一些看似推理的任务,而在某种程度上,“看似推理”和“实际推理”之间的界限已经模糊了。即便如此,作为软件开发者,我们应该清醒地认识到这些系统的局限性,不要尝试让它们去做力所不能及的事情。

01e950f25c0c3d1991f913ff8bda679d.jpeg

f0aa6ab98e6bd4399579c86e286e4828.png

LLM 擅长将大量文本转化为精简文本

这是关于大型语言模型(LLM)最重要、最基本的一点,也是判断一个 LLM 应用是否有效的黄金法则。如果你的任务是将大量文本输入给 LLM,并要求它转换为更少的文本输出,那么这项任务很可能完成得非常出色;但如果你要求它生成与输入量相当的文本内容,那效果可能平平;如果你希望它生成的文本比你提供的还要多,那就别指望了。本文接下来的部分将通过实例来说明这一法则在实际中的应用。

f82bcfea151e8f2397ef66d12a7387cc.png

LLM 只会可靠地知道你刚刚告诉它们的信息,别依赖训练数据

LLM 是在互联网上找到的海量信息上进行训练的。因此,像 Claude 和 ChatGPT 这样的工具可以回答各种常识性问题,但这并不意味着可以依靠 LLM 已有的知识来执行某些任务。你不知道 LLM 是基于什么数据训练的(众所周知,这些数据往往是非法获取的,因此训练者拒绝透露),因此你也就不知道它的知识边界,以及何时会开始产生幻觉(即输出错误或不准确的信息)。

解决这个问题的办法就是直接向 LLM 提供答案。例如,你想知道合同的具体条款?那就把合同交给它;想知道视频的主题?那就提供视频的文字稿;希望它做出决策?那就给予所有用于决策的信息。这些都是将文本转换成更简洁文本的例子,而 LLMs 在这方面很擅长。(当然,你也可以尝试通过微调 LLM 来扩展它的知识范围,但这条路可能充满挑战。)

这就是为什么检索增强生成(RAG)不会被淘汰的原因。RAG 本质上是先告知 LLM 所需的信息,然后立即要求它以浓缩的形式返回这些信息。LLM 在处理这类任务时表现出色,这也是 RAG 广受欢迎的原因所在。

55de7758611d8fca244ec8385e71f2f7.png

LLM 不能为你写作

这明确属于“将少量文本扩展为大量文本”的范畴。如果你给 LLM 一个提示,并要求它生成小说篇幅的文本,它确实可以做到。但是,LLM 只知道你告诉它的内容。如果你给出简短的提示并要求生成长篇大论,那么你将得到无尽的废话、冗长的陈述、毫无意义的胡言乱语以及幻觉般的输出。你无法让 LLM 为你进行必要的思考以写出一些东西,思考的工作必须由你自己完成。要想让 LLM 写出好东西,你必须给它一个很长的提示——可实际上,如果你要给出那么长的提示,还不如自己直接写呢。

db2e28905e1e5207d0865e059801da63.png

让它们自我修正,必要时多次尝试

LLM 的一个神奇之处在于,它们能够观察自己的输出,并判断是否达到了预期效果。这种能力有时被称为自省,是智能体(agent)行为的关键特征。我必须得说,给予 LLM 机会去检查是否出错、并给它一个重新尝试的机会,这是一个非常明智的做法。虽然这会增加应用程序的复杂性,但其可靠性将会成倍提高。LLM 不擅长一次成功,但如果你给它多几次尝试的机会,它通常都能搞定。这就是它们非确定性的诅咒与魔力所在。

77d775a7914368fe0e7fca1d63287d36.png

尽量减少 LLM 的工作量

关于可靠性,上文已经提到了:那你知道什么才是真正可靠的吗?常规编程。它会根据极其精确的指令,每次都将输入转化为输出,方式始终如一。如果你要求 LLM 执行的任务可以通过编写一些常规代码来实现,那就去写代码吧。这样运行起来会更快、更便宜且更为可靠。LLM 能够处理模糊性和复杂性,这很厉害,但你给它们处理的模糊性和复杂性越少,它们的表现就会越好。常规的声明式编程就很靠谱,你应该尽可能地使用这种方式。

d10d9ae03432af3b6cba1b940c73065a.png

LLM 可以辅助人类执行任务,但不能替代人类

这实际上是上述所有观点的一个推论。如果你有一个非常棒的提示,其中包含了大量细致的指令,并且提供了执行该任务所需的所有数据,再加上多次反思和尝试的机会,以及尽可能多的常规代码,那么 LLM 确实能够执行这些任务。通过集合多个这样的提示、数据和代码组合,你可以创建一个能执行众多任务的智能体。此时,你可能会想某个人的工作是否仅仅是这一系列任务的集合,并认为“既然已经创建了能够完成这些任务的智能体,就可以取代这个人”。这种想法很诱人,但我从未见过它真正奏效。

工作不仅仅是任务的集合。工作还需要确定优先级、判断特殊情况、与其他信息来源(如同事规章制度等)进行临时沟通的能力、应对完全不可预见情况的能力以及丰富的经验。正如我所说,LLM 可以处理一定程度的模糊性和复杂性,但这越少越好。让它们承担一个人类规模的工作量,会带来远超它们处理能力的模糊性和复杂性。这就像是要求它们将文本扩展为更多文本,这根本行不通。

有人可能争论说,随着 LLM 上下文窗口变得更大,智能体工具变得更加复杂,最终会出现能够完全替代人类的能力:毕竟,LLM 擅长将文本转换为更简洁的文本。要复制一个人类所知的一切需要多少文本?我不知道,但这肯定远远超过当前任何 LLM 所能处理的数量。在此期间,试图用 LLM 替代人类的努力都会失败。让你的应用程序增强并加速人类的工作吧,这才是我见过最为有效的方法。

尤其值得一提的是,因为我经常在黑客松上看到这一点:请停止尝试编写一个能替代医生或律师的 LLM 应用程序。LLM 的训练中并没有包含法律学位或医学学位,而且你绝对无法将 7 年的医学训练压缩到任何一个提示中。我认为 LLM 无法可靠地取代任何人类工作者,尤其是医生——不要把你的健康交给一个只会试图提供帮助的自动补全系统。也不要因为你用 ChatGPT 来生成法律条款而被告上法庭。

123f66f292d4189856d710e0b3d97fbf.png

LLM 既强大又有限制

与如今业内关于 AI 能做什么的炒作相比,我声称它们能“将文本转换成简洁文本”的能力似乎是一次巨大的倒退。然而,将文本转化为更简洁文本仍然是一个庞大的潜力领域和巨大市场,尤其是在其具有明确边界的情况下,不是由炒作驱动的过度承诺,也不依赖于 LLM 将一夜之间变得更好的假设。审视这些可能性,找到适合这些边界的项目,然后尽情享受其中的乐趣吧。

b7561aac447c8c5c3947a14a88aec6f9.gif

推荐阅读:

▶Kimi深夜甩出对标满血版o1多模态思考模型,技术细节全公开,Jim Fan预言:2025强化学习王者归来

▶OPPO追查内测版系统桌面App违规泄露;5000亿AI基建计划遭马斯克“拆台”;豆包大模型1.5 Pro发布 | 极客头条

▶B站程序员在前端代码中“投毒”、威胁封禁与其争执的用户,官方:已开除与追责

07965ce5bdaebc18887eed9a00948a13.jpeg

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐