LangChain 旨在实现的目标之一是将语言模型连接到外部数据和计算资源。这使得语言模型能够充当推理引擎,并将知识和执行外包给其他系统。 一些示例如下:
- 检索增强生成:将语言模型连接到检索系统,并使用该系统影响生成过程。 这使得语言模型能够回答关于其训练数据以外信息的问题。
- 与 API 交互:让语言模型生成调用特定 API 请求的路由和参数。 这使得人类能够通过自然语言与 API 交互。
- 代码生成:让语言模型编写然后执行代码。 这可以使人们仅通过提问就生成代码。
虽然这很强大,但也可能很危险。 关于 AI 安全已经讨论了很多,AI 安全有很多不同的类型和考虑因素。 我们最关心的类型是当您将语言模型连接到其他系统时会发生什么。 虽然这样做可以实现许多惊人的体验(如上面列出的那些),但它也开启了一个全新的风险向量。
当语言模型生成的输出不安全以下游传递时,就会出现这种风险向量,无论是不安全地传递到一个删除某些数据的 API 请求,还是不安全地传递到一些删除所有文件的恶意代码。 这可能自然发生或恶意发生。 当语言模型只是搞砸时 - 因为它很容易出错 - 就可能自然发生。 它也可能通过诸如提示注入之类的技术恶意发生。
LangChain 最初是高度实验性的,并且包含了许多这些用例,因为这些用例是推动可能性的边界的用例。 其中一些用例存在安全问题,有些则没有。 随着 LangChain 的成熟,我们希望更好地分离这些用途,以便区分它们。
我们已经迈出了第一步,发布了 `langchain_experimental`,一个单独的 Python 包。 我们已将所有引发 CVE 的组件移至该软件包中。 我们还将之前在 `langchain.experimental` 模块中的所有内容也移到了那里。 您可以在此处找到有关如何迁移的说明。
展望未来,我们的双重目标是使核心 `langchain` 更加稳健和生产就绪,同时快速推进 `langchain_experimental` 的发展。 我们一直不愿接受一些更具实验性的功能,但这种分离现在有望加快这一速度。
随着时间的推移,我们也很可能会将更多内容转移到 `langchain_experimental`。 当我们这样做时,我们总会在进行任何重大更改之前至少提前一周发出通知,并更新迁移指南。
我们要感谢整个社区的理解,以及他们在我们解决任何问题时的耐心。 特别是,我们要感谢一些社区成员在此方面的帮助和鼓励:Rich Harang(以及整个 Nvidia 团队)、Justin Flick、Or Raz 和 Boaz Wasserman。