UNPKG

mongodb-rag-core

Version:

Common elements used by MongoDB Chatbot Framework components.

53 lines (52 loc) 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeLangchainChatLlm = void 0; const prompts_1 = require("@langchain/core/prompts"); /** Use any Langchain JS [`ChatModel`](https://js.langchain.com/docs/modules/model_io/chat/) to talk to an LLM. Note: This ChatLLM does not currently support tool calling. */ function makeLangchainChatLlm({ chatModel, callOptions, }) { return { async answerQuestionAwaited({ messages }) { const prompts = prompts_1.ChatPromptTemplate.fromMessages(messages.map((m) => messageBaseMessagePromptTemplateLike(m))); const chain = prompts.pipe(chatModel); const res = await chain.invoke({}, callOptions); return { role: "assistant", content: typeof res.content === "string" ? res.content : "", }; }, answerQuestionStream: async ({ messages }) => (async function* () { const prompts = prompts_1.ChatPromptTemplate.fromMessages(messages.map((m) => messageBaseMessagePromptTemplateLike(m))); const chain = prompts.pipe(chatModel); const stream = await chain.stream({}, callOptions); let index = 0; for await (const chunk of stream) { index++; yield { id: index.toString(), created: Date.now(), choices: [ { finish_reason: null, index: index, delta: { role: "assistant", content: typeof chunk.content === "string" ? chunk.content : "", tool_calls: [], }, }, ], promptFilterResults: [], }; } })(), }; } exports.makeLangchainChatLlm = makeLangchainChatLlm; function messageBaseMessagePromptTemplateLike(message) { return [message.role, message.content ?? ""]; } //# sourceMappingURL=LangchainChatLlm.js.map