LangChain v0.3
最后更新:09.14.24
有什么变化
- 所有 LangChain 包现在都将
@langchain/core
作为对等依赖项,而不是直接依赖项,以帮助避免围绕 核心版本冲突 的类型错误。- 您现在需要显式安装
@langchain/core
,而不是依赖于其他包内部解析的版本。
- 您现在需要显式安装
- 回调现在默认在后台和非阻塞运行,而不是阻塞运行。
- 这意味着,如果您在无服务器环境中使用 LangSmith 进行追踪或其他回调,您将需要 等待回调完成,以确保它们在您的函数结束前完成。
- 从
langchain
中删除了已弃用的文档加载器和自查询入口点,转而使用@langchain/community
和集成包中的入口点。 - 从 community 中删除了已弃用的 Google PaLM 入口点,转而使用
@langchain/google-vertexai
和@langchain/google-genai
中的入口点。 - 弃用使用带有
"type"
的对象作为BaseMessageLike
,转而使用更类似 OpenAI 的MessageWithRole
有什么新功能
以下功能已在 0.2.x 的开发过程中添加
- 简化的工具定义和用法。阅读更多 此处。
- 添加了 通用聊天模型构造函数。
- 添加了 分派自定义事件 的能力。
- 发布了 LangGraph.js 0.2.0,并使其成为使用 LangChain.js 创建代理的推荐方式。
- 改进了集成文档和 API 参考。阅读更多 此处。
如何更新您的代码
如果您正在使用 langchain
/ @langchain/community
/ @langchain/core
0.0 或 0.1,我们建议您首先 升级到 0.2。
如果您正在使用 @langchain/langgraph
,请升级到 @langchain/langgraph>=0.2.3
。这将适用于所有基本包的 0.2 或 0.3 版本。
以下是已发布的所有包的完整列表,以及我们建议您在 package.json
中将版本约束升级到的版本。现在支持 @langchain/core
0.3 的任何包都有一个次要版本号提升。
基本包
包 | 最新 | 推荐的 package.json 约束 |
---|---|---|
langchain | 0.3.0 | >=0.3.0 <0.4.0 |
@langchain/community | 0.3.0 | >=0.3.0 <0.4.0 |
@langchain/textsplitters | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/core | 0.3.0 | >=0.3.0 <0.4.0 |
下游包
包 | 最新 | 推荐的 package.json 约束 |
---|---|---|
@langchain/langgraph | 0.2.3 | >=0.2.3 <0.3 |
集成包
包 | 最新 | 推荐的 package.json 约束 |
---|---|---|
@langchain/anthropic | 0.3.0 | >=0.3.0 <0.4.0 |
@langchain/aws | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/azure-cosmosdb | 0.2.0 | >=0.2.0 <0.3.0 |
@langchain/azure-dynamic-sessions | 0.2.0 | >=0.2.0 <0.3.0 |
@langchain/baidu-qianfan | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/cloudflare | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/cohere | 0.3.0 | >=0.3.0 <0.4.0 |
@langchain/exa | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/google-genai | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/google-vertexai | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/google-vertexai-web | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/groq | 0.1.1 | >=0.1.1 <0.2.0 |
@langchain/mistralai | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/mixedbread-ai | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/mongodb | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/nomic | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/ollama | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/openai | 0.3.0 | >=0.3.0 <0.4.0 |
@langchain/pinecone | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/qdrant | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/redis | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/weaviate | 0.1.0 | >=0.1.0 <0.2.0 |
@langchain/yandex | 0.1.0 | >=0.1.0 <0.2.0 |
一旦您更新到最新版本的包,如果您尚未安装,则需要显式安装 @langchain/core
- npm
- Yarn
- pnpm
npm install @langchain/core
yarn add @langchain/core
pnpm add @langchain/core
我们还建议检查您的 lockfile 或运行 适当的包管理器命令,以确保您的包管理器只安装了一个版本的 @langchain/core
。
如果您当前在无服务器环境(例如,Cloudflare Worker、Edge function 或 AWS Lambda function)中运行代码,并且您正在使用 LangSmith 追踪或其他回调,您将需要 等待回调完成,以确保它们在您的函数结束前完成。这是一个快速示例
import { RunnableLambda } from "@langchain/core/runnables";
import { awaitAllCallbacks } from "@langchain/core/callbacks/promises";
const runnable = RunnableLambda.from(() => "hello!");
const customHandler = {
handleChainEnd: async () => {
await new Promise((resolve) => setTimeout(resolve, 2000));
console.log("Call finished");
},
};
const startTime = new Date().getTime();
await runnable.invoke({ number: "2" }, { callbacks: [customHandler] });
console.log(`Elapsed time: ${new Date().getTime() - startTime}ms`);
await awaitAllCallbacks();
console.log(`Final elapsed time: ${new Date().getTime() - startTime}ms`);
Elapsed time: 1ms
Call finished
Final elapsed time: 2164ms
您还可以将 LANGCHAIN_CALLBACKS_BACKGROUND
设置为 "false"
,使所有回调都变为阻塞式
process.env.LANGCHAIN_CALLBACKS_BACKGROUND = "false";
const startTimeBlocking = new Date().getTime();
await runnable.invoke({ number: "2" }, { callbacks: [customHandler] });
console.log(
`Initial elapsed time: ${new Date().getTime() - startTimeBlocking}ms`
);
Call finished
Initial elapsed time: 2002ms