安装
支持的环境
LangChain是用TypeScript编写的,可以在
- Node.js (ESM 和 CommonJS) - 18.x、19.x、20.x
- Cloudflare Workers
- Vercel / Next.js (浏览器、无服务器和边缘函数)
- Supabase Edge 函数
- 浏览器
- Deno
- Bun
但是,请注意,并非所有环境都支持所有集成。
安装
要安装主 langchain
包,请运行
- npm
- Yarn
- pnpm
npm install langchain
yarn add langchain
pnpm add langchain
虽然此包作为使用 LangChain 的合理起点,但 LangChain 的大部分价值来自于将其与各种模型提供商、数据存储等集成。默认情况下,执行此操作所需的依赖项不会安装。您需要单独安装特定集成的依赖项。我们将在本指南的下一部分中介绍如何执行此操作。
另请参阅有关 安装集成包 的部分,了解安装 LangChain 包时的一些特殊注意事项。
生态系统包
除了 langsmith
SDK 之外,LangChain 生态系统中的所有包都依赖于 @langchain/core
,其中包含其他包使用的基类和抽象。下面的依赖关系图显示了不同包之间的关系。指向箭头表示源包依赖于目标包。
安装包时,您无需显式安装该包的显式依赖项(例如 @langchain/core
)。但是,如果您使用的是仅在该依赖项的特定版本中可用的功能,则可以选择这样做。如果您这样做,请确保安装或固定到的版本与您使用的任何其他集成包兼容。
注意:重要的是,您的应用程序只使用一个版本的 @langchain/core
。即使您不打算这样做,常见的包管理器也可能在解析依赖项时引入其他版本。有关更多信息以及解决方法,请参阅 有关安装集成包的此部分。
@langchain/community
The @langchain/community package contains a range of third-party integrations. Install with
- npm
- Yarn
- pnpm
npm install @langchain/community
yarn add @langchain/community
pnpm add @langchain/community
还有更多粒度的包,其中包含针对各个提供商的 LangChain 集成。
@langchain/core
The @langchain/core package contains base abstractions that the rest of the LangChain ecosystem uses, along with the LangChain Expression Language. It is automatically installed along with langchain
, but can also be used separately. Install with
- npm
- Yarn
- pnpm
npm install @langchain/core
yarn add @langchain/core
pnpm add @langchain/core
LangGraph
LangGraph.js is a library for building stateful, multi-actor applications with LLMs. It integrates smoothly with LangChain, but can be used without it.
Install with
- npm
- Yarn
- pnpm
npm install @langchain/langgraph
yarn add @langchain/langgraph
pnpm add @langchain/langgraph
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
。保证这一点的最佳方法是在项目的 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": "0.0.207"
},
"resolutions": {
"@langchain/core": "0.1.5"
}
}
如果您使用的是 yarn
版本 2 或更高版本,还可以尝试运行 yarn dedupe
命令。
或者对于 npm
{
"name": "your-project",
"version": "0.0.0",
"private": true,
"engines": {
"node": ">=18"
},
"dependencies": {
"@langchain/anthropic": "^0.0.2",
"langchain": "0.0.207"
},
"overrides": {
"@langchain/core": "0.1.5"
}
}
您也可以尝试 npm dedupe
命令。
或者对于 pnpm
{
"name": "your-project",
"version": "0.0.0",
"private": true,
"engines": {
"node": ">=18"
},
"dependencies": {
"@langchain/anthropic": "^0.0.2",
"langchain": "0.0.207"
},
"pnpm": {
"overrides": {
"@langchain/core": "0.1.5"
}
}
}
您也可以尝试 pnpm dedupe
命令。
加载库
TypeScript
LangChain 使用 TypeScript 编写,并为其所有公共 API 提供类型定义。
ESM
LangChain 提供了一个针对 Node.js 环境的 ESM 构建。您可以使用以下语法导入它
- npm
- Yarn
- pnpm
npm install @langchain/openai
yarn add @langchain/openai
pnpm add @langchain/openai
import { OpenAI } from "@langchain/openai";
如果您在 ESM 项目中使用 TypeScript,建议您更新 tsconfig.json
以包含以下内容
{
"compilerOptions": {
...
"target": "ES2020", // or higher
"module": "nodenext",
}
}
CommonJS
LangChain 提供了一个针对 Node.js 环境的 CommonJS 构建。您可以使用以下语法导入它
const { OpenAI } = require("@langchain/openai");
Cloudflare Workers
LangChain 可以在 Cloudflare Workers 中使用。您可以使用以下语法导入它
import { OpenAI } from "@langchain/openai";
Vercel / Next.js
LangChain 可以在 Vercel / Next.js 中使用。我们支持在前端组件、无服务器函数和边缘函数中使用 LangChain。您可以使用以下语法导入它
import { OpenAI } from "@langchain/openai";
Deno / Supabase Edge 函数
LangChain 可以在 Deno / Supabase Edge 函数中使用。您可以使用以下语法导入它
import { OpenAI } from "https://esm.sh/@langchain/openai";
或
import { OpenAI } from "npm:@langchain/openai";
我们建议您查看我们的 Supabase 模板,了解如何在 Supabase Edge 函数中使用 LangChain 的示例。
浏览器
LangChain 可以在浏览器中使用。在我们的 CI 中,我们测试了使用 Webpack 和 Vite 捆绑 LangChain,但其他捆绑器也应该可以工作。您可以使用以下语法导入它
import { OpenAI } 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+,则无需执行任何操作。