Agentenspeicher

Der Memory verwaltet den Speicher des Agenten und speichert die Informationen, die der Agent benötigt, um bei jedem Schritt mit dem Benutzer und den Anwendungen zu interagieren. Teile der Elemente im Memory sind für den Agenten zur Entscheidungsfindung sichtbar.

MemoryItem

Ein MemoryItem ist eine dataclass, die einen einzelnen Schritt im Speicher des Agenten darstellt. Die Felder eines MemoryItem sind flexibel und können je nach Anforderungen des Agenten angepasst werden. Die Klasse MemoryItem ist wie folgt definiert:

Diese Datenklasse stellt ein Speicherelement eines Agenten in einem Schritt dar.

attributes property

Ruft die Attribute des Speicherelements ab.

Rückgabe
  • List[str]

    Die Attribute.

add_values_from_dict(values)

Fügt Felder zum Speicherelement hinzu.

Parameter
  • values (Dict[str, Any]) –

    Die Werte der Felder.

Quellcode in agents/memory/memory.py
66
67
68
69
70
71
72
def add_values_from_dict(self, values: Dict[str, Any]) -> None:
    """
    Add fields to the memory item.
    :param values: The values of the fields.
    """
    for key, value in values.items():
        self.set_value(key, value)

filter(keys=[])

Ruft das Speicherelement ab.

Parameter
  • keys (List[str], Standard: [] ) –

    Die abzurufenden Schlüssel.

Rückgabe
  • None

    Das gefilterte Speicherelement.

Quellcode in agents/memory/memory.py
46
47
48
49
50
51
52
53
def filter(self, keys: List[str] = []) -> None:
    """
    Fetch the memory item.
    :param keys: The keys to fetch.
    :return: The filtered memory item.
    """

    return {key: value for key, value in self.to_dict().items() if key in keys}

from_dict(data)

Konvertiert das Wörterbuch in ein MemoryItem.

Parameter
  • data (Dict[str, str]) –

    Das Wörterbuch.

Quellcode in agents/memory/memory.py
31
32
33
34
35
36
37
def from_dict(self, data: Dict[str, str]) -> None:
    """
    Convert the dictionary to a MemoryItem.
    :param data: The dictionary.
    """
    for key, value in data.items():
        self.set_value(key, value)

get_value(key)

Ruft den Wert des Feldes ab.

Parameter
  • key (str) –

    Der Schlüssel des Feldes.

Rückgabe
  • Optional[str]

    Der Wert des Feldes.

Quellcode in agents/memory/memory.py
74
75
76
77
78
79
80
81
def get_value(self, key: str) -> Optional[str]:
    """
    Get the value of the field.
    :param key: The key of the field.
    :return: The value of the field.
    """

    return getattr(self, key, None)

get_values(keys)

Ruft die Werte der Felder ab.

Parameter
  • keys (List[str]) –

    Die Schlüssel der Felder.

Rückgabe
  • dict

    Die Werte der Felder.

Quellcode in agents/memory/memory.py
83
84
85
86
87
88
89
def get_values(self, keys: List[str]) -> dict:
    """
    Get the values of the fields.
    :param keys: The keys of the fields.
    :return: The values of the fields.
    """
    return {key: self.get_value(key) for key in keys}

set_value(key, value)

Fügt ein Feld zum Speicherelement hinzu.

Parameter
  • key (str) –

    Der Schlüssel des Feldes.

  • value (str) –

    Der Wert des Feldes.

Quellcode in agents/memory/memory.py
55
56
57
58
59
60
61
62
63
64
def set_value(self, key: str, value: str) -> None:
    """
    Add a field to the memory item.
    :param key: The key of the field.
    :param value: The value of the field.
    """
    setattr(self, key, value)

    if key not in self._memory_attributes:
        self._memory_attributes.append(key)

to_dict()

Konvertiert das MemoryItem in ein Wörterbuch.

Rückgabe
  • Dict[str, str]

    Das Wörterbuch.

Quellcode in agents/memory/memory.py
19
20
21
22
23
24
25
26
27
28
29
def to_dict(self) -> Dict[str, str]:
    """
    Convert the MemoryItem to a dictionary.
    :return: The dictionary.
    """

    return {
        key: value
        for key, value in self.__dict__.items()
        if key in self._memory_attributes
    }

to_json()

Konvertiert das Speicherelement in einen JSON-String.

Rückgabe
  • str

    Der JSON-String.

Quellcode in agents/memory/memory.py
39
40
41
42
43
44
def to_json(self) -> str:
    """
    Convert the memory item to a JSON string.
    :return: The JSON string.
    """
    return json.dumps(self.to_dict())

Info

Bei jedem Schritt wird eine Instanz von MemoryItem erstellt und im Memory gespeichert, um die Informationen über die Interaktion des Agenten mit dem Benutzer und den Anwendungen aufzuzeichnen.

Speicher

Die Klasse Memory ist für die Verwaltung des Speichers des Agenten verantwortlich. Sie speichert eine Liste von MemoryItem-Instanzen, die den Speicher des Agenten in jedem Schritt darstellen. Die Klasse Memory ist wie folgt definiert:

Diese Datenklasse stellt einen Speicher eines Agenten dar.

content property

Ruft den Inhalt des Speichers ab.

Rückgabe

length property

Ruft die Länge des Speichers ab.

Rückgabe
  • int

    Die Länge des Speichers.

list_content property

Listet den Inhalt des Speichers auf.

