11import threading
22import logging
33from urllib .parse import urljoin
4+ from datetime import datetime
5+
6+ from jinja2 import Template , StrictUndefined
7+ from smolagents .utils import BASE_BUILTIN_MODULES
48from nexent .core .utils .observer import MessageObserver
59from nexent .core .agents .agent_model import AgentRunInfo , ModelConfig , AgentConfig , ToolConfig
6- from services .remote_mcp_service import get_remote_mcp_server_list
7- from utils .auth_utils import get_current_user_id
10+ from nexent .memory .memory_service import search_memory_in_levels
811
9- from database .agent_db import search_agent_info_by_agent_id , query_sub_agents_id_list
10- from database .tool_db import search_tools_for_sub_agent
1112from services .elasticsearch_service import ElasticSearchService , elastic_core , get_embedding_model
1213from services .tenant_config_service import get_selected_knowledge_list
14+ from services .remote_mcp_service import get_remote_mcp_server_list
15+ from services .memory_config_service import build_memory_context
16+ from database .agent_db import search_agent_info_by_agent_id , query_sub_agents_id_list
17+ from database .tool_db import search_tools_for_sub_agent
1318from utils .prompt_template_utils import get_agent_prompt_template
1419from utils .config_utils import config_manager , tenant_config_manager , get_model_name_from_config
15- from smolagents .utils import BASE_BUILTIN_MODULES
16- from services .memory_config_service import build_memory_context
17- from jinja2 import Template , StrictUndefined
18- from datetime import datetime
19-
20- from nexent .memory .memory_service import search_memory_in_levels
21-
20+ from utils .auth_utils import get_current_user_id
2221
2322logger = logging .getLogger ("create_agent_info" )
2423logger .setLevel (logging .DEBUG )
2524
25+
2626async def create_model_config_list (tenant_id ):
2727 main_model_config = tenant_config_manager .get_model_config (key = "LLM_ID" , tenant_id = tenant_id )
2828 sub_model_config = tenant_config_manager .get_model_config (key = "LLM_SECONDARY_ID" , tenant_id = tenant_id )
@@ -117,7 +117,7 @@ async def create_agent_config(agent_id, tenant_id, user_id, language: str = 'zh'
117117 logger .error (f"Failed to build knowledge base summary: { e } " )
118118
119119 # Assemble system_prompt
120- if ( duty_prompt or constraint_prompt or few_shots_prompt ) :
120+ if duty_prompt or constraint_prompt or few_shots_prompt :
121121 system_prompt = Template (prompt_template ["system_prompt" ], undefined = StrictUndefined ).render ({
122122 "duty" : duty_prompt ,
123123 "constraint" : constraint_prompt ,
@@ -129,15 +129,19 @@ async def create_agent_config(agent_id, tenant_id, user_id, language: str = 'zh'
129129 "APP_DESCRIPTION" : app_description ,
130130 "memory_list" : memory_list ,
131131 "knowledge_base_summary" : knowledge_base_summary ,
132- "time" : datetime .now ().strftime ("%Y-%m-%d %H:%M:%S" )
132+ "time" : datetime .now ().strftime ("%Y-%m-%d %H:%M:%S" )
133133 })
134134 else :
135135 system_prompt = agent_info .get ("prompt" , "" )
136136
137137 agent_config = AgentConfig (
138138 name = "undefined" if agent_info ["name" ] is None else agent_info ["name" ],
139139 description = "undefined" if agent_info ["description" ] is None else agent_info ["description" ],
140- prompt_templates = await prepare_prompt_templates (is_manager = len (managed_agents )> 0 , system_prompt = system_prompt , language = language ),
140+ prompt_templates = await prepare_prompt_templates (
141+ is_manager = len (managed_agents ) > 0 ,
142+ system_prompt = system_prompt ,
143+ language = language
144+ ),
141145 tools = tool_list ,
142146 max_steps = agent_info .get ("max_steps" , 10 ),
143147 model_name = agent_info .get ("model_name" ),
@@ -253,7 +257,7 @@ async def join_minio_file_description_to_query(minio_files, query):
253257 return final_query
254258
255259
256- def filter_mcp_servers_and_tools (input_agent_config : AgentConfig , mcp_info_dict )-> list :
260+ def filter_mcp_servers_and_tools (input_agent_config : AgentConfig , mcp_info_dict ) -> list :
257261 """
258262 Filter mcp servers and tools, only keep the actual used mcp servers
259263 Support multi-level agent, recursively check all sub-agent tools
@@ -282,8 +286,13 @@ async def create_agent_run_info(agent_id, minio_files, query, history, authoriza
282286
283287 final_query = await join_minio_file_description_to_query (minio_files = minio_files , query = query )
284288 model_list = await create_model_config_list (tenant_id )
285- agent_config = await create_agent_config (agent_id = agent_id , tenant_id = tenant_id , user_id = user_id ,
286- language = language , last_user_query = final_query )
289+ agent_config = await create_agent_config (
290+ agent_id = agent_id ,
291+ tenant_id = tenant_id ,
292+ user_id = user_id ,
293+ language = language ,
294+ last_user_query = final_query
295+ )
287296
288297 remote_mcp_list = await get_remote_mcp_server_list (tenant_id = tenant_id )
289298 default_mcp_url = urljoin (config_manager .get_config ("NEXENT_MCP_SERVER" ), "sse" )
@@ -297,7 +306,6 @@ async def create_agent_run_info(agent_id, minio_files, query, history, authoriza
297306 # Filter MCP servers and tools
298307 mcp_host = filter_mcp_servers_and_tools (agent_config , remote_mcp_dict )
299308
300-
301309 agent_run_info = AgentRunInfo (
302310 query = final_query ,
303311 model_config_list = model_list ,
0 commit comments