3636 call_llm_for_system_prompt ,
3737 generate_and_save_system_prompt_impl ,
3838 gen_system_prompt_streamable ,
39- get_enabled_tool_description_for_generate_prompt ,
40- get_enabled_sub_agent_description_for_generate_prompt ,
4139 generate_system_prompt ,
4240 join_info_for_generate_system_prompt ,
4341 _process_thinking_tokens
@@ -91,21 +89,21 @@ def test_call_llm_for_system_prompt(self, mock_get_model_name, mock_openai, mock
9189 )
9290
9391 @patch ('backend.services.prompt_service.generate_system_prompt' )
94- @patch ('backend.services.prompt_service.get_enabled_sub_agent_description_for_generate_prompt ' )
95- @patch ('backend.services.prompt_service.get_enabled_tool_description_for_generate_prompt ' )
92+ @patch ('backend.services.prompt_service.query_tools_by_ids ' )
93+ @patch ('backend.services.prompt_service.search_agent_info_by_agent_id ' )
9694 @patch ('backend.services.prompt_service.update_agent' )
97- def test_generate_and_save_system_prompt_impl (self , mock_update_agent , mock_get_tool_desc ,
98- mock_get_agent_desc , mock_generate_system_prompt ):
95+ def test_generate_and_save_system_prompt_impl (self , mock_update_agent , mock_search_agent_info ,
96+ mock_query_tools , mock_generate_system_prompt ):
9997 # Setup
10098 mock_tool1 = {"name" : "tool1" , "description" : "Tool 1 desc" ,
10199 "inputs" : "input1" , "output_type" : "output1" }
102100 mock_tool2 = {"name" : "tool2" , "description" : "Tool 2 desc" ,
103101 "inputs" : "input2" , "output_type" : "output2" }
104- mock_get_tool_desc .return_value = [mock_tool1 , mock_tool2 ]
102+ mock_query_tools .return_value = [mock_tool1 , mock_tool2 ]
105103
106104 mock_agent1 = {"name" : "agent1" , "description" : "Agent 1 desc" }
107105 mock_agent2 = {"name" : "agent2" , "description" : "Agent 2 desc" }
108- mock_get_agent_desc . return_value = [mock_agent1 , mock_agent2 ]
106+ mock_search_agent_info . side_effect = [mock_agent1 , mock_agent2 ]
109107
110108 # Mock the generator to return the expected data structure
111109 def mock_generator (* args , ** kwargs ):
@@ -121,33 +119,34 @@ def mock_generator(*args, **kwargs):
121119
122120 mock_generate_system_prompt .side_effect = mock_generator
123121
124- # Execute - test as a generator
122+ # Execute - test as a generator with frontend-provided IDs
125123 result_gen = generate_and_save_system_prompt_impl (
126124 agent_id = 123 ,
127125 model_id = self .test_model_id ,
128126 task_description = "Test task" ,
129127 user_id = "user123" ,
130128 tenant_id = "tenant456" ,
131- language = "zh"
129+ language = "zh" ,
130+ tool_ids = [1 , 2 ],
131+ sub_agent_ids = [10 , 20 ]
132132 )
133133 result = list (result_gen ) # Convert generator to list for assertion
134134
135135 # Assert
136136 self .assertGreater (len (result ), 0 )
137137
138- mock_get_tool_desc .assert_called_once_with (
139- agent_id = 123 , tenant_id = "tenant456" )
140- mock_get_agent_desc .assert_called_once_with (
141- agent_id = 123 , tenant_id = "tenant456" )
138+ # Verify tools and agents were queried using frontend-provided IDs
139+ mock_query_tools .assert_called_once_with ([1 , 2 ])
140+ self .assertEqual (mock_search_agent_info .call_count , 2 )
141+ mock_search_agent_info .assert_any_call (agent_id = 10 , tenant_id = "tenant456" )
142+ mock_search_agent_info .assert_any_call (agent_id = 20 , tenant_id = "tenant456" )
142143
143- mock_generate_system_prompt .assert_called_once_with (
144- mock_get_agent_desc .return_value ,
145- "Test task" ,
146- mock_get_tool_desc .return_value ,
147- "tenant456" ,
148- self .test_model_id ,
149- "zh"
150- )
144+ # Verify generate_system_prompt was called with correct parameters
145+ mock_generate_system_prompt .assert_called_once ()
146+ call_args = mock_generate_system_prompt .call_args
147+ self .assertEqual (call_args [0 ][0 ], [mock_agent1 , mock_agent2 ]) # sub_agent_info_list
148+ self .assertEqual (call_args [0 ][1 ], "Test task" ) # task_description
149+ self .assertEqual (call_args [0 ][2 ], [mock_tool1 , mock_tool2 ]) # tool_info_list
151150
152151 # Verify update_agent was called with the correct parameters
153152 mock_update_agent .assert_called_once ()
@@ -162,11 +161,8 @@ def mock_generator(*args, **kwargs):
162161 self .assertEqual (agent_info .business_description , "Test task" )
163162
164163 @patch ('backend.services.prompt_service.generate_system_prompt' )
165- @patch ('backend.services.prompt_service.get_enabled_sub_agent_description_for_generate_prompt' )
166- @patch ('backend.services.prompt_service.get_enabled_tool_description_for_generate_prompt' )
167164 @patch ('backend.services.prompt_service.update_agent' )
168- def test_generate_and_save_system_prompt_impl_create_mode (self , mock_update_agent , mock_get_tool_desc ,
169- mock_get_agent_desc , mock_generate_system_prompt ):
165+ def test_generate_and_save_system_prompt_impl_create_mode (self , mock_update_agent , mock_generate_system_prompt ):
170166 """Test generate_and_save_system_prompt_impl in create mode (agent_id=0)"""
171167 # Setup - Mock the generator to return the expected data structure
172168 def mock_generator (* args , ** kwargs ):
@@ -182,25 +178,22 @@ def mock_generator(*args, **kwargs):
182178
183179 mock_generate_system_prompt .side_effect = mock_generator
184180
185- # Execute - test as a generator with agent_id=0 (create mode)
181+ # Execute - test as a generator with agent_id=0 (create mode) and empty tool/sub-agent IDs
186182 result_gen = generate_and_save_system_prompt_impl (
187183 agent_id = 0 ,
188184 model_id = self .test_model_id ,
189185 task_description = "Test task" ,
190186 user_id = "user123" ,
191187 tenant_id = "tenant456" ,
192- language = "zh"
188+ language = "zh" ,
189+ tool_ids = [],
190+ sub_agent_ids = []
193191 )
194192 result = list (result_gen ) # Convert generator to list for assertion
195193
196194 # Assert
197195 self .assertGreater (len (result ), 0 )
198196
199- # In create mode, should NOT call get_enabled_tool_description_for_generate_prompt
200- # and get_enabled_sub_agent_description_for_generate_prompt
201- mock_get_tool_desc .assert_not_called ()
202- mock_get_agent_desc .assert_not_called ()
203-
204197 # Should call generate_system_prompt with empty lists for tools and sub-agents
205198 mock_generate_system_prompt .assert_called_once_with (
206199 [], # Empty sub_agent_info_list
@@ -246,7 +239,9 @@ def test_gen_system_prompt_streamable(self, mock_generate_impl):
246239 task_description = "Test task" ,
247240 user_id = "user123" ,
248241 tenant_id = "tenant456" ,
249- language = "zh"
242+ language = "zh" ,
243+ tool_ids = None ,
244+ sub_agent_ids = None ,
250245 )
251246
252247 # Verify output format - should be SSE format
@@ -473,68 +468,6 @@ def test_join_info_for_generate_system_prompt(self, mock_template):
473468 self .assertEqual (
474469 template_vars ["task_description" ], mock_task_description )
475470
476- @patch ('backend.services.prompt_service.get_enable_tool_id_by_agent_id' )
477- @patch ('backend.services.prompt_service.query_tools_by_ids' )
478- def test_get_enabled_tool_description_for_generate_prompt (self , mock_query_tools , mock_get_tool_ids ):
479- # Setup
480- mock_get_tool_ids .return_value = [1 , 2 , 3 ]
481- mock_tools = [{"id" : 1 , "name" : "tool1" }, {
482- "id" : 2 , "name" : "tool2" }, {"id" : 3 , "name" : "tool3" }]
483- mock_query_tools .return_value = mock_tools
484-
485- # Execute
486- result = get_enabled_tool_description_for_generate_prompt (
487- agent_id = 123 ,
488- tenant_id = "tenant456"
489- )
490-
491- # Assert
492- self .assertEqual (result , mock_tools )
493- mock_get_tool_ids .assert_called_once_with (
494- agent_id = 123 , tenant_id = "tenant456" )
495- mock_query_tools .assert_called_once_with ([1 , 2 , 3 ])
496-
497- @patch ('backend.services.prompt_service.search_agent_info_by_agent_id' )
498- @patch ('backend.services.prompt_service.query_sub_agents_id_list' )
499- def test_get_enabled_sub_agent_description_for_generate_prompt (self , mock_query_sub_agents_id_list , mock_search_agent_info ):
500- # Setup
501- mock_query_sub_agents_id_list .return_value = [1 , 2 , 3 ]
502-
503- # Mock search_agent_info_by_agent_id to return different agent info for each ID
504- def mock_search_agent_info_side_effect (agent_id , tenant_id ):
505- agent_info_map = {
506- 1 : {"id" : 1 , "name" : "agent1" , "enabled" : True },
507- 2 : {"id" : 2 , "name" : "agent2" , "enabled" : False },
508- 3 : {"id" : 3 , "name" : "agent3" , "enabled" : True }
509- }
510- return agent_info_map .get (agent_id , {})
511-
512- mock_search_agent_info .side_effect = mock_search_agent_info_side_effect
513-
514- # Execute
515- result = get_enabled_sub_agent_description_for_generate_prompt (
516- agent_id = 123 ,
517- tenant_id = "tenant456"
518- )
519-
520- # Assert
521- expected_result = [
522- {"id" : 1 , "name" : "agent1" , "enabled" : True },
523- {"id" : 2 , "name" : "agent2" , "enabled" : False },
524- {"id" : 3 , "name" : "agent3" , "enabled" : True }
525- ]
526- self .assertEqual (result , expected_result )
527- mock_query_sub_agents_id_list .assert_called_once_with (
528- main_agent_id = 123 , tenant_id = "tenant456" )
529-
530- # Verify search_agent_info_by_agent_id was called for each sub agent ID
531- self .assertEqual (mock_search_agent_info .call_count , 3 )
532- mock_search_agent_info .assert_any_call (
533- agent_id = 1 , tenant_id = "tenant456" )
534- mock_search_agent_info .assert_any_call (
535- agent_id = 2 , tenant_id = "tenant456" )
536- mock_search_agent_info .assert_any_call (
537- agent_id = 3 , tenant_id = "tenant456" )
538471
539472 @patch ('backend.services.prompt_service.get_model_by_model_id' )
540473 @patch ('backend.services.prompt_service.OpenAIServerModel' )
0 commit comments