mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-11 00:58:30 +00:00
Fix: Implement add() method in BaseFileKnowledgeSource to solve PDFKnowledgeSource instantiation error
Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
@@ -64,6 +64,16 @@ class BaseFileKnowledgeSource(BaseKnowledgeSource, ABC):
|
|||||||
"""Save the documents to the storage."""
|
"""Save the documents to the storage."""
|
||||||
self.storage.save(self.chunks)
|
self.storage.save(self.chunks)
|
||||||
|
|
||||||
|
def add(self) -> None:
|
||||||
|
"""
|
||||||
|
Process content from files, chunk it, compute embeddings, and save them.
|
||||||
|
This method is called after content is loaded from files.
|
||||||
|
"""
|
||||||
|
for _, text in self.content.items():
|
||||||
|
new_chunks = self._chunk_text(text)
|
||||||
|
self.chunks.extend(new_chunks)
|
||||||
|
self._save_documents()
|
||||||
|
|
||||||
def convert_to_path(self, path: Union[Path, str]) -> Path:
|
def convert_to_path(self, path: Union[Path, str]) -> Path:
|
||||||
"""Convert a path to a Path object."""
|
"""Convert a path to a Path object."""
|
||||||
return Path(KNOWLEDGE_DIRECTORY + "/" + path) if isinstance(path, str) else path
|
return Path(KNOWLEDGE_DIRECTORY + "/" + path) if isinstance(path, str) else path
|
||||||
|
|||||||
16
tests/knowledge/test_knowledge_source_instantiation.py
Normal file
16
tests/knowledge/test_knowledge_source_instantiation.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
import pytest
|
||||||
|
from unittest.mock import patch
|
||||||
|
from crewai.knowledge.source.pdf_knowledge_source import PDFKnowledgeSource
|
||||||
|
|
||||||
|
@patch('crewai.knowledge.source.base_file_knowledge_source.BaseFileKnowledgeSource.validate_content')
|
||||||
|
@patch('crewai.knowledge.source.pdf_knowledge_source.PDFKnowledgeSource.load_content')
|
||||||
|
def test_pdf_knowledge_source_instantiation(mock_load_content, mock_validate_content, tmp_path):
|
||||||
|
"""Test that PDFKnowledgeSource can be instantiated without errors."""
|
||||||
|
mock_load_content.return_value = {}
|
||||||
|
|
||||||
|
pdf_path = tmp_path / "test.pdf"
|
||||||
|
pdf_path.touch() # Create the file
|
||||||
|
|
||||||
|
pdf_source = PDFKnowledgeSource(file_paths=[pdf_path])
|
||||||
|
assert isinstance(pdf_source, PDFKnowledgeSource)
|
||||||
Reference in New Issue
Block a user