Skip to main content

InMemoryStore

这将帮助你快速上手 InMemoryStore。关于所有 InMemoryStore 功能和配置的详细文档,请查看 API 参考文档

InMemoryStore 允许为存储中的值分配一个通用类型。我们将把类型 BaseMessage 作为值的类型进行分配,以保持聊天历史存储的主题一致。

概述

集成详情

类别本地支持PY 支持包下载量最新包版本
InMemoryStore@langchain/coreNPM - 下载量NPM - 版本

准备工作

安装

LangChain InMemoryStore 集成位于 @langchain/core 包中:

:::提示 请参阅安装集成包的一般说明部分。 :::

yarn add @langchain/core

实例化

现在我们可以实例化我们的字节存储器:

import { InMemoryStore } from "@langchain/core/stores";
import { BaseMessage } from "@langchain/core/messages";

const kvStore = new InMemoryStore<BaseMessage>();

用法

你可以使用 mset 方法将数据设置在键下,如下所示:

import { AIMessage, HumanMessage } from "@langchain/core/messages";

await kvStore.mset([
["key1", new HumanMessage("value1")],
["key2", new AIMessage("value2")],
]);

await kvStore.mget(["key1", "key2"]);
[
HumanMessage {
"content": "value1",
"additional_kwargs": {},
"response_metadata": {}
},
AIMessage {
"content": "value2",
"additional_kwargs": {},
"response_metadata": {},
"tool_calls": [],
"invalid_tool_calls": []
}
]

并且你可以使用 mdelete 方法删除数据:

await kvStore.mdelete(["key1", "key2"]);

await kvStore.mget(["key1", "key2"]);
[ undefined, undefined ]

产生值

如果你想获取所有的键,可以调用 yieldKeys 方法。此外,你还可以传入一个键的前缀,这样只会返回匹配该前缀的键。

import { InMemoryStore } from "@langchain/core/stores";
import { AIMessage, BaseMessage, HumanMessage } from "@langchain/core/messages";

const kvStoreForYield = new InMemoryStore<BaseMessage>();

// Add some data to the store
await kvStoreForYield.mset([
["message:id:key1", new HumanMessage("value1")],
["message:id:key2", new AIMessage("value2")],
]);

const yieldedKeys = [];
for await (const key of kvStoreForYield.yieldKeys("message:id:")) {
yieldedKeys.push(key);
}

console.log(yieldedKeys);
[ 'message:id:key1', 'message:id:key2' ]

API 参考

如需详细了解所有 InMemoryStore 功能和配置,请访问 API 参考


Was this page helpful?


You can also leave detailed feedback on GitHub.