Weboldal keresés

typescript - Hogyan lehet streamelni a választ a LangChain QAMapReduceChain-ből


A Langchain-t használom arra, hogy egy hosszú szöveggel lépjek kapcsolatba. A szöveget darabokra bontják, amelyeket az alábbi docs változóba adnak át.

Beállítottam egy láncot, amely közvetíti a válaszomat, azonban azt tapasztalom, hogy a handleLLMNewToken akkor is hívódik, miközben az OpenAI visszaadja az összes generáció tokenjeit, beleértve az egyes dokumentumok Map lépéseit is.

Ez zavart válaszhoz vezet, amely minden generáció kombinációja, nem csak a kimeneti generáció. Nem találok olyan módszert, amely lehetővé tenné, hogy csak a végső eredményt streameljem, miközben az generálódik.

Hozzáférek a kész feladathoz, ha a chainResult változót használom - de ez nem streamelhető, ellentétben a visszahívással.

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);
                },
            }
        ],);

Kapcsolódó cikkek