它终于来了... LangChain 的 TypeScript 支持。
这意味着什么?这意味着您所有喜爱的提示、链和代理都可以在 TypeScript 中原生重建。Python 版本和 TypeScript 版本都使用相同的可序列化格式,这意味着工件可以在语言之间无缝共享。作为使用示例,我们还使用 TypeScript 重建了 ChatLangChain。
非常感谢社区在此方面的帮助。
重要链接
- GitHub 仓库: https://github.com/hwchase17/langchainjs
- 文档: https://hwchase17.github.io/langchainjs/docs/overview/
- ChatLangChain-js: https://github.com/sullivan-sean/chat-langchainjs
为什么选择 TypeScript?
最初,玩语言模型的人群更多是研究型、面向机器学习的人员 - 他们中的大多数人更喜欢 Python。然而,自从 ChatGPT 发布并迅速获得成功以来,使用 LLM 的想法已经成为主流。因此,我们看到各技术栈的人员对 LangChain 的兴趣大幅增加,其中许多人更喜欢使用 javascript。因此,我们认为开发一个 javascript 原生版本的 LangChain 是合适的。
这个包中有什么?
Python 包中的所有相同抽象都存在于 Typescript 包中。
由于 Typescript 版本更新得多,因此其中的实现较少。此外,许多更偏向 ML 的功能(分词器、LLM 等)对 TypeScript 的支持较差。尽管如此,我们仍打算随着时间的推移引入和发展这些功能。
借助这些抽象,我们发现很容易重现我们之前在 Python 中制作的 “ChatLangChain” Web 应用程序,以便在我们的文档上拥有一个聊天机器人。这利用了许多这些抽象,因此是一个完美的展示。请在此处查看 TypeScript 版本。
与 Python 包的关系
我们希望 TypeScript 包尽可能地镜像 Python 包。为此,我们的首要任务是确保我们在 Python 中为提示、链和代理引入的序列化格式适用于 TypeScript 版本。
我们将此视为优先事项,因为随着时间的推移,当我们发展 LangChainHub 时,我们希望这些工件可以在语言之间共享。这将允许更大规模和更广泛的社区采用和共享最佳的提示、链和代理。这也将使在一个语言中进行原型设计,然后切换到另一种语言成为可能。目前,由于 TypeScript 包的功能略少于 Python 包,并非所有链都可以在语言之间移植。但是,我们打算努力使它们相等。
随着时间的推移,软件包可能会根据各自的受众而出现一些差异,这并非不可能。例如,Python 包可能会开始包含更多研究性或以数据为中心的概念,而 TypeScript 包可能会包含更多旨在促进 Web 开发的功能。我们实际上很高兴与社区一起探索不同的优先级和用例。但在整个过程中,我们都打算继续使核心提示、链、代理(以及即将推出的更多内容)可序列化并在语言之间可用。
谢谢
非常感谢社区对 “Langchain,但要用 typescript” 的支持和兴趣。一度有一个 Discord 群组 DM,里面有 10 个人都在贡献想法、建议和意见。特别要大声感谢 Sean Sullivan 和 Nuno Campos 在这方面的大力推动。
我们还要预先感谢社区对这个包的反馈、贡献和想法。在我们短暂地预告它之后,我们已经收到了很多兴趣,我们真的很高兴能一起开发它。