@langchain/community
Version:
Third-party integrations for LangChain.js
94 lines (93 loc) • 3.66 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
const require_memory_zep_cloud = require("../../memory/zep_cloud.cjs");
let _langchain_core_messages = require("@langchain/core/messages");
let _getzep_zep_cloud_api_index_js = require("@getzep/zep-cloud/api/index.js");
let _langchain_core_chat_history = require("@langchain/core/chat_history");
//#region src/stores/message/zep_cloud.ts
var zep_cloud_exports = /* @__PURE__ */ require_runtime.__exportAll({
ZepCloudChatMessageHistory: () => ZepCloudChatMessageHistory,
getZepMessageRoleType: () => getZepMessageRoleType
});
const getZepMessageRoleType = (role) => {
switch (role) {
case "human": return "user";
case "ai": return "assistant";
case "system": return "system";
case "function": return "function";
case "tool": return "tool";
default: return "norole";
}
};
/**
* Class used to manage the memory of a chat session, including loading
* and saving the chat history, and clearing the memory when needed. It
* uses the ZepClient to interact with the Zep service for managing the
* chat session's memory.
*
*/
var ZepCloudChatMessageHistory = class extends _langchain_core_chat_history.BaseChatMessageHistory {
lc_namespace = [];
sessionId;
client;
memoryType;
humanPrefix = "human";
aiPrefix = "ai";
separateMessages = false;
constructor(fields) {
super();
this.sessionId = fields.sessionId;
this.memoryType = fields.memoryType;
this.client = fields.client;
if (fields.humanPrefix) this.humanPrefix = fields.humanPrefix;
if (fields.aiPrefix) this.aiPrefix = fields.aiPrefix;
if (fields.separateMessages) this.separateMessages = fields.separateMessages;
}
async getMemory() {
try {
return this.client.memory.get(this.sessionId, { memoryType: this.memoryType });
} catch (error) {
if (error instanceof _getzep_zep_cloud_api_index_js.NotFoundError) console.warn(`Session ${this.sessionId} not found in Zep. Returning None`);
else console.error("Error getting memory: ", error);
return null;
}
}
async getMessages() {
const memory = await this.getMemory();
if (!memory) return [];
return this.separateMessages ? require_memory_zep_cloud.zepMemoryToMessages(memory) : [require_memory_zep_cloud.condenseZepMemoryIntoHumanMessage(memory)];
}
async addAIChatMessage(message, metadata) {
await this.addMessage(new _langchain_core_messages.AIMessage({ content: message }), metadata);
}
async addMessage(message, metadata) {
const messageToSave = message;
if (message._getType() === "ai") messageToSave.name = this.aiPrefix;
else if (message._getType() === "human") messageToSave.name = this.humanPrefix;
if (message.content === null) throw new Error("Message content cannot be null");
if (Array.isArray(message.content)) throw new Error("Message content cannot be a list");
await this.client.memory.add(this.sessionId, { messages: [{
content: message.content,
role: message.name ?? message._getType(),
roleType: getZepMessageRoleType(message._getType()),
metadata
}] });
}
async addUserMessage(message, metadata) {
await this.addMessage(new _langchain_core_messages.HumanMessage({ content: message }, metadata));
}
clear() {
console.warn("Clearing memory", this.sessionId);
return Promise.resolve(void 0);
}
};
//#endregion
exports.ZepCloudChatMessageHistory = ZepCloudChatMessageHistory;
exports.getZepMessageRoleType = getZepMessageRoleType;
Object.defineProperty(exports, "zep_cloud_exports", {
enumerable: true,
get: function() {
return zep_cloud_exports;
}
});
//# sourceMappingURL=zep_cloud.cjs.map