crewAI icon indicating copy to clipboard operation
crewAI copied to clipboard

[BUG]agent.py:set_knowledge not support CHN

Open iniwap opened this issue 8 months ago • 4 comments

Description

def set_knowledge(self, crew_embedder: Optional[Dict[str, Any]] = None):
    try:
        if self.embedder is None and crew_embedder:
            self.embedder = crew_embedder

        if self.knowledge_sources:
            full_pattern = re.compile(r"[^a-zA-Z0-9\-_\r\n]|(\.\.)")
            knowledge_agent_name = f"{re.sub(full_pattern, '_', self.role)}"
            if isinstance(self.knowledge_sources, list) and all(
                isinstance(k, BaseKnowledgeSource) for k in self.knowledge_sources
            ):
                self.knowledge = Knowledge(
                    sources=self.knowledge_sources,
                    embedder=self.embedder,
                    collection_name=knowledge_agent_name,
                    storage=self.knowledge_storage or None,
                )
    except (TypeError, ValueError) as e:
        raise ValueError(f"Invalid Knowledge Configuration: {str(e)}")

not support CNH,should change to "full_pattern = re.compile(r"[^a-zA-Z0-9\u4e00-\u9fa5-_\r\n]|(..)")"

Steps to Reproduce

set agent role to CNH

Expected behavior

no error

Screenshots/Code snippets

def set_knowledge(self, crew_embedder: Optional[Dict[str, Any]] = None):
    try:
        if self.embedder is None and crew_embedder:
            self.embedder = crew_embedder

        if self.knowledge_sources:
            full_pattern = re.compile(r"[^a-zA-Z0-9\-_\r\n]|(\.\.)")
            knowledge_agent_name = f"{re.sub(full_pattern, '_', self.role)}"
            if isinstance(self.knowledge_sources, list) and all(
                isinstance(k, BaseKnowledgeSource) for k in self.knowledge_sources
            ):
                self.knowledge = Knowledge(
                    sources=self.knowledge_sources,
                    embedder=self.embedder,
                    collection_name=knowledge_agent_name,
                    storage=self.knowledge_storage or None,
                )
    except (TypeError, ValueError) as e:
        raise ValueError(f"Invalid Knowledge Configuration: {str(e)}")

Operating System

Windows 11

Python Version

3.11

crewAI Version

108

crewAI Tools Version

none

Virtual Environment

Venv

Evidence

NONE

Possible Solution

def set_knowledge(self, crew_embedder: Optional[Dict[str, Any]] = None):
    try:
        if self.embedder is None and crew_embedder:
            self.embedder = crew_embedder

        if self.knowledge_sources:
            full_pattern = re.compile(r"[^a-zA-Z0-9\u4e00-\u9fa5\-_\r\n]|(\.\.)")
            knowledge_agent_name = f"{re.sub(full_pattern, '_', self.role)}"
            if isinstance(self.knowledge_sources, list) and all(
                isinstance(k, BaseKnowledgeSource) for k in self.knowledge_sources
            ):
                self.knowledge = Knowledge(
                    sources=self.knowledge_sources,
                    embedder=self.embedder,
                    collection_name=knowledge_agent_name,
                    storage=self.knowledge_storage or None,
                )
    except (TypeError, ValueError) as e:
        raise ValueError(f"Invalid Knowledge Configuration: {str(e)}")

Additional context

NO

iniwap avatar Mar 24 '25 07:03 iniwap

Original (with error):

full_pattern = re.compile(r"[^a-zA-Z0-9\u4e00-\u9fa5-\r\n]|(..)") # Still error, name does not support Chinese characters. knowledge_agent_name = f"{re.sub(full_pattern, '', self.role)}"

Optimized:

Issue: The original pattern incorrectly included Chinese character support, leading to errors. Solution: Modified the regular expression to exclude Chinese characters and used 'agent_ops_agent_name' for more reliable name generation.

character_filter_pattern = re.compile(r"[^a-zA-Z0-9-\r\n]|(..)") knowledge_agent_name = f"{re.sub(character_filter_pattern, '', self.agent_ops_agent_name)}" # need set agent_ops_agent_name or default

iniwap avatar Mar 24 '25 08:03 iniwap

Or add "name" attribute to Agent,like task has "name" attribute

iniwap avatar Mar 24 '25 08:03 iniwap

hey @iniwap can we send us PR? I really appreciate that. Let me know if you need any help

lucasgomide avatar Mar 27 '25 13:03 lucasgomide

This issue is stale because it has been open for 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.

github-actions[bot] avatar Apr 27 '25 12:04 github-actions[bot]

This issue was closed because it has been stalled for 5 days with no activity.

github-actions[bot] avatar May 02 '25 12:05 github-actions[bot]