UNPKG

llamaindex

Version:

<p align="center"> <img height="100" width="100" alt="LlamaIndex logo" src="https://ts.llamaindex.ai/square.svg" /> </p> <h1 align="center">LlamaIndex.TS</h1> <h3 align="center"> Data framework for your LLM application. </h3>

48 lines (47 loc) 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "withContextAwareness", { enumerable: true, get: function() { return withContextAwareness; } }); const _schema = require("@llamaindex/core/schema"); function withContextAwareness(Base) { return class ContextAwareAgent extends Base { contextRetriever; retrievedContext = null; constructor(params){ super(params); this.contextRetriever = params.contextRetriever; } async retrieveContext(query) { const nodes = await this.contextRetriever.retrieve({ query }); return nodes.map((node)=>node.node.getContent(_schema.MetadataMode.NONE)).join("\n"); } async injectContext(context) { const systemMessage = this.chatHistory.find((msg)=>msg.role === "system"); if (systemMessage) { systemMessage.content = `${context}\n\n${systemMessage.content}`; } else { this.chatHistory.unshift({ role: "system", content: context }); } } async chat(params) { const context = await this.retrieveContext(params.message); await this.injectContext(context); if ("stream" in params && params.stream === true) { return super.chat(params); } else { return super.chat(params); } } }; }