humanus.cpp/memory/base.h

46 lines
1.1 KiB
C
Raw Normal View History

2025-03-20 16:03:26 +08:00
#ifndef HUMANUS_MEMORY_BASE_H
#define HUMANUS_MEMORY_BASE_H
#include "schema.h"
namespace humanus {
struct MemoryBase {
std::vector<Message> messages;
// Add a message to the memory
virtual void add_message(const Message& message) {
messages.push_back(message);
}
// Add multiple messages to the memory
void add_messages(const std::vector<Message>& messages) {
for (const auto& message : messages) {
add_message(message);
}
}
// Clear all messages
void clear() {
messages.clear();
}
// Get the last n messages
virtual std::vector<Message> get_recent_messages(int n) const {
n = std::min(n, static_cast<int>(messages.size()));
return std::vector<Message>(messages.end() - n, messages.end());
}
// Convert messages to list of dicts
json to_json_list() const {
json memory = json::array();
for (const auto& message : messages) {
memory.push_back(message.to_json());
}
return memory;
}
};
}
#endif // HUMANUS_MEMORY_BASE_H