如何从 LangChain QAMapReduceChain 流式传输响应

Sim*_*mer 6 typescript openai-api langchain

我正在使用 Langchain 与一长段文本进行交互。文本被分成块,这些块作为下面的变量传入docs

我已经建立了一个链来传输我的响应,但是我发现handleLLMNewToken在 OpenAI 返回所有代的令牌(其中包括每个文档的映射步骤)时调用该链。

这会导致混乱的响应,这是所有一代的组合,而不仅仅是输出一代。我找不到一种方法可以让我仅在生成最终结果时对其进行流式传输。

如果我使用该变量,我可以访问已完成的提示chainResult- 但与回调不同,它不可流式传输。

const SUMMARISE_MODEL = {
        temperature: 0.5,
        modelName: "gpt-3.5-turbo-16k",
        maxTokens: 5000,
        verbose: false,
        maxConcurrency: 2,
        streaming: true,
}

//...OTHER CODE

const chain = loadQAMapReduceChain(model, {returnIntermediateSteps: true});
const chainResult = await chain.call({
            input_documents: docs,
            question: templateString,
        }, [

            {
                handleLLMNewToken(token: string) {
                    updateResponse(token);
                },
            }
        ],);
Run Code Online (Sandbox Code Playgroud)