安装
支持的环境
LangChain 用 TypeScript 编写,可以在以下环境中使用
- Node.js (ESM 和 CommonJS) - 18.x、19.x、20.x
- Cloudflare Workers
- Vercel / Next.js (浏览器、无服务器和边缘函数)
- Supabase 边缘函数
- 浏览器
- Deno
- Bun
但是,请注意,并非所有环境都支持单独的集成。
安装
要安装主要的 langchain
包,请运行
- npm
- Yarn
- pnpm
npm install langchain @langchain/core
yarn add langchain @langchain/core
pnpm add langchain @langchain/core
虽然此包可以作为使用 LangChain 的合理起点,但 LangChain 的大部分价值在于将其与各种模型提供者、数据存储等集成。默认情况下,执行此操作所需的依赖项未安装。你需要分别安装特定集成所需的依赖项。我们将在本指南的下一部分中展示如何执行此操作。
请参阅有关 安装集成包 的部分,了解安装 LangChain 包时的一些特殊注意事项。
生态系统包
除了 langsmith
SDK 之外,LangChain 生态系统中的所有包都依赖于 @langchain/core
,其中包含其他包使用的基类和抽象。下面的依赖关系图显示了不同包之间的关系。定向箭头表示源包依赖于目标包
注意:你的应用程序只能使用一个版本的 @langchain/core
。即使你不打算这样做,常见的包管理器也可能会在解析直接依赖项时引入其他版本。请参阅有关 安装集成包的这一部分,了解更多信息以及解决此问题的方法。
@langchain/community
@langchain/community 包包含各种第三方集成。使用以下命令安装
- npm
- Yarn
- pnpm
npm install @langchain/community @langchain/core
yarn add @langchain/community @langchain/core
pnpm add @langchain/community @langchain/core
还有一些包含 LangChain 集成的更细粒度的包,用于单个提供者。
@langchain/core
@langchain/core 包包含 LangChain 生态系统其余部分使用的基本抽象,以及 LangChain 表达式语言。它应该单独安装
- npm
- Yarn
- pnpm
npm install @langchain/core
yarn add @langchain/core
pnpm add @langchain/core
LangGraph
LangGraph.js 是一个用于使用 LLM 构建有状态的多参与者应用程序的库。它与 LangChain 无缝集成,但也可以单独使用。
使用以下命令安装
- npm
- Yarn
- pnpm
npm install @langchain/langgraph @langchain/core
yarn add @langchain/langgraph @langchain/core
pnpm add @langchain/langgraph @langchain/core
LangSmith SDK
LangSmith SDK 由 LangChain 自动安装。如果你不与 LangChain 一起使用它,请使用以下命令安装
- npm
- Yarn
- pnpm
npm install langsmith
yarn add langsmith
pnpm add langsmith
请参阅 有关安装集成包的一般说明。
安装集成包
LangChain 支持包含与各个第三方提供者集成的模块的包。它们可以像 @langchain/anthropic
那样具体,其中包含仅针对 Anthropic 模型的集成,也可以像 @langchain/community
那样广泛,其中包含更广泛的社区贡献的集成。
这些包,以及主要的 LangChain 包,都将 @langchain/core
作为对等依赖项,以避免包管理器安装同一包的多个版本。它包含这些集成包扩展的基础抽象。
为了确保所有集成及其类型能够正确地相互交互,重要的是它们都使用相同版本的 @langchain/core
。如果遇到关于基类的类型错误,则可能需要确保你的包管理器正在解析单个版本的 @langchain/core
。为此,你可以在项目 package.json
中添加 "resolutions"
或 "overrides"
字段,如下所示。名称将取决于你的包管理器
yarn
或 pnpm
的 resolutions
或 pnpm.overrides
字段必须设置在根 package.json
文件中。
如果你使用的是 yarn
{
"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
{
"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
{
"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
- Yarn
- pnpm
npm install @langchain/openai @langchain/core
yarn add @langchain/openai @langchain/core
pnpm add @langchain/openai @langchain/core
import { ChatOpenAI } from "@langchain/openai";
如果你在 ESM 项目中使用 TypeScript,我们建议更新你的 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
- Yarn
- pnpm
npm i web-streams-polyfill
yarn add web-streams-polyfill
pnpm add web-streams-polyfill
然后将其添加到你的主入口点的全局命名空间中
import "web-streams-polyfill/es6";
此外,你必须为 structuredClone
提供垫片,例如,通过安装 core-js
并按照 此处的 说明进行操作。
如果你运行的是 Node.js 18+,则无需执行任何操作。