发布时间:2024 年 1 月 13 日
这是关于 LLM 和聊天机器人的三部分系列文章的第一篇。关于使用 WebLLM 构建聊天机器人的第 2 部分和关于使用 Prompt API的第 3 部分已上线。
大型语言模型 (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,只需在所谓的提示中用自然语言表达意图即可。
LLM 的局限性
LLM 也存在某些局限性
- 非确定性行为:LLM 可能会对相同的提示产生不同甚至有时是矛盾的响应,因为它们的输出取决于概率模型而不是固定的规则。
- 幻觉:这些模型有时可能会生成不正确或无意义的信息,依赖于学习到的模式而不是事实准确性。
- 提示注入:LLM 容易受到提示注入攻击,用户可以在其中精心制作输入提示,操纵模型偏离其预期功能或产生不需要的结果。
因此,用户必须在采取任何重要的操作之前验证 LLM 生成的结果。
在处理设备端 LLM 时,必须考虑其大小。它们的文件大小达到数 GB,并且必须在首次使用前下载到用户的设备。较小的模型往往会产生较低质量的响应,尤其是在与云端模型相比时。
选择本地解决方案
将 LLM 集成到您的 Web 应用程序中的第一个直觉可能是使用云提供商。许多提供商提供高质量的 LLM,其中一些是特定提供商独有的。基于云的 LLM 以合理的成本提供快速的推理速度,这通常是按处理的 token 计算的。
相比之下,本地解决方案具有引人注目的优势。通过直接在用户设备上运行,本地托管的 LLM 提供更可靠的响应时间,即使在用户离线时也能保持可访问性,并且不需要开发人员支付订阅费或其他持续成本。值得注意的是,它们可以大大提高用户安全性。通过将所有活动保留在设备上,您可以避免将个人身份信息 (PII) 传输给外部提供商或地区。
演示
在学习如何自己构建之前,您可以先看看具有聊天机器人功能的成品演示。
接下来,您将使用 WebLLM 向待办事项列表应用程序添加聊天机器人。