mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-08 23:58:34 +00:00
Fix Deepseek-v3-250324 empty responses issue (#2657)
Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
@@ -91,6 +91,7 @@ LLM_CONTEXT_WINDOW_SIZES = {
|
||||
"gemini-1.5-flash-8b": 1048576,
|
||||
# deepseek
|
||||
"deepseek-chat": 128000,
|
||||
"deepseek-v3-250324": 128000,
|
||||
# groq
|
||||
"gemma2-9b-it": 8192,
|
||||
"gemma-7b-it": 8192,
|
||||
@@ -930,6 +931,17 @@ class LLM(BaseLLM):
|
||||
) # Create a copy to avoid modifying the original
|
||||
messages.append({"role": "user", "content": "Please continue."})
|
||||
return messages
|
||||
|
||||
# Handle Deepseek-v3-250324 model - it also requires the last message to have a role of 'user'
|
||||
if "deepseek-v3-250324" in self.model.lower():
|
||||
# Check if the last message has a role of 'assistant'
|
||||
if messages and messages[-1]["role"] == "assistant":
|
||||
# Add a dummy user message to ensure the last message has a role of 'user'
|
||||
messages = (
|
||||
messages.copy()
|
||||
) # Create a copy to avoid modifying the original
|
||||
messages.append({"role": "user", "content": "Please continue."})
|
||||
return messages
|
||||
|
||||
# Handle Anthropic models
|
||||
if not self.is_anthropic:
|
||||
|
||||
@@ -407,6 +407,37 @@ def test_anthropic_message_formatting(anthropic_llm, system_message, user_messag
|
||||
assert formatted[0] == system_message
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def deepseek_llm():
|
||||
"""Fixture for Deepseek-v3-250324 LLM instance."""
|
||||
return LLM(model="deepseek-v3-250324")
|
||||
|
||||
|
||||
def test_deepseek_message_formatting(deepseek_llm):
|
||||
"""Test Deepseek-v3-250324 message formatting."""
|
||||
# Test when last message is assistant
|
||||
messages = [
|
||||
{"role": "user", "content": "Hello"},
|
||||
{"role": "assistant", "content": "Hi there"},
|
||||
]
|
||||
formatted = deepseek_llm._format_messages_for_provider(messages)
|
||||
assert len(formatted) == 3
|
||||
assert formatted[0]["role"] == "user"
|
||||
assert formatted[1]["role"] == "assistant"
|
||||
assert formatted[2]["role"] == "user"
|
||||
assert formatted[2]["content"] == "Please continue."
|
||||
|
||||
# Test when last message is not assistant
|
||||
messages = [
|
||||
{"role": "assistant", "content": "Hi there"},
|
||||
{"role": "user", "content": "Hello"},
|
||||
]
|
||||
formatted = deepseek_llm._format_messages_for_provider(messages)
|
||||
assert len(formatted) == 2
|
||||
assert formatted[0]["role"] == "assistant"
|
||||
assert formatted[1]["role"] == "user"
|
||||
|
||||
|
||||
def test_deepseek_r1_with_open_router():
|
||||
if not os.getenv("OPEN_ROUTER_API_KEY"):
|
||||
pytest.skip("OPEN_ROUTER_API_KEY not set; skipping test.")
|
||||
|
||||
Reference in New Issue
Block a user