一架梯子,一头程序猿,仰望星空!
LangChain教程(JS版本) > 内容正文

文本摘要任务


概述

可以使用一个摘要链来对多个文档进行摘要。一种方法是将多个较小的文档作为输入,分成块后用MapReduceDocumentsChain对它们进行操作。您还可以选择将摘要链选择为StuffDocumentsChain或RefineDocumentsChain。

import { OpenAI } from "langchain/llms/openai";
import { loadSummarizationChain } from "langchain/chains";
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";
import * as fs from "fs";

// 在这个例子中,我们使用了一个特定的MapReduceDocumentsChain来对一组文档进行摘要。
const text = fs.readFileSync("state_of_the_union.txt", "utf8");
const model = new OpenAI({ temperature: 0 });
const textSplitter = new RecursiveCharacterTextSplitter({ chunkSize: 1000 });
const docs = await textSplitter.createDocuments([text]);

// 这个便利函数创建了一个被提示进行文档摘要的链。
const chain = loadSummarizationChain(model, { type: "map_reduce" });
const res = await chain.call({
  input_documents: docs,
});
console.log({ res });

中间步骤

如果我们想要检查map_reduce链的中间步骤,我们也可以返回它们。这可以通过returnIntermediateSteps参数实现。

import { OpenAI } from "langchain/llms/openai";
import { loadSummarizationChain } from "langchain/chains";
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";
import * as fs from "fs";

// 在这个例子中,我们使用一个专门用来总结一组文档的`MapReduceDocumentsChain`。
const text = fs.readFileSync("state_of_the_union.txt", "utf8");
const model = new OpenAI({ temperature: 0 });

// 文本分割器:使用递归字符文本分割器
const textSplitter = new RecursiveCharacterTextSplitter({ chunkSize: 1000 });
const docs = await textSplitter.createDocuments([text]);

// 这个方便的函数创建了一个用于总结文档集的文档链。
const chain = loadSummarizationChain(model, {
  type: "map_reduce",
  returnIntermediateSteps: true,
});
const res = await chain.call({
  input_documents: docs,
});
console.log({ res });


关联主题