Ce face Memoria unificată CrewAI (clasa Memory)
CrewAI folosește un sistem de memorie unificat: clasa Memory înlocuiește memoriile separate pe termen scurt, pe termen lung, de entități și externe. La salvare, un LLM analizează conținutul și deduce scopul, categoriile și importanța. La căutare, rezultatele sunt ordonate după un scor compus din similaritate semantică, recență și importanță.
Cu memory=True pe Crew, echipa creează un Memory() implicit și îi transmite configurația embedder a echipei. După fiecare task, echipa extrage fapte din rezultat și le salvează; înainte de fiecare task, agentul caută contextul relevant și îl adaugă în prompt. Toți agenții folosesc memoria echipei, dacă nu au una proprie (de exemplu memory=memorie.scope("/agent/researcher")).
Memoriile sunt organizate într-un arbore de scopuri, ca un sistem de fișiere: /, /project/alpha, /agent/researcher. Fără scop explicit, LLM-ul alege unde pune informația. Memoria se folosește și singură, în scripturi, și în Flows, cu self.remember() și self.recall().
Implicit, embedding-urile vin de la OpenAI text-embedding-3-large (3072 de dimensiuni), iar analiza folosește gpt-4o-mini. Stocarea implicită este LanceDB, în ./.crewai/memory; o schimbi cu storage="./cale" sau cu variabila CREWAI_STORAGE_DIR.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
memory=True |
Pe Crew: memorie implicită, comună tuturor agenților. |
Memory(...) |
Instanță configurată, dată ca memory= pe Crew sau Agent. |
remember(text, scope=...) |
Salvează o informație. |
recall(întrebare, limit=..., depth=...) |
Caută. depth="shallow" face doar căutare vectorială, fără apeluri LLM; depth="deep" (implicit) analizează întrebările lungi cu un LLM. |
forget(scope=...) |
Șterge un subarbore de scopuri. |
semantic_weight / recency_weight / importance_weight |
Ponderile scorului compus: implicit 0.5 / 0.3 / 0.2. |
recency_half_life_days |
Zilele după care scorul de recență se înjumătățește (implicit 30). |
embedder |
Configurația de embedding, de exemplu {"provider": "ollama", "config": {"model_name": "mxbai-embed-large"}}. |
llm |
Modelul pentru analiză (implicit gpt-4o-mini). |
Exemple practice
Exemplul 1: Memorie folosită direct, fără echipă
from crewai import Memory
memory = Memory()
memory.remember("We decided to use PostgreSQL for the user database.")
matches = memory.recall("What database did we choose?")
for m in matches:
print(f"[{m.score:.2f}] {m.record.content}")
Exemplul 2: Embedding-uri locale cu Ollama
memory = Memory(embedder={
"provider": "ollama",
"config": {
"model_name": "mxbai-embed-large",
"url": "http://localhost:11434/api/embeddings",
},
})
Exemplul 3: Resetare și inspectare din terminal
crewai reset-memories -m
crewai memory
Greșeli frecvente și bune practici
- Cauți parametrii vechi pentru short-term, long-term și entity memory. Au fost înlocuiți de clasa
Memory; în CLI,-l,-sși-esunt învechite în favoarea lui-m. - Activezi memoria fără cheie OpenAI și fără alt embedder. Configurația implicită folosește OpenAI atât pentru embedding, cât și pentru analiză.
- Primești o eroare de dimensiune a embedding-urilor pe o memorie veche. Stocările create cu modele de 1536 de dimensiuni nu se potrivesc cu
text-embedding-3-large: ruleazăcrewai reset-memories -m, șterge directorul memoriei sau configurează explicit modelul vechi.
Întrebări & Exemple practice:
Memoria unificată CrewAI (clasa Memory)Ai o întrebare despre Memoria unificată CrewAI (clasa Memory) sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.