Langchain JavaScript

2025年2月18日 | 阅读时长8分钟

什么是 Langchain.JS?

在 JavaScript 中,Langchain 是一个用于开发由大型语言模型 (LLM) 提供支持的应用程序的框架。

简单来说,LangChainJS 是一个多功能的 JavaScript 框架,可帮助开发人员和研究人员创建、实验和分析语言模型及代理。

它还为自然语言处理 (NLP) 爱好者提供了一些功能,从构建自定义模型到有效操作文本数据,由于它是一个 JavaScript 框架,它还允许开发人员轻松地将 AI 应用程序集成到 Web 应用程序中。

LangChain 还有助于简化 LLM 应用程序生命周期的每个阶段

  • 开发:在 JavaScript 中,使用 Langchain,我们可以构建应用程序、构建块、组件和第三方集成。使用 LangGraph.js 构建具有一流流式传输和人工干预支持的有状态代理。
  • 生产化:我们可以使用 LangSmith 来检查、监控和评估我们的链,以便我们可以持续优化并自信地部署。
  • 部署:使用 LangGraph 将您的 LangGraph 应用程序转化为可用于生产的 API 和助手。

前提条件

首先,我们需要创建一个新文件夹并安装 LangChain npm 包

创建新文件夹后,我们可以使用 .mjs 扩展名创建一个新的 JS 模块文件。例如,demo.mjs。

Agent (代理)

在 Langchain 中,代理是一个可以理解和生成文本的实体。这些代理可以配置特定的行为和数据源,并经过训练来执行各种与语言相关的任务,这使它们成为各种应用程序的多功能工具。

创建 LangChain 代理

在 JavaScript 中,代理可以配置为使用工具来收集所需数据并制定良好响应。让我们举一个例子,它利用 Serp API 探索网络以获取与给定问题或输入相关的信息。此外,它使用 LLM 数学工具来执行数学运算,例如单位转换或确定两个值之间的百分比变化。

在定义了带有参数 modelName: "gpt-3.5-turbo" 和 temperature: 0 的模型变量后,创建执行器以将指定的工具与已建立的模型集成。

型号

在 JavaScript 中,Langchain 有三种类型的模型

语言模型

在 JavaScript 中,Langchain 提供了一种在 JavaScript 中应用语言模型的方法,用于根据给定的文本输入生成文本输出。语言模型设计成适合简单的输入-输出语言任务。

例如

输出

1. Strawberries
2. Cranberries
3. Raspberries
4. Redcurrants
5. Red Gooseberries
6. Red Elderberries
7. Red Huckleberries
8. Red Mulberries

聊天模型

在此模型中,我们利用更细致的响应和引人入胜的对话。聊天模型和语言模型之间的技术区别在于,聊天模型代表了语言模型的一种变体。这些模型在语言模型的基础上运行,并且它们略有不同。

嵌入

嵌入模型提供了一种将文本中的单词和数值转换为向量的方法,这些向量随后可以与其他单词或数字关联。

简单来说,通过使用嵌入,我们可以将文本中的单词和数字转换为可以与其他数字或单词相关的向量。

示例

输出

[
  0.02274114,  -0.012759142,   0.004794503,  -0.009431809,    0.01085313,
  0.0019698727,  -0.013649924,   0.014933698, -0.0038185727,  -0.025400387,
  0.010794181,   0.018680222,   0.020042595,   0.004303263,   0.019937797,
  0.011226473,   0.009268062,   0.016125774,  0.0116391145, -0.0061765253,
  -0.0073358514, 0.00021696436,   0.004896026,  0.0034026562,  -0.018365828,
  ... 1501 more items
]

这就是嵌入的表示。即使是简短的六个单词短语,也需要大量的浮点数。利用这种嵌入可以实现输入文本与潜在响应、相关文本、名称和各种其他上下文元素的关联。

为什么要使用 JavaScript Langchain?

在 JavaScript 中使用 Langchain 有以下几个原因

构建上下文感知应用程序

使用 Langchain,我们可以创建一个能够理解上下文的 Excel 程序。它可以将语言模型连接到众多上下文资产,如个人指令、特定示例或相关内容。它还允许 LLM 根据场景调整其响应。

推理能力

使用 Langchain,我们可以用它来构建 LLM,这些 LLM 可以根据提供的上下文推断如何回答问题或采取什么行动。

模块化且易于使用的组件

它还提供了一系列模块化组件,可帮助我们集成项目并且易于使用。无论我们是使用整个 Langchain 框架还是只指定组件,它都有助于简化开发。

预构建链

Langchain 包含一个开箱即用链的库。在 Langchain 中,我们有一些预构建的组件组合,可用于完成常见的语言处理任务,它还可以节省我们构建应用程序的时间和精力。

JavaScript 熟悉度

