mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-14 18:48:29 +00:00
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Notify Downstream / notify-downstream (push) Has been cancelled
Update Test Durations / update-durations (3.10) (push) Has been cancelled
Update Test Durations / update-durations (3.11) (push) Has been cancelled
Update Test Durations / update-durations (3.12) (push) Has been cancelled
Update Test Durations / update-durations (3.13) (push) Has been cancelled
- support nested config format with embedderconfig typeddict - fix parsing for model/model_name compatibility - add validation, typing_extensions, and improved type hints - enhance embedding factory with env var injection and provider support - add tests for openai, azure, and all embedding providers - misc fixes: test file rename, updated mocking patterns
80 lines
2.8 KiB
Python
80 lines
2.8 KiB
Python
"""Test Azure embedder configuration with factory."""
|
|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from crewai.rag.embeddings.factory import EmbedderConfig, get_embedding_function
|
|
|
|
|
|
class TestAzureEmbedderFactory:
|
|
"""Test Azure embedder configuration with factory function."""
|
|
|
|
@patch("crewai.rag.embeddings.factory.EMBEDDING_PROVIDERS")
|
|
def test_azure_with_nested_config(self, mock_providers):
|
|
"""Test Azure configuration with nested config key."""
|
|
|
|
mock_embedding = MagicMock()
|
|
mock_openai_func = MagicMock(return_value=mock_embedding)
|
|
mock_providers.__getitem__.return_value = mock_openai_func
|
|
mock_providers.__contains__.return_value = True
|
|
|
|
embedder_config = EmbedderConfig(
|
|
provider="openai",
|
|
config={
|
|
"api_key": "test-azure-key",
|
|
"api_base": "https://test.openai.azure.com/",
|
|
"api_type": "azure",
|
|
"api_version": "2023-05-15",
|
|
"model": "text-embedding-3-small",
|
|
"deployment_id": "test-deployment",
|
|
},
|
|
)
|
|
|
|
result = get_embedding_function(embedder_config)
|
|
|
|
mock_openai_func.assert_called_once_with(
|
|
api_key="test-azure-key",
|
|
api_base="https://test.openai.azure.com/",
|
|
api_type="azure",
|
|
api_version="2023-05-15",
|
|
model_name="text-embedding-3-small",
|
|
deployment_id="test-deployment",
|
|
)
|
|
assert result == mock_embedding
|
|
|
|
@patch("crewai.rag.embeddings.factory.EMBEDDING_PROVIDERS")
|
|
def test_regular_openai_with_nested_config(self, mock_providers):
|
|
"""Test regular OpenAI configuration with nested config."""
|
|
|
|
mock_embedding = MagicMock()
|
|
mock_openai_func = MagicMock(return_value=mock_embedding)
|
|
mock_providers.__getitem__.return_value = mock_openai_func
|
|
mock_providers.__contains__.return_value = True
|
|
|
|
embedder_config = EmbedderConfig(
|
|
provider="openai",
|
|
config={"api_key": "test-openai-key", "model": "text-embedding-3-large"},
|
|
)
|
|
|
|
result = get_embedding_function(embedder_config)
|
|
|
|
mock_openai_func.assert_called_once_with(
|
|
api_key="test-openai-key", model_name="text-embedding-3-large"
|
|
)
|
|
assert result == mock_embedding
|
|
|
|
def test_flat_format_raises_error(self):
|
|
"""Test that flat format raises an error."""
|
|
embedder_config = {
|
|
"provider": "openai",
|
|
"api_key": "test-key",
|
|
"model_name": "text-embedding-3-small",
|
|
}
|
|
|
|
with pytest.raises(ValueError) as exc_info:
|
|
get_embedding_function(embedder_config)
|
|
|
|
assert "Invalid embedder configuration format" in str(exc_info.value)
|
|
assert "nested under a 'config' key" in str(exc_info.value)
|