Model językowy nie zachowuje informacji między wywołaniami: przy każdym wykonaniu pracuje tylko z tekstem dostarczonym w żądaniu. Dla agentów AI, które muszą śledzić swoje wcześniejsze działania, pamiętać preferencje użytkownika lub realizować zadanie wieloetapowe, to ograniczenie wymaga zewnętrznej pamięci poza modelem. Ta pamięć przechowuje informacje poza oknem kontekstu, czyli ilością tekstu, jaką model może przetworzyć jednorazowo, i przywraca je, gdy są potrzebne.
Bloki pamięci agentów
Agenty potrzebują przenosić informacje między wywołaniami i zadaniami. Mogą musieć pamiętać, co już zaplanowano, aby uniknąć powtórzeń działań, lub przechowywać informacje o nieudanych próbach, by nie wykonywać tej samej pracy ponownie. Bez pamięci każde wywołanie dysponuje tylko kontekstem mu dostarczonym.
Typy pamięci dzielą się na cztery kategorie. Pamięć robocza zawiera aktywny stan zadania, jak wyniki pośrednie, i jest dostępna bezpośrednio przez klucz. Pamięć epizodyczna przechowuje to, co się wydarzyło: przeszłe interakcje, wykonania zadań i podjęte decyzje, w dzienniku chronologicznym lub bazie wektorowej, z wyszukiwaniem przez podobieństwo semantyczne. Pamięć semantyczna gromadzi to, co uznaje się za prawdziwe, czyli fakty i preferencje, które są aktualizowane, a nie dodawane. Pamięć proceduralna opisuje sposób wykonywania rzeczy, czy to schematy udanych działań, czy znane modele błędów, i opiera się na wzorcach promptów lub na fine-tuning, czyli dostrojeniu modelu na podstawie konkretnych danych.
Projektowanie niezawodnej pamięci
W przykładzie agenta badawczego pracującego kilka dni nad tym samym zadaniem, każdy wynik jest najpierw zapisywany w pamięci roboczej o krótkim czasie życia. Gdy wynik okaże się przydatny, trafia do pamięci epizodycznej z oceną ważności. Przed każdym wywołaniem narzędzia agent sprawdza pamięć roboczą, a następnie, jeśli potrzeba, pamięć epizodyczną. Jeśli zadanie zawiedzie po drodze, stan tymczasowy może zostać usunięty, podczas gdy historia ukończonych prac jest zachowana.
Kilka praktyk sprawia, że pamięć staje się bardziej niezawodna w miarę wzrostu: ocenianie ważności informacji przed zapisem, ograniczanie pamięci każdego agenta do jego roli w systemach wieloagentowych, konsultowanie pamięci na każdym etapie decyzyjnym oraz śledzenie pochodzenia każdego elementu, czy pochodzi od agenta, narzędzia, wprowadzenia użytkownika czy znacznika czasu. Niektóre podejścia, proste w implementacji, stają się jednak mało niezawodne. Dotyczy to przechowywania wszystkiego w jednej bazie wektorowej, kompresji przez swobodne podsumowania, która może usuwać liczby lub ograniczenia, nieograniczonego wzrostu pamięci lub zaufania przyznawanego w ten sam sposób każdemu zapisowi. To ostatnie naraża na zatrucie pamięci, gdzie niepewna lub złośliwa treść jest przechowywana, a następnie traktowana jako wiarygodna informacja.
Frameworki o różnych podejściach
Frameworki znajdują się między prostą pamięcią tekstową a grafami wiedzy. Letta opiera się na blokach tekstu, które agent może sam przepisywać, i aktualizuje blok po wykryciu sprzeczności. Mem0 wykorzystuje pamięć wektorową z wyszukiwaniem wrażliwym na encje i dodaje nowe wspomnienia obok starych. Graphiti opiera się na dwuczasowym grafie wiedzy z typowanymi relacjami: unieważnia stare relacje, zachowując jednocześnie ich przeszukiwalną historię. Cognee buduje z danych źródłowych warstwy grafu, wektorowe i relacyjne, oraz odtwarza reprezentację pamięci, z trybami czasowymi do śledzenia zmian.
W systemach wieloagentowych współdzielenie pamięci może powodować konflikty przy jednoczesnych aktualizacjach. Rozwiązania obejmują centralną usługę z kontrolą zapisu, oddzielne przestrzenie nazw dla każdego agenta lub dzienniki tylko do dodawania, gdzie konflikty są rozwiązywane przy wyszukiwaniu. Ocena opiera się na kilku wskaźnikach: przypomnieniu, które mierzy, czy istotne wspomnienia są odnajdywane, precyzji, która mierzy udział bezużytecznych informacji zwracanych, wierności, która sprawdza poprawne użycie odzyskanych informacji, oraz przestarzałości, która mierzy częstotliwość nieaktualnych informacji. Według artykułu wybór zależy od obciążenia agenta, jego danych i wymagań operacyjnych.