如果用户已经熟悉 JavaScript,那么使用 Langchain 是一个不错的选择。因为它建立在 JavaScript 之上,所以它受益于开发人员基础和现有技能,使其更易于学习和使用。它还简化了 AI 应用程序直接集成到 Web 应用程序中的过程。

实验与开发

使用 Langchain,我们可以为研究人员和开发人员提供一个强大的工具包,用于处理 LLM。它简化了构建、实验和分析这些模型的过程。

总而言之,JavaScript 中的 Langchain 是一个多功能框架,可用于创建强大而智能的应用程序。如果我们在寻找一种利用 LLM 进行上下文感知任务、推理等的方法,它会很有帮助。

在 JavaScript 中使用 Langchain 的好处

在 JavaScript 中使用 Langchain 有一些好处,例如

多语言集成

在 JavaScript 中,Langchain 允许您将多种编程语言平滑地集成到您的代码库中。当我们需要将用 Python、Rust、Go 等语言编写的功能或库整合到我们的 JavaScript 应用程序中,而无需用 JavaScript 重写所有内容时,这尤其有用。

性能优化

通过利用更适合某些任务的语言,Langchain 有助于优化我们应用程序的性能。这是通过将计算密集型任务委托给可以更高效地执行它们的语言来实现的。

灵活性和可扩展性

在 JavaScript 中,Langchain 通过允许您为应用程序的每个部分选择最佳语言来提供灵活性。这可以带来更清晰的代码和更易于维护的架构,因为不同的语言可以在它们最擅长的领域使用。

访问现有库

许多强大的库和框架存在于 JavaScript 之外的语言中。Langchain 使您能够直接在我们的 JavaScript 环境中访问和利用这些库,从而增强应用程序的功能,而无需重复造轮子。

更轻松地采用新技术

有时,尖端技术或小众工具仅在特定的编程语言中可用。在 JavaScript 中,Langchain 通过允许将这些技术集成到应用程序中来促进其采用,从而使您的开发堆栈保持最新和具有竞争力。

跨语言调试和错误处理

在 JavaScript 中,Langchain 包含用于跨不同语言进行调试和错误处理的工具和机制。这有助于维护应用程序的整体稳定性和可读性,即使在使用多种语言时也是如此。

社区和生态系统

根据您使用 Langchain 与 JavaScript 集成的语言,您可以利用不同的社区和生态系统。这可以提供来自这些社区的支持、文档和更新,从而丰富您的开发体验。

可扩展性

随着应用程序的增长,在 LangChain 的帮助下,可以通过允许您独立扩展不同的组件,根据需要利用各种语言的优势来帮助管理复杂性。

总之,Langchain 通过在一个项目中启用多种语言的使用,利用每种语言的优势以实现最佳性能、灵活性和可扩展性,从而增强了 JavaScript 开发。这可以带来更高效的开发流程和更强大的应用程序。

在 JavaScript 中使用 Langchain 的局限性

在 JavaScript 中使用 Langchain 可能有几个限制

性能开销

Langchain 是一个将函数式编程风格引入 JavaScript 的库。众所周知,函数式编程有时功能强大,但与命令式或面向对象编程风格相比,它通常会产生性能开销,尤其是在性能至关重要的环境中。

学习曲线

在 JavaScript 中,Langchain 提倡的函数式编程范式对于不熟悉柯里化、高阶函数和函数组合等概念的开发人员来说,学习曲线可能很陡峭。这可能会增加开发人员理解和维护使用 Langchain 编写的代码所需的时间。

调试复杂性

与命令式或面向对象代码相比,使用 Langchain 编写的代码有时更难调试。这是因为函数通常组合在一起,并且错误可能发生在函数调用链的深处,这使得跟踪变得具有挑战性。

依赖管理

Langchain 是一个额外的依赖项,需要在 JavaScript 项目中进行管理。根据库的大小和成熟度,这可能意味着更新、与其他库的兼容性或 API 更改的潜在问题。

兼容性

虽然 Langchain 旨在跨不同的 JavaScript 环境工作,但可能存在与某些 JavaScript 引擎或版本之间的兼容性问题,特别是如果该库使用不普遍支持的较新 JavaScript 功能。

有限用例

函数式编程范式并非总是最适合每个问题领域或团队。一些开发人员可能会发现命令式或面向对象的风格对于某些类型的应用程序或项目来说更直观且更易于维护。

过度工程

使用 Langchain 可能会导致过度工程,从而解决可以用更简单的 JavaScript 构造有效解决的问题。这可能会导致团队中其他开发人员更难理解和维护代码。

总而言之,虽然 Langchain 可以在 JavaScript 中提供强大的函数式编程能力,但开发人员应考虑这些限制,并评估其特定项目和团队上下文的收益是否大于成本。