mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 16:18:30 +00:00
feat: rag configuration with optional dependency support (#3394)
### RAG Config System * Added ChromaDB client creation via config with sensible defaults * Introduced optional imports and shared RAG config utilities/schema * Enabled embedding function support with ChromaDB provider integration * Refactored configs for immutability and stronger type safety * Removed unused code and expanded test coverage
This commit is contained in:
34
tests/rag/config/test_factory.py
Normal file
34
tests/rag/config/test_factory.py
Normal file
@@ -0,0 +1,34 @@
|
||||
"""Tests for RAG config factory."""
|
||||
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from crewai.rag.config.factory import create_client
|
||||
|
||||
|
||||
def test_create_client_chromadb():
|
||||
"""Test ChromaDB client creation."""
|
||||
mock_config = Mock()
|
||||
mock_config.provider = "chromadb"
|
||||
|
||||
with patch("crewai.rag.config.factory.require") as mock_require:
|
||||
mock_module = Mock()
|
||||
mock_client = Mock()
|
||||
mock_module.create_client.return_value = mock_client
|
||||
mock_require.return_value = mock_module
|
||||
|
||||
result = create_client(mock_config)
|
||||
|
||||
assert result == mock_client
|
||||
mock_require.assert_called_once_with(
|
||||
"crewai.rag.chromadb.factory", purpose="The 'chromadb' provider"
|
||||
)
|
||||
mock_module.create_client.assert_called_once_with(mock_config)
|
||||
|
||||
|
||||
def test_create_client_unsupported_provider():
|
||||
"""Test unsupported provider returns None for now."""
|
||||
mock_config = Mock()
|
||||
mock_config.provider = "unsupported"
|
||||
|
||||
result = create_client(mock_config)
|
||||
assert result is None
|
||||
22
tests/rag/config/test_optional_imports.py
Normal file
22
tests/rag/config/test_optional_imports.py
Normal file
@@ -0,0 +1,22 @@
|
||||
"""Tests for optional imports."""
|
||||
|
||||
import pytest
|
||||
|
||||
from crewai.rag.config.optional_imports.base import _MissingProvider
|
||||
from crewai.rag.config.optional_imports.providers import MissingChromaDBConfig
|
||||
|
||||
|
||||
def test_missing_provider_raises_runtime_error():
|
||||
"""Test that _MissingProvider raises RuntimeError on instantiation."""
|
||||
with pytest.raises(
|
||||
RuntimeError, match="provider '__missing__' requested but not installed"
|
||||
):
|
||||
_MissingProvider()
|
||||
|
||||
|
||||
def test_missing_chromadb_config_raises_runtime_error():
|
||||
"""Test that MissingChromaDBConfig raises RuntimeError on instantiation."""
|
||||
with pytest.raises(
|
||||
RuntimeError, match="provider 'chromadb' requested but not installed"
|
||||
):
|
||||
MissingChromaDBConfig()
|
||||
Reference in New Issue
Block a user