Skip to content

Commit fdee79c

Browse files
authored
🐛 Generating title error when using tokenpony deepseek-r1 #1339
2 parents 75d0a12 + 3f560a0 commit fdee79c

File tree

3 files changed

+68
-2
lines changed

3 files changed

+68
-2
lines changed

backend/consts/const.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,3 +271,6 @@
271271

272272
# APP Version
273273
APP_VERSION = "v1.7.5.1"
274+
275+
DEFAULT_ZH_TITLE = "新对话"
276+
DEFAULT_EN_TITLE = "New Conversation"

backend/services/conversation_management_service.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from jinja2 import StrictUndefined, Template
88
from smolagents import OpenAIServerModel
99

10-
from consts.const import LANGUAGE, MODEL_CONFIG_MAPPING, MESSAGE_ROLE
10+
from consts.const import LANGUAGE, MODEL_CONFIG_MAPPING, MESSAGE_ROLE, DEFAULT_EN_TITLE, DEFAULT_ZH_TITLE
1111
from consts.model import AgentRequest, ConversationResponse, MessageRequest, MessageUnit
1212
from database.conversation_db import (
1313
create_conversation,
@@ -277,7 +277,8 @@ def call_llm_for_title(content: str, tenant_id: str, language: str = LANGUAGE["Z
277277

278278
# Call the model
279279
response = llm(messages, max_tokens=10)
280-
280+
if not response or not response.content or not response.content.strip():
281+
return DEFAULT_EN_TITLE if language == LANGUAGE["EN"] else DEFAULT_ZH_TITLE
281282
return remove_think_blocks(response.content.strip())
282283

283284

test/backend/services/test_conversation_management_service.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,68 @@ def test_call_llm_for_title(self, mock_get_model_config, mock_get_prompt_templat
346346
mock_llm_instance.assert_called_once()
347347
mock_get_prompt_template.assert_called_once_with(language='zh')
348348

349+
@patch('backend.services.conversation_management_service.OpenAIServerModel')
350+
@patch('backend.services.conversation_management_service.get_generate_title_prompt_template')
351+
@patch('backend.services.conversation_management_service.tenant_config_manager.get_model_config')
352+
def test_call_llm_for_title_response_none_zh(self, mock_get_model_config, mock_get_prompt_template, mock_openai):
353+
"""Test call_llm_for_title returns default ZH title when response is None."""
354+
# Setup
355+
mock_get_model_config.return_value = {
356+
"model_name": "gpt-4",
357+
"model_repo": "openai",
358+
"base_url": "http://example.com",
359+
"api_key": "fake-key"
360+
}
361+
362+
mock_prompt_template = {
363+
"SYSTEM_PROMPT": "Generate a short title",
364+
"USER_PROMPT": "Generate a title for: {{content}}"
365+
}
366+
mock_get_prompt_template.return_value = mock_prompt_template
367+
368+
mock_llm_instance = mock_openai.return_value
369+
mock_llm_instance.return_value = None
370+
371+
# Execute
372+
result = call_llm_for_title(
373+
"What is AI?", tenant_id=self.tenant_id, language="zh")
374+
375+
# Assert
376+
self.assertEqual(result, "新对话")
377+
mock_openai.assert_called_once()
378+
mock_get_prompt_template.assert_called_once_with(language='zh')
379+
380+
@patch('backend.services.conversation_management_service.OpenAIServerModel')
381+
@patch('backend.services.conversation_management_service.get_generate_title_prompt_template')
382+
@patch('backend.services.conversation_management_service.tenant_config_manager.get_model_config')
383+
def test_call_llm_for_title_response_none_en(self, mock_get_model_config, mock_get_prompt_template, mock_openai):
384+
"""Test call_llm_for_title returns default EN title when response is None."""
385+
# Setup
386+
mock_get_model_config.return_value = {
387+
"model_name": "gpt-4",
388+
"model_repo": "openai",
389+
"base_url": "http://example.com",
390+
"api_key": "fake-key"
391+
}
392+
393+
mock_prompt_template = {
394+
"SYSTEM_PROMPT": "Generate a short title",
395+
"USER_PROMPT": "Generate a title for: {{content}}"
396+
}
397+
mock_get_prompt_template.return_value = mock_prompt_template
398+
399+
mock_llm_instance = mock_openai.return_value
400+
mock_llm_instance.return_value = None
401+
402+
# Execute
403+
result = call_llm_for_title(
404+
"What is AI?", tenant_id=self.tenant_id, language="en")
405+
406+
# Assert
407+
self.assertEqual(result, "New Conversation")
408+
mock_openai.assert_called_once()
409+
mock_get_prompt_template.assert_called_once_with(language='en')
410+
349411
@patch('backend.services.conversation_management_service.rename_conversation')
350412
def test_update_conversation_title(self, mock_rename_conversation):
351413
# Setup

0 commit comments

Comments
 (0)