跳过至主要内容

安装

支持的环境

LangChain 用 TypeScript 编写,可以在以下环境中使用

  • Node.js (ESM 和 CommonJS) - 18.x、19.x、20.x
  • Cloudflare Workers
  • Vercel / Next.js (浏览器、无服务器和边缘函数)
  • Supabase 边缘函数
  • 浏览器
  • Deno
  • Bun

但是,请注意,并非所有环境都支持单独的集成。

安装

要安装主要的 langchain 包,请运行

npm install langchain @langchain/core

虽然此包可以作为使用 LangChain 的合理起点,但 LangChain 的大部分价值在于将其与各种模型提供者、数据存储等集成。默认情况下,执行此操作所需的依赖项未安装。你需要分别安装特定集成所需的依赖项。我们将在本指南的下一部分中展示如何执行此操作。

请参阅有关 安装集成包 的部分,了解安装 LangChain 包时的一些特殊注意事项。

生态系统包

除了 langsmith SDK 之外,LangChain 生态系统中的所有包都依赖于 @langchain/core,其中包含其他包使用的基类和抽象。下面的依赖关系图显示了不同包之间的关系。定向箭头表示源包依赖于目标包

注意:你的应用程序只能使用一个版本的 @langchain/core。即使你不打算这样做,常见的包管理器也可能会在解析直接依赖项时引入其他版本。请参阅有关 安装集成包的这一部分,了解更多信息以及解决此问题的方法。

@langchain/community

@langchain/community 包包含各种第三方集成。使用以下命令安装

npm install @langchain/community @langchain/core

还有一些包含 LangChain 集成的更细粒度的包,用于单个提供者。

@langchain/core

@langchain/core 包包含 LangChain 生态系统其余部分使用的基本抽象,以及 LangChain 表达式语言。它应该单独安装

npm install @langchain/core

LangGraph

LangGraph.js 是一个用于使用 LLM 构建有状态的多参与者应用程序的库。它与 LangChain 无缝集成,但也可以单独使用。

使用以下命令安装

npm install @langchain/langgraph @langchain/core

LangSmith SDK

LangSmith SDK 由 LangChain 自动安装。如果你不与 LangChain 一起使用它,请使用以下命令安装

npm install langsmith

安装集成包

LangChain 支持包含与各个第三方提供者集成的模块的包。它们可以像 @langchain/anthropic 那样具体,其中包含仅针对 Anthropic 模型的集成,也可以像 @langchain/community 那样广泛,其中包含更广泛的社区贡献的集成。

这些包,以及主要的 LangChain 包,都将 @langchain/core 作为对等依赖项,以避免包管理器安装同一包的多个版本。它包含这些集成包扩展的基础抽象。

为了确保所有集成及其类型能够正确地相互交互,重要的是它们都使用相同版本的 @langchain/core。如果遇到关于基类的类型错误,则可能需要确保你的包管理器正在解析单个版本的 @langchain/core。为此,你可以在项目 package.json 中添加 "resolutions""overrides" 字段,如下所示。名称将取决于你的包管理器

提示

yarnpnpmresolutionspnpm.overrides 字段必须设置在根 package.json 文件中。

如果你使用的是 yarn

yarn package.json
{
"name": "your-project",
"version": "0.0.0",
"private": true,
"engines": {
"node": ">=18"
},
"dependencies": {
"@langchain/anthropic": "^0.0.2",
"@langchain/core": "^0.3.0",
"langchain": "0.0.207"
},
"resolutions": {
"@langchain/core": "0.3.0"
}
}

如果你使用的是 yarn 版本 2 或更高版本,也可以尝试运行 yarn dedupe 命令。

或者对于 npm

npm package.json
{
"name": "your-project",
"version": "0.0.0",
"private": true,
"engines": {
"node": ">=18"
},
"dependencies": {
"@langchain/anthropic": "^0.0.2",
"@langchain/core": "^0.3.0",
"langchain": "0.0.207"
},
"overrides": {
"@langchain/core": "0.3.0"
}
}

你也可以尝试 npm dedupe 命令。

或者对于 pnpm

pnpm package.json
{
"name": "your-project",
"version": "0.0.0",
"private": true,
"engines": {
"node": ">=18"
},
"dependencies": {
"@langchain/anthropic": "^0.0.2",
"@langchain/core": "^0.3.0",
"langchain": "0.0.207"
},
"pnpm": {
"overrides": {
"@langchain/core": "0.3.0"
}
}
}

你也可以尝试 pnpm dedupe 命令。

加载库

TypeScript

LangChain 使用 TypeScript 编写,并为其所有公共 API 提供类型定义。

ESM

LangChain 提供了一个针对 Node.js 环境的 ESM 构建。你可以使用以下语法导入它

npm install @langchain/openai @langchain/core
import { ChatOpenAI } from "@langchain/openai";

如果你在 ESM 项目中使用 TypeScript,我们建议更新你的 tsconfig.json 以包含以下内容

tsconfig.json
{
"compilerOptions": {
...
"target": "ES2020", // or higher
"module": "nodenext",
}
}

CommonJS

LangChain 提供了一个针对 Node.js 环境的 CommonJS 构建。你可以使用以下语法导入它

const { ChatOpenAI } = require("@langchain/openai");

Cloudflare Workers

LangChain 可以在 Cloudflare Workers 中使用。你可以使用以下语法导入它

import { ChatOpenAI } from "@langchain/openai";

Vercel / Next.js

LangChain 可以在 Vercel / Next.js 中使用。我们支持在前端组件、无服务器函数和边缘函数中使用 LangChain。你可以使用以下语法导入它

import { ChatOpenAI } from "@langchain/openai";

Deno / Supabase Edge Functions

LangChain 可以在 Deno / Supabase Edge Functions 中使用。你可以使用以下语法导入它

import { ChatOpenAI } from "https://esm.sh/@langchain/openai";

或者

import { ChatOpenAI } from "npm:@langchain/openai";

浏览器

LangChain 可以在浏览器中使用。在我们的 CI 中,我们测试了使用 Webpack 和 Vite 捆绑 LangChain,但其他捆绑器也应该可以使用。你可以使用以下语法导入它

import { ChatOpenAI } from "@langchain/openai";

不支持:Node.js 16

我们不支持 Node.js 16,但如果你仍然想在 Node.js 16 上运行 LangChain,你需要按照本节中的说明操作。我们不能保证这些说明在未来继续有效。

你必须在全局范围内提供 fetch,方法是:

  • 使用 NODE_OPTIONS='--experimental-fetch' node ... 运行你的应用程序,或者
  • 安装 node-fetch 并按照 此处的 说明进行操作

你还需要 ReadableStream 提供垫片,方法是安装

npm i web-streams-polyfill

然后将其添加到你的主入口点的全局命名空间中

import "web-streams-polyfill/es6";

此外,你必须为 structuredClone 提供垫片,例如,通过安装 core-js 并按照 此处的 说明进行操作。

如果你运行的是 Node.js 18+,则无需执行任何操作。


此页面是否有帮助?


你也可以留下详细的反馈 在 GitHub 上.