Неопределенная ошибка при передаче асинхронной функции в качестве параметра функции
Я пытаюсь использовать RecursiveCharacterTextSplitter с функцией длины в качестве стороннего токенизатора.
Согласно документации, RecursiveCharacterTextSplitter также принимает lengthFunction как обещание.
но я бьюTypeError: Cannot convert undefined to a BigInt
когда я запускаю ниже фрагмент кода. Кроме того, я получаю печать только для console.log(tok === undefined); прежде чем я нажму сообщение об ошибке. Код работает, если передать обещание, заключенное в него, с фиктивной задержкой.
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";
import { BartTokenizer } from "@xenova/transformers";
// interface TextSplitterParams {
// chunkSize: number;
// chunkOverlap: number;
// keepSeparator: boolean;
// lengthFunction?: ((text: string) => number) | ((text: string) => Promise<number>);
// }
async function tokenizer_len(x) {
return BartTokenizer.from_pretrained("facebook/bart-large").then(
(tok) => tok(x)["input_ids"].size
);
}
const splitter = new RecursiveCharacterTextSplitter({
chunkSize: 1024,
chunkOverlap: 50,
lengthFunction: tokenizer_len,
});
async function chunkify(text) {
let output = await splitter.createDocuments([text]);
return output.map((key) => key.pageContent);
}
const data1 = fs.readFileSync("text.txt", "utf8").toString();
chunkify(data1).then((op) => {
console.log(op);
});
Ошибка
TypeError: Cannot convert undefined to a BigInt
at BigInt (<anonymous>)
at Array.map (<anonymous>)
at Function._call (file:///media/instantinopaul/data/Code/ML/js-summarize/node_modules/@xenova/transformers/src/tokenizers.js:2325:50)
at closure (file:///media/instantinopaul/data/Code/ML/js-summarize/node_modules/@xenova/transformers/src/utils/core.js:62:28)
at RecursiveCharacterTextSplitter.tokenizer_len [as lengthFunction] (file:///media/instantinopaul/data/Code/ML/js-summarize/main.mjs:14:18)
at async RecursiveCharacterTextSplitter._splitText (file:///media/instantinopaul/data/Code/ML/js-summarize/node_modules/langchain/dist/text_splitter.js:236:18)
at async RecursiveCharacterTextSplitter.createDocuments (file:///media/instantinopaul/data/Code/ML/js-summarize/node_modules/langchain/dist/text_splitter.js:76:33)
at async chunkify (file:///media/instantinopaul/data/Code/ML/js-summarize/main.mjs:27:16)