@@ -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