大语言模型的优势和限制

发布时间:2024 年 1 月 13 日

本文是关于 LLM 和聊天机器人的三篇系列文章中的第一篇。第 2 部分介绍了如何使用 WebLLM 构建聊天机器人,第 3 部分介绍了如何使用 Prompt API

大语言模型 (LLM) 正成为软件开发中的重要构建块:LLM 非常适合生成和处理自然语言文本,可实现数据提取、总结等应用场景,或协助与用户数据进行对话。

在本系列文章中,我将介绍设备端 LLM 的优点和缺点,并引导您使用两种本地和离线方式(基于 Web 的 LLM 运行时 WebLLM 和 Chrome 的实验性 Prompt API)向现有应用添加聊天机器人功能。

可能的用例

添加聊天机器人之前的应用。
我们的待办事项应用。

我们将在传统的待办事项应用的基础上构建一个聊天机器人。您可以在 GitHub 上找到每个步骤的源代码。用户可以添加新的待办事项、将其标记为已完成以及删除它们。

您可能需要添加一项功能,以便用户详细了解待办事项数据或执行其他功能。借助聊天机器人功能,用户可以:

  • 询问未完成的任务数量。
  • 找出重复或非常相似的待办事项。
  • 将待办事项分门别类。
  • 根据已完成的任务接收新任务的推荐。
  • 将任务翻译成其他语言。
  • 以 XML 格式导出待办事项列表。

以上只是 LLM 可以处理的任务的几个示例。

什么是大语言模型?

LLM 是用于处理和生成自然语言文本的人工神经网络。目前大多数 LLM 都基于 Google 开发的 Transformer 架构。例如,Google 的 Gemini 和 Gemma 模型、OpenAI 的 GPT 模型系列,以及 Meta AI 的 LLaMa 和 Mistral AI 的 Mistral 等开源模型。

由于 LLM 基于大量数据进行训练,因此具有令人印象深刻的多种功能。它们可以理解多种语言、拥有各种知识、在不同语言之间进行翻译,或生成编程代码。这些功能的程度可能会因模型大小而异,如了解 LLM 大小中所述。

LLM 引发了软件架构范式的转变,因为自然语言现已成为软件工程的核心特征。无需使用明确定义的接口调用 API,只需在所谓的提示中用自然语言表达 intent 即可。

LLM 的局限性

LLM 也存在一些限制:

  • 非确定性行为:LLM 可能会对同一问题产生不同的回答,有时甚至会产生矛盾的回答,因为它们的输出取决于概率模型,而不是固定规则。
  • 幻觉:这些模型有时可能会生成不正确或无意义的信息,因为它们依赖的是学到的模式,而不是事实准确性。
  • 提示注入:LLM 可能容易受到提示注入攻击,攻击者会构造输入提示来操纵模型偏离其预期功能或产生不希望的结果。

因此,用户必须先验证 LLM 生成的结果,然后才能执行任何后续操作。

处理设备端 LLM 时,必须考虑其大小。它们的文件大小可达数 GB,并且必须先下载到用户的设备上,然后才能首次使用。较小的模型往往会提供质量较低的回答,尤其是与云端支持的模型相比。

选择本地解决方案

在将 LLM 集成到 Web 应用时,您可能首先会想到使用云服务提供商。许多提供商都提供高质量的 LLM,其中一些是特定提供商的专属 LLM。基于云的 LLM 可以合理的费用提供快速的推理速度,费用通常按处理的令牌计算。

相比之下,本地解决方案具有强大的优势。通过直接在用户设备上运行,本地托管的 LLM 可提供更可靠的响应时间,即使用户处于离线状态也能访问,并且开发者无需支付订阅费用或其他持续性费用。值得注意的是,这些功能可以显著提高用户安全性。通过将所有活动保留在设备端,您可以避免将个人身份信息 (PII) 传输到外部提供商或地区。

演示

在了解如何自行构建聊天机器人之前,您可以先查看已完成的聊天机器人功能演示。

接下来,您将使用 WebLLM 将聊天机器人添加到待办事项应用