mongodb-rag-core
Version:
Common elements used by MongoDB Chatbot Framework components.
53 lines (52 loc) • 2.18 kB
JavaScript
;
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