fix: Agent-level knowledge sources with non-OpenAI embedders

- Remove OpenAI default from KnowledgeStorage
- Add proper embedder config inheritance from crew to agent
- Improve error messaging for missing embedder config
- Add tests for agent-level knowledge sources

Fixes #2164

Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
Devin AI
2025-02-19 15:23:53 +00:00
parent ba66910fbd
commit f02db1a4f5
5 changed files with 118 additions and 19 deletions

View File

@@ -115,7 +115,7 @@ class Agent(BaseAgent):
default="safe",
description="Mode for code execution: 'safe' (using Docker) or 'unsafe' (direct execution).",
)
embedder: Optional[Dict[str, Any]] = Field(
embedder_config: Optional[Dict[str, Any]] = Field(
default=None,
description="Embedder configuration for the agent.",
)
@@ -150,9 +150,14 @@ class Agent(BaseAgent):
if isinstance(self.knowledge_sources, list) and all(
isinstance(k, BaseKnowledgeSource) for k in self.knowledge_sources
):
# Use agent's embedder config if provided, otherwise use crew's
embedder_config = self.embedder_config
if not embedder_config and self.crew:
embedder_config = self.crew.embedder_config
self.knowledge = Knowledge(
sources=self.knowledge_sources,
embedder=self.embedder,
embedder_config=embedder_config,
collection_name=knowledge_agent_name,
storage=self.knowledge_storage or None,
)