Rückgabe
  • List[Dict[str, str]]

    Der Inhalt des Speichers.

add_memory_item(memory_item)

Fügt ein Speicherelement zum Speicher hinzu.

Parameter
  • memory_item (MemoryItem) –

    Das hinzuzufügende Speicherelement.

Quellcode in agents/memory/memory.py
131
132
133
134
135
136
def add_memory_item(self, memory_item: MemoryItem) -> None:
    """
    Add a memory item to the memory.
    :param memory_item: The memory item to add.
    """
    self._content.append(memory_item)

clear()

Löscht den Speicher.

Quellcode in agents/memory/memory.py
138
139
140
141
142
def clear(self) -> None:
    """
    Clear the memory.
    """
    self._content = []

delete_memory_item(step)

Löscht ein Speicherelement aus dem Speicher.

Parameter
  • step (int) –

    Der zu löschende Schritt des Speicherelements.

Quellcode in agents/memory/memory.py
152
153
154
155
156
157
def delete_memory_item(self, step: int) -> None:
    """
    Delete a memory item from the memory.
    :param step: The step of the memory item to delete.
    """
    self._content = [item for item in self._content if item.step != step]

filter_memory_from_keys(keys)

Filtert den Speicher nach Schlüsseln. Wenn ein Element den Schlüssel nicht hat, wird der Schlüssel ignoriert.

Parameter
  • keys (List[str]) –

    Die zu filternden Schlüssel.

Rückgabe
  • List[Dict[str, str]]

    Der gefilterte Speicher.

Quellcode in agents/memory/memory.py
123
124
125
126
127
128
129
def filter_memory_from_keys(self, keys: List[str]) -> List[Dict[str, str]]:
    """
    Filter the memory from the keys. If an item does not have the key, the key will be ignored.
    :param keys: The keys to filter.
    :return: The filtered memory.
    """
    return [item.filter(keys) for item in self._content]

filter_memory_from_steps(steps)

Filtert den Speicher nach Schritten.

Parameter
  • steps (List[int]) –

    Die zu filternden Schritte.

Rückgabe
  • List[Dict[str, str]]

    Der gefilterte Speicher.

Quellcode in agents/memory/memory.py
115
116
117
118
119
120
121
def filter_memory_from_steps(self, steps: List[int]) -> List[Dict[str, str]]:
    """
    Filter the memory from the steps.
    :param steps: The steps to filter.
    :return: The filtered memory.
    """
    return [item.to_dict() for item in self._content if item.step in steps]

from_list_of_dicts(data)

Konvertiert die Liste von Wörterbüchern in den Speicher.

Parameter
  • data (List[Dict[str, str]]) –

    Die Liste der Wörterbücher.

Quellcode in agents/memory/memory.py
176
177
178
179
180
181
182
183
184
185
def from_list_of_dicts(self, data: List[Dict[str, str]]) -> None:
    """
    Convert the list of dictionaries to the memory.
    :param data: The list of dictionaries.
    """
    self._content = []
    for item in data:
        memory_item = MemoryItem()
        memory_item.from_dict(item)
        self._content.append(memory_item)

get_latest_item()

Ruft das letzte Speicherelement ab.

Rückgabe
Quellcode in agents/memory/memory.py
187
188
189
190
191
192
193
194
def get_latest_item(self) -> MemoryItem:
    """
    Get the latest memory item.
    :return: The latest memory item.
    """
    if self.length == 0:
        return None
    return self._content[-1]

is_empty()

Prüft, ob der Speicher leer ist.

Rückgabe
  • bool

    Der boolesche Wert, der angibt, ob der Speicher leer ist.

Quellcode in agents/memory/memory.py
212
213
214
215
216
217
def is_empty(self) -> bool:
    """
    Check if the memory is empty.
    :return: The boolean value indicating if the memory is empty.
    """
    return self.length == 0

load(content)

Lädt die Daten aus dem Speicher.

Parameter
  • content (List[MemoryItem]) –

    Der zu ladende Inhalt.

Quellcode in agents/memory/memory.py
108
109
110
111
112
113
def load(self, content: List[MemoryItem]) -> None:
    """
    Load the data from the memory.
    :param content: The content to load.
    """
    self._content = content

to_json()

Konvertiert den Speicher in einen JSON-String.

Rückgabe
  • str

    Der JSON-String.

Quellcode in agents/memory/memory.py
159
160
161
162
163
164
165
166
167
def to_json(self) -> str:
    """
    Convert the memory to a JSON string.
    :return: The JSON string.
    """

    return json.dumps(
        [item.to_dict() for item in self._content if item is not None]
    )

to_list_of_dicts()

Konvertiert den Speicher in eine Liste von Wörterbüchern.

Rückgabe
  • List[Dict[str, str]]

    Die Liste der Wörterbücher.

Quellcode in agents/memory/memory.py
169
170
171
172
173
174
def to_list_of_dicts(self) -> List[Dict[str, str]]:
    """
    Convert the memory to a list of dictionaries.
    :return: The list of dictionaries.
    """
    return [item.to_dict() for item in self._content]

Info

Jeder Agent hat seine eigene Memory-Instanz, um seine Informationen zu speichern.

Info

Nicht alle Informationen im Memory werden dem Agenten zur Entscheidungsfindung zur Verfügung gestellt. Der Agent kann auf Teile des Speichers zugreifen, je nach den Anforderungen der Logik des Agenten.