crewAI
crewAI copied to clipboard
[BUG]agent.py:set_knowledge not support CHN
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
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
Or add "name" attribute to Agent,like task has "name" attribute
hey @iniwap can we send us PR? I really appreciate that. Let me know if you need any help
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.
This issue was closed because it has been stalled for 5 days with no activity.