mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
Some checks failed
Notify Downstream / notify-downstream (push) Has been cancelled
* fix: support to reset memories after changing Crew's embedder The sources must not be added while initializing the Knowledge otherwise we could not reset it * chore: improve reset memory feedback Previously, even when no memories were actually erased, we logged that they had been. From now on, the log will specify which memory has been reset. * feat: improve get_crew discovery from a single file Crew instances can now be discovered from any function or method with a return type annotation of -> Crew, as well as from module-level attributes assigned to a Crew instance. Additionally, crews can be retrieved from within a Flow * refactor: make add_sources a public method from Knowledge
77 lines
2.6 KiB
Python
77 lines
2.6 KiB
Python
import subprocess
|
|
|
|
import click
|
|
|
|
from crewai.cli.utils import get_crews
|
|
|
|
|
|
def reset_memories_command(
|
|
long,
|
|
short,
|
|
entity,
|
|
knowledge,
|
|
kickoff_outputs,
|
|
all,
|
|
) -> None:
|
|
"""
|
|
Reset the crew memories.
|
|
|
|
Args:
|
|
long (bool): Whether to reset the long-term memory.
|
|
short (bool): Whether to reset the short-term memory.
|
|
entity (bool): Whether to reset the entity memory.
|
|
kickoff_outputs (bool): Whether to reset the latest kickoff task outputs.
|
|
all (bool): Whether to reset all memories.
|
|
knowledge (bool): Whether to reset the knowledge.
|
|
"""
|
|
|
|
try:
|
|
if not any([long, short, entity, kickoff_outputs, knowledge, all]):
|
|
click.echo(
|
|
"No memory type specified. Please specify at least one type to reset."
|
|
)
|
|
return
|
|
|
|
crews = get_crews()
|
|
if not crews:
|
|
raise ValueError("No crew found.")
|
|
for crew in crews:
|
|
if all:
|
|
crew.reset_memories(command_type="all")
|
|
click.echo(
|
|
f"[Crew ({crew.name if crew.name else crew.id})] Reset memories command has been completed."
|
|
)
|
|
continue
|
|
if long:
|
|
crew.reset_memories(command_type="long")
|
|
click.echo(
|
|
f"[Crew ({crew.name if crew.name else crew.id})] Long term memory has been reset."
|
|
)
|
|
if short:
|
|
crew.reset_memories(command_type="short")
|
|
click.echo(
|
|
f"[Crew ({crew.name if crew.name else crew.id})] Short term memory has been reset."
|
|
)
|
|
if entity:
|
|
crew.reset_memories(command_type="entity")
|
|
click.echo(
|
|
f"[Crew ({crew.name if crew.name else crew.id})] Entity memory has been reset."
|
|
)
|
|
if kickoff_outputs:
|
|
crew.reset_memories(command_type="kickoff_outputs")
|
|
click.echo(
|
|
f"[Crew ({crew.name if crew.name else crew.id})] Latest Kickoff outputs stored has been reset."
|
|
)
|
|
if knowledge:
|
|
crew.reset_memories(command_type="knowledge")
|
|
click.echo(
|
|
f"[Crew ({crew.name if crew.name else crew.id})] Knowledge has been reset."
|
|
)
|
|
|
|
except subprocess.CalledProcessError as e:
|
|
click.echo(f"An error occurred while resetting the memories: {e}", err=True)
|
|
click.echo(e.output, err=True)
|
|
|
|
except Exception as e:
|
|
click.echo(f"An unexpected error occurred: {e}", err=True)
|