mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-02 15:52:34 +00:00
refactor: Add logging and improve error handling
- Add Logger class usage - Add descriptive error messages - Add edge case test for memory reset failure - Add docstrings to RAGStorage methods Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
@@ -1,14 +1,25 @@
|
||||
"""CLI command for resetting memory storage."""
|
||||
import logging
|
||||
import subprocess
|
||||
import sys
|
||||
from typing import Optional
|
||||
|
||||
import click
|
||||
|
||||
from crewai.cli.utils import get_crew
|
||||
from crewai.memory.short_term.short_term_memory import ShortTermMemory
|
||||
from crewai.knowledge.storage.knowledge_storage import KnowledgeStorage
|
||||
from crewai.memory.entity.entity_memory import EntityMemory
|
||||
from crewai.memory.long_term.long_term_memory import LongTermMemory
|
||||
from crewai.memory.short_term.short_term_memory import ShortTermMemory
|
||||
from crewai.utilities.task_output_storage_handler import TaskOutputStorageHandler
|
||||
from crewai.knowledge.storage.knowledge_storage import KnowledgeStorage
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _log_error(message: str) -> None:
|
||||
"""Log an error message."""
|
||||
_logger.error(message)
|
||||
click.echo(message, err=True)
|
||||
|
||||
|
||||
def _reset_all_memories() -> None:
|
||||
@@ -20,6 +31,13 @@ def _reset_all_memories() -> None:
|
||||
KnowledgeStorage().reset()
|
||||
|
||||
|
||||
@click.command()
|
||||
@click.option("-l", "--long", is_flag=True, help="Reset long-term memory")
|
||||
@click.option("-s", "--short", is_flag=True, help="Reset short-term memory")
|
||||
@click.option("-e", "--entity", is_flag=True, help="Reset entity memory")
|
||||
@click.option("--knowledge", is_flag=True, help="Reset knowledge")
|
||||
@click.option("-k", "--kickoff-outputs", is_flag=True, help="Reset kickoff outputs")
|
||||
@click.option("-a", "--all", is_flag=True, help="Reset all memories")
|
||||
def reset_memories_command(
|
||||
long: bool,
|
||||
short: bool,
|
||||
@@ -27,19 +45,18 @@ def reset_memories_command(
|
||||
knowledge: bool,
|
||||
kickoff_outputs: bool,
|
||||
all: bool,
|
||||
) -> None:
|
||||
) -> int:
|
||||
"""
|
||||
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.
|
||||
long: Reset long-term memory
|
||||
short: Reset short-term memory
|
||||
entity: Reset entity memory
|
||||
knowledge: Reset knowledge
|
||||
kickoff_outputs: Reset kickoff outputs
|
||||
all: Reset all memories
|
||||
"""
|
||||
|
||||
try:
|
||||
crew = get_crew()
|
||||
if all:
|
||||
@@ -49,37 +66,49 @@ def reset_memories_command(
|
||||
# When no crew exists, use default storage paths
|
||||
_reset_all_memories()
|
||||
click.echo("All memories have been reset.")
|
||||
return
|
||||
return 0
|
||||
|
||||
if not any([long, short, entity, kickoff_outputs, knowledge]):
|
||||
click.echo(
|
||||
"No memory type specified. Please specify at least one type to reset."
|
||||
"Please specify at least one memory type to reset using the appropriate flags."
|
||||
)
|
||||
return
|
||||
return 0
|
||||
|
||||
if not crew:
|
||||
click.echo("No crew found. Use --all to reset all memories.")
|
||||
return
|
||||
return 0
|
||||
|
||||
if long:
|
||||
crew.reset_memories(command_type="long")
|
||||
click.echo("Long term memory has been reset.")
|
||||
if short:
|
||||
crew.reset_memories(command_type="short")
|
||||
click.echo("Short term memory has been reset.")
|
||||
if entity:
|
||||
crew.reset_memories(command_type="entity")
|
||||
click.echo("Entity memory has been reset.")
|
||||
if kickoff_outputs:
|
||||
crew.reset_memories(command_type="kickoff_outputs")
|
||||
click.echo("Latest Kickoff outputs stored has been reset.")
|
||||
if knowledge:
|
||||
crew.reset_memories(command_type="knowledge")
|
||||
click.echo("Knowledge has been reset.")
|
||||
try:
|
||||
if long:
|
||||
crew.reset_memories(command_type="long")
|
||||
click.echo("Long term memory has been reset.")
|
||||
|
||||
if short:
|
||||
crew.reset_memories(command_type="short")
|
||||
click.echo("Short term memory has been reset.")
|
||||
|
||||
if entity:
|
||||
crew.reset_memories(command_type="entity")
|
||||
click.echo("Entity memory has been reset.")
|
||||
|
||||
if kickoff_outputs:
|
||||
crew.reset_memories(command_type="kickoff_outputs")
|
||||
click.echo("Latest Kickoff outputs stored has been reset.")
|
||||
|
||||
if knowledge:
|
||||
crew.reset_memories(command_type="knowledge")
|
||||
click.echo("Knowledge has been reset.")
|
||||
|
||||
return 0
|
||||
except Exception as e:
|
||||
_log_error(f"An unexpected error occurred: {e}")
|
||||
raise click.exceptions.Exit(code=1)
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
click.echo(f"An error occurred while resetting the memories: {e}", err=True)
|
||||
_log_error(f"An error occurred while resetting the memories: {e}")
|
||||
click.echo(e.output, err=True)
|
||||
raise click.exceptions.Exit(code=1)
|
||||
|
||||
except Exception as e:
|
||||
click.echo(f"An unexpected error occurred: {e}", err=True)
|
||||
_log_error(f"An unexpected error occurred: {e}")
|
||||
raise click.exceptions.Exit(code=1)
|
||||
|
||||
Reference in New Issue
Block a user