跳至主要内容

安装

支持的环境

LangChain是用TypeScript编写的,可以在

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

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

安装

要安装主 langchain 包,请运行

npm install 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 install @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 install @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 install @langchain/langgraph

LangSmith SDK

LangSmith SDK 是由 LangChain 自动安装的。如果您不将其与 LangChain 一起使用,请使用以下命令安装:

npm install langsmith

安装集成包

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

这些包以及主要的 LangChain 包都依赖于 @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": "0.0.207"
},
"resolutions": {
"@langchain/core": "0.1.5"
}
}

如果您使用的是 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": "0.0.207"
},
"overrides": {
"@langchain/core": "0.1.5"
}
}

您也可以尝试 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": "0.0.207"
},
"pnpm": {
"overrides": {
"@langchain/core": "0.1.5"
}
}
}

您也可以尝试 pnpm dedupe 命令。

加载库

TypeScript

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

ESM

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

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

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

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 i web-streams-polyfill

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

import "web-streams-polyfill/es6";

此外,您还必须用 structuredClone 进行填充,例如,通过安装 core-js 并按照 此处 的说明操作。

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


此页面对您有帮助吗?


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