24 lines
682 B
C
24 lines
682 B
C
|
#ifndef HUMANUS_MEMORY_SIMPLE_H
|
||
|
#define HUMANUS_MEMORY_SIMPLE_H
|
||
|
|
||
|
#include "base.h"
|
||
|
|
||
|
namespace humanus {
|
||
|
|
||
|
struct MemorySimple : MemoryBase {
|
||
|
int max_messages;
|
||
|
|
||
|
MemorySimple(int max_messages = 100) : max_messages(max_messages) {}
|
||
|
|
||
|
void add_message(const Message& message) override {
|
||
|
MemoryBase::add_message(message);
|
||
|
while (!messages.empty() && (messages.size() > max_messages || messages.begin()->role == "assistant" || messages.begin()->role == "tool")) {
|
||
|
// Ensure the first message is always a user or system message
|
||
|
messages.erase(messages.begin());
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
} // namespace humanus
|
||
|
|
||
|
#endif // HUMANUS_MEMORY_SIMPLE_H
|