Skip to content

Commit b511115

Browse files
committed
♻️ Refactor: Sort backend imports #1037
1 parent 574c09c commit b511115

11 files changed

+447
-308
lines changed

backend/services/agent_service.py

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,50 @@
22
import json
33
import logging
44
import os
5-
from collections import deque
65
import uuid
6+
from collections import deque
77

88
from fastapi import Header, Request
99
from fastapi.responses import JSONResponse, StreamingResponse
10+
from nexent.core.agents.run_agent import agent_run
11+
from nexent.memory.memory_service import clear_memory
1012

1113
from agents.agent_run_manager import agent_run_manager
12-
from agents.create_agent_info import create_agent_run_info
13-
from agents.create_agent_info import create_tool_config_list
14+
from agents.create_agent_info import create_agent_run_info, create_tool_config_list
1415
from agents.preprocess_manager import preprocess_manager
1516
from consts.exceptions import AgentRunException, MemoryPreparationException
16-
from consts.model import AgentInfoRequest, ExportAndImportAgentInfo, ExportAndImportDataFormat, ToolInstanceInfoRequest, \
17-
ToolSourceEnum, MCPInfo
18-
from consts.model import AgentRequest
19-
from database.agent_db import create_agent, search_blank_sub_agent_by_main_agent_id, \
20-
search_agent_info_by_agent_id, update_agent, delete_agent_by_id, query_all_agent_info_by_tenant_id, \
21-
query_sub_agents_id_list, insert_related_agent, delete_agent_relationship, search_agent_id_by_agent_name, \
22-
delete_related_agent
23-
from database.remote_mcp_db import get_mcp_server_by_name_and_tenant, check_mcp_name_exists
24-
from database.tool_db import create_or_update_tool_by_tool_info, query_all_tools, query_all_enabled_tool_instances, \
25-
search_tools_for_sub_agent, check_tool_is_available, delete_tools_by_agent_id
26-
from nexent.core.agents.run_agent import agent_run
27-
from nexent.memory.memory_service import clear_memory
28-
from services.conversation_management_service import save_conversation_user, save_conversation_assistant
17+
from consts.model import (
18+
AgentInfoRequest,
19+
AgentRequest,
20+
ExportAndImportAgentInfo,
21+
ExportAndImportDataFormat,
22+
MCPInfo,
23+
ToolInstanceInfoRequest,
24+
ToolSourceEnum
25+
)
26+
from database.agent_db import (
27+
create_agent,
28+
delete_agent_by_id,
29+
delete_agent_relationship,
30+
delete_related_agent,
31+
insert_related_agent,
32+
query_all_agent_info_by_tenant_id,
33+
query_sub_agents_id_list,
34+
search_agent_id_by_agent_name,
35+
search_agent_info_by_agent_id,
36+
search_blank_sub_agent_by_main_agent_id,
37+
update_agent
38+
)
39+
from database.remote_mcp_db import check_mcp_name_exists, get_mcp_server_by_name_and_tenant
40+
from database.tool_db import (
41+
check_tool_is_available,
42+
create_or_update_tool_by_tool_info,
43+
delete_tools_by_agent_id,
44+
query_all_enabled_tool_instances,
45+
query_all_tools,
46+
search_tools_for_sub_agent
47+
)
48+
from services.conversation_management_service import save_conversation_assistant, save_conversation_user
2949
from services.memory_config_service import build_memory_context
3050
from services.remote_mcp_service import add_remote_mcp_server_list
3151
from services.tool_configuration_service import update_tool_list
@@ -709,7 +729,8 @@ def _memory_token(message_text: str) -> str:
709729
):
710730
yield data_chunk
711731
except Exception as run_exc:
712-
logger.error(f"Agent run error after memory failure: {str(run_exc)}")
732+
logger.error(
733+
f"Agent run error after memory failure: {str(run_exc)}")
713734
raise AgentRunException(f"Agent run error: {str(run_exc)}")
714735
except Exception as e:
715736
logger.error(f"Generate stream with memory error: {str(e)}")
@@ -758,7 +779,8 @@ async def run_agent_stream(
758779
"""
759780
# Save user message only if not in debug mode (before streaming starts)
760781
if not agent_request.is_debug:
761-
save_messages(agent_request, target="user", authorization=authorization)
782+
save_messages(agent_request, target="user",
783+
authorization=authorization)
762784

763785
# Choose streaming strategy based on user's memory switch
764786
resolved_user_id, resolved_tenant_id, _ = _resolve_user_tenant_language(

backend/services/config_sync_service.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
import logging
22

3-
from consts.const import DEFAULT_APP_NAME_ZH, DEFAULT_APP_NAME_EN, DEFAULT_APP_DESCRIPTION_ZH, \
4-
DEFAULT_APP_DESCRIPTION_EN, DEFAULT_APP_ICON_URL, MODEL_CONFIG_MAPPING, APP_NAME, APP_DESCRIPTION, ICON_TYPE, \
5-
AVATAR_URI, CUSTOM_ICON_URL
3+
from consts.const import (
4+
APP_DESCRIPTION,
5+
APP_NAME,
6+
AVATAR_URI,
7+
CUSTOM_ICON_URL,
8+
DEFAULT_APP_DESCRIPTION_EN,
9+
DEFAULT_APP_DESCRIPTION_ZH,
10+
DEFAULT_APP_ICON_URL,
11+
DEFAULT_APP_NAME_EN,
12+
DEFAULT_APP_NAME_ZH,
13+
ICON_TYPE,
14+
MODEL_CONFIG_MAPPING
15+
)
616
from database.model_management_db import get_model_id_by_display_name
7-
from utils.config_utils import tenant_config_manager, get_env_key, safe_value, \
8-
get_model_name_from_config
17+
from utils.config_utils import (
18+
get_env_key,
19+
get_model_name_from_config,
20+
safe_value,
21+
tenant_config_manager
22+
)
923

1024
logger = logging.getLogger("config_sync_service")
1125

backend/services/conversation_management_service.py

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,36 @@
22
import json
33
import logging
44
from datetime import datetime
5-
from typing import List, Optional, Dict, Any
5+
from typing import Any, Dict, List, Optional
66

77
from fastapi import Header
88
from jinja2 import StrictUndefined, Template
9+
from nexent.core.utils.observer import ProcessType
910
from smolagents import OpenAIServerModel
1011

11-
from consts.model import MessageRequest, ConversationResponse, AgentRequest, MessageUnit
12-
from database.conversation_db import create_conversation_message, create_source_search, create_message_units, \
13-
create_source_image, rename_conversation, get_conversation_list, get_conversation_history, \
14-
get_source_images_by_message, \
15-
get_source_images_by_conversation, get_source_searches_by_message, get_source_searches_by_conversation, \
16-
delete_conversation, get_conversation, create_conversation, update_message_opinion, get_message_id_by_index
17-
from nexent.core.utils.observer import ProcessType
12+
from consts.model import AgentRequest, ConversationResponse, MessageRequest, MessageUnit
13+
from database.conversation_db import (
14+
create_conversation,
15+
create_conversation_message,
16+
create_message_units,
17+
create_source_image,
18+
create_source_search,
19+
delete_conversation,
20+
get_conversation,
21+
get_conversation_history,
22+
get_conversation_list,
23+
get_message_id_by_index,
24+
get_source_images_by_conversation,
25+
get_source_images_by_message,
26+
get_source_searches_by_conversation,
27+
get_source_searches_by_message,
28+
rename_conversation,
29+
update_message_opinion
30+
)
1831
from utils.auth_utils import get_current_user_id
19-
from utils.config_utils import tenant_config_manager, get_model_name_from_config
32+
from utils.config_utils import get_model_name_from_config, tenant_config_manager
2033
from utils.prompt_template_utils import get_generate_title_prompt_template
21-
from utils.str_utils import remove_think_tags, add_no_think_token
34+
from utils.str_utils import add_no_think_token, remove_think_tags
2235

2336
logger = logging.getLogger("conversation_management_service")
2437

@@ -56,7 +69,8 @@ def save_message(request: MessageRequest, authorization: Optional[str] = Header(
5669
# Validate conversation_id
5770
conversation_id = message_data.get('conversation_id')
5871
if not conversation_id:
59-
raise Exception("conversation_id is required, please call /conversation/create to create a conversation first")
72+
raise Exception(
73+
"conversation_id is required, please call /conversation/create to create a conversation first")
6074

6175
# Process different types of message units
6276
message_units = message_data['message']
@@ -289,7 +303,8 @@ def update_conversation_title(conversation_id: int, title: str, user_id: str = N
289303
"""
290304
success = rename_conversation(conversation_id, title, user_id)
291305
if not success:
292-
raise Exception(f"Conversation {conversation_id} does not exist or has been deleted")
306+
raise Exception(
307+
f"Conversation {conversation_id} does not exist or has been deleted")
293308
return success
294309

295310

@@ -342,7 +357,8 @@ def rename_conversation_service(conversation_id: int, name: str, user_id: str) -
342357
try:
343358
success = rename_conversation(conversation_id, name, user_id)
344359
if not success:
345-
raise Exception(f"Conversation {conversation_id} does not exist or has been deleted")
360+
raise Exception(
361+
f"Conversation {conversation_id} does not exist or has been deleted")
346362
return True
347363
except Exception as e:
348364
logging.error(f"Failed to rename conversation: {str(e)}")
@@ -363,7 +379,8 @@ def delete_conversation_service(conversation_id: int, user_id: str) -> bool:
363379
try:
364380
success = delete_conversation(conversation_id, user_id)
365381
if not success:
366-
raise Exception(f"Conversation {conversation_id} does not exist or has been deleted")
382+
raise Exception(
383+
f"Conversation {conversation_id} does not exist or has been deleted")
367384
return True
368385
except Exception as e:
369386
logging.error(f"Failed to delete conversation: {str(e)}")
@@ -688,4 +705,4 @@ async def get_message_id_by_index_impl(conversation_id: int, message_index: int)
688705
message_id = get_message_id_by_index(conversation_id, message_index)
689706
if message_id is None:
690707
raise Exception("Message not found.")
691-
return message_id
708+
return message_id

backend/services/data_process_service.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import asyncio
12
import base64
3+
import concurrent.futures
24
import io
35
import logging
46
import os
57
import tempfile
8+
import threading
69
import time
710
import warnings
811
from typing import Optional, List, Dict, Any
@@ -13,14 +16,11 @@
1316
from PIL import Image
1417
from transformers import CLIPProcessor, CLIPModel
1518

16-
from consts.model import BatchTaskRequest
17-
from data_process.utils import get_task_info, get_all_task_ids_from_redis
18-
import concurrent.futures
19-
import asyncio
20-
2119
from consts.const import CLIP_MODEL_PATH, IMAGE_FILTER, REDIS_BACKEND_URL, REDIS_URL
20+
from consts.model import BatchTaskRequest
2221
from data_process.app import app as celery_app
2322
from data_process.tasks import process_and_forward
23+
from data_process.utils import get_task_info, get_all_task_ids_from_redis
2424

2525
# Configure logging
2626
logger = logging.getLogger("data_process.service")
@@ -45,9 +45,8 @@ def __init__(self):
4545

4646
self._inspector = None
4747
self._inspector_last_time = 0
48-
self._inspector_ttl = 60 # inspector缓存时间,秒
48+
self._inspector_ttl = 60 # Inspector cache time in seconds
4949
self._inspector_lock = None
50-
import threading
5150
self._inspector_lock = threading.Lock()
5251

5352
def _init_redis_client(self):
@@ -180,8 +179,10 @@ def get_reserved():
180179
# Add to the set, duplicates will be handled
181180
task_ids.add(task_id)
182181
except Exception as redis_error:
183-
logger.warning(f"Failed to query Redis for stored task IDs: {str(redis_error)}")
184-
logger.debug(f"Total unique task IDs collected (inspector + Redis): {len(task_ids)}")
182+
logger.warning(
183+
f"Failed to query Redis for stored task IDs: {str(redis_error)}")
184+
logger.debug(
185+
f"Total unique task IDs collected (inspector + Redis): {len(task_ids)}")
185186
tasks = [get_task_info(task_id) for task_id in task_ids]
186187
all_task_infos = await asyncio.gather(*tasks, return_exceptions=True)
187188
for task_info in all_task_infos:

0 commit comments

Comments
 (0)