mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-20 13:28:13 +00:00
Compare commits
2 Commits
devin/1768
...
devin/1751
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2616818895 | ||
|
|
eb93fb06a6 |
@@ -103,6 +103,12 @@ ENV_VARS = {
|
|||||||
"key_name": "SAMBANOVA_API_KEY",
|
"key_name": "SAMBANOVA_API_KEY",
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"deepseek": [
|
||||||
|
{
|
||||||
|
"prompt": "Enter your DeepSeek API key (press Enter to skip)",
|
||||||
|
"key_name": "DEEPSEEK_API_KEY",
|
||||||
|
}
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -119,6 +125,7 @@ PROVIDERS = [
|
|||||||
"azure",
|
"azure",
|
||||||
"cerebras",
|
"cerebras",
|
||||||
"sambanova",
|
"sambanova",
|
||||||
|
"deepseek",
|
||||||
]
|
]
|
||||||
|
|
||||||
MODELS = {
|
MODELS = {
|
||||||
@@ -314,6 +321,13 @@ MODELS = {
|
|||||||
"sambanova/Meta-Llama-3.2-3B-Instruct",
|
"sambanova/Meta-Llama-3.2-3B-Instruct",
|
||||||
"sambanova/Meta-Llama-3.2-1B-Instruct",
|
"sambanova/Meta-Llama-3.2-1B-Instruct",
|
||||||
],
|
],
|
||||||
|
"deepseek": [
|
||||||
|
"deepseek/deepseek-chat",
|
||||||
|
"deepseek/deepseek-coder",
|
||||||
|
"deepseek/deepseek-r1",
|
||||||
|
"deepseek/deepseek-v3",
|
||||||
|
"deepseek/deepseek-reasoner",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFAULT_LLM_MODEL = "gpt-4o-mini"
|
DEFAULT_LLM_MODEL = "gpt-4o-mini"
|
||||||
|
|||||||
@@ -154,6 +154,11 @@ LLM_CONTEXT_WINDOW_SIZES = {
|
|||||||
"gemini/gemma-3-27b-it": 128000,
|
"gemini/gemma-3-27b-it": 128000,
|
||||||
# deepseek
|
# deepseek
|
||||||
"deepseek-chat": 128000,
|
"deepseek-chat": 128000,
|
||||||
|
"deepseek/deepseek-chat": 128000,
|
||||||
|
"deepseek/deepseek-coder": 128000,
|
||||||
|
"deepseek/deepseek-r1": 128000,
|
||||||
|
"deepseek/deepseek-v3": 128000,
|
||||||
|
"deepseek/deepseek-reasoner": 128000,
|
||||||
# groq
|
# groq
|
||||||
"gemma2-9b-it": 8192,
|
"gemma2-9b-it": 8192,
|
||||||
"gemma-7b-it": 8192,
|
"gemma-7b-it": 8192,
|
||||||
|
|||||||
114
tests/test_deepseek_integration.py
Normal file
114
tests/test_deepseek_integration.py
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
"""Tests for DeepSeek integration in CrewAI."""
|
||||||
|
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from crewai.llm import LLM
|
||||||
|
from crewai.cli.constants import ENV_VARS, PROVIDERS, MODELS
|
||||||
|
|
||||||
|
|
||||||
|
class TestDeepSeekIntegration:
|
||||||
|
"""Test DeepSeek integration in CrewAI."""
|
||||||
|
|
||||||
|
def test_deepseek_in_providers(self):
|
||||||
|
"""Test that DeepSeek is included in the providers list."""
|
||||||
|
assert "deepseek" in PROVIDERS
|
||||||
|
|
||||||
|
def test_deepseek_in_env_vars(self):
|
||||||
|
"""Test that DeepSeek API key configuration is in ENV_VARS."""
|
||||||
|
assert "deepseek" in ENV_VARS
|
||||||
|
deepseek_config = ENV_VARS["deepseek"]
|
||||||
|
assert len(deepseek_config) == 1
|
||||||
|
assert deepseek_config[0]["key_name"] == "DEEPSEEK_API_KEY"
|
||||||
|
assert "DeepSeek API key" in deepseek_config[0]["prompt"]
|
||||||
|
|
||||||
|
def test_deepseek_in_models(self):
|
||||||
|
"""Test that DeepSeek models are included in the models dictionary."""
|
||||||
|
assert "deepseek" in MODELS
|
||||||
|
deepseek_models = MODELS["deepseek"]
|
||||||
|
expected_models = [
|
||||||
|
"deepseek/deepseek-chat",
|
||||||
|
"deepseek/deepseek-coder",
|
||||||
|
"deepseek/deepseek-r1",
|
||||||
|
"deepseek/deepseek-v3",
|
||||||
|
"deepseek/deepseek-reasoner",
|
||||||
|
]
|
||||||
|
for model in expected_models:
|
||||||
|
assert model in deepseek_models
|
||||||
|
|
||||||
|
def test_llm_creation_with_deepseek_chat(self):
|
||||||
|
"""Test creating LLM instance with deepseek-chat model."""
|
||||||
|
llm = LLM(model="deepseek-chat")
|
||||||
|
assert llm.model == "deepseek-chat"
|
||||||
|
assert llm.get_context_window_size() > 0
|
||||||
|
|
||||||
|
def test_llm_creation_with_deepseek_prefix(self):
|
||||||
|
"""Test creating LLM instance with deepseek/ prefix."""
|
||||||
|
llm = LLM(model="deepseek/deepseek-chat")
|
||||||
|
assert llm.model == "deepseek/deepseek-chat"
|
||||||
|
assert llm._get_custom_llm_provider() == "deepseek"
|
||||||
|
assert llm.get_context_window_size() > 0
|
||||||
|
|
||||||
|
def test_deepseek_context_window_sizes(self):
|
||||||
|
"""Test that all DeepSeek models have context window sizes defined."""
|
||||||
|
from crewai.llm import LLM_CONTEXT_WINDOW_SIZES
|
||||||
|
|
||||||
|
deepseek_models = [
|
||||||
|
"deepseek-chat",
|
||||||
|
"deepseek/deepseek-chat",
|
||||||
|
"deepseek/deepseek-coder",
|
||||||
|
"deepseek/deepseek-r1",
|
||||||
|
"deepseek/deepseek-v3",
|
||||||
|
"deepseek/deepseek-reasoner",
|
||||||
|
]
|
||||||
|
|
||||||
|
for model in deepseek_models:
|
||||||
|
assert model in LLM_CONTEXT_WINDOW_SIZES
|
||||||
|
assert LLM_CONTEXT_WINDOW_SIZES[model] > 0
|
||||||
|
|
||||||
|
def test_deepseek_models_context_window_consistency(self):
|
||||||
|
"""Test that DeepSeek models have consistent context window sizes."""
|
||||||
|
from crewai.llm import LLM_CONTEXT_WINDOW_SIZES
|
||||||
|
|
||||||
|
expected_size = 128000
|
||||||
|
deepseek_models = [
|
||||||
|
"deepseek-chat",
|
||||||
|
"deepseek/deepseek-chat",
|
||||||
|
"deepseek/deepseek-coder",
|
||||||
|
"deepseek/deepseek-r1",
|
||||||
|
"deepseek/deepseek-v3",
|
||||||
|
"deepseek/deepseek-reasoner",
|
||||||
|
]
|
||||||
|
|
||||||
|
for model in deepseek_models:
|
||||||
|
assert LLM_CONTEXT_WINDOW_SIZES[model] == expected_size
|
||||||
|
|
||||||
|
@patch.dict("os.environ", {"DEEPSEEK_API_KEY": "test-key"})
|
||||||
|
def test_llm_with_deepseek_api_key(self):
|
||||||
|
"""Test LLM creation with DeepSeek API key in environment."""
|
||||||
|
llm = LLM(model="deepseek/deepseek-chat")
|
||||||
|
assert llm.model == "deepseek/deepseek-chat"
|
||||||
|
assert llm._get_custom_llm_provider() == "deepseek"
|
||||||
|
|
||||||
|
def test_deepseek_provider_detection(self):
|
||||||
|
"""Test that DeepSeek provider is correctly detected from model name."""
|
||||||
|
llm = LLM(model="deepseek/deepseek-chat")
|
||||||
|
provider = llm._get_custom_llm_provider()
|
||||||
|
assert provider == "deepseek"
|
||||||
|
|
||||||
|
def test_deepseek_vs_openrouter_provider_detection(self):
|
||||||
|
"""Test provider detection for DeepSeek vs OpenRouter DeepSeek models."""
|
||||||
|
deepseek_llm = LLM(model="deepseek/deepseek-chat")
|
||||||
|
openrouter_llm = LLM(model="openrouter/deepseek/deepseek-chat")
|
||||||
|
|
||||||
|
assert deepseek_llm._get_custom_llm_provider() == "deepseek"
|
||||||
|
assert openrouter_llm._get_custom_llm_provider() == "openrouter"
|
||||||
|
|
||||||
|
def test_all_deepseek_models_can_be_instantiated(self):
|
||||||
|
"""Test that all DeepSeek models in MODELS can be instantiated."""
|
||||||
|
deepseek_models = MODELS["deepseek"]
|
||||||
|
|
||||||
|
for model in deepseek_models:
|
||||||
|
llm = LLM(model=model)
|
||||||
|
assert llm.model == model
|
||||||
|
assert llm._get_custom_llm_provider() == "deepseek"
|
||||||
|
assert llm.get_context_window_size() > 0
|
||||||
Reference in New Issue
Block a user