Skip to content

Commit 0b27fe2

Browse files
authored
♻️ Sort backend imports #1037
2 parents 18cc4d6 + d515fb0 commit 0b27fe2

16 files changed

+802
-612
lines changed

backend/services/agent_service.py

Lines changed: 38 additions & 17 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
@@ -758,7 +778,8 @@ async def run_agent_stream(
758778
"""
759779
# Save user message only if not in debug mode (before streaming starts)
760780
if not agent_request.is_debug:
761-
save_messages(agent_request, target="user", authorization=authorization)
781+
save_messages(agent_request, target="user",
782+
authorization=authorization)
762783

763784
# Choose streaming strategy based on user's memory switch
764785
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: 24 additions & 11 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

@@ -688,4 +701,4 @@ async def get_message_id_by_index_impl(conversation_id: int, message_index: int)
688701
message_id = get_message_id_by_index(conversation_id, message_index)
689702
if message_id is None:
690703
raise Exception("Message not found.")
691-
return message_id
704+
return message_id

backend/services/data_process_service.py

Lines changed: 9 additions & 13 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):
@@ -66,8 +65,7 @@ def _init_redis_client(self):
6665
connection_pool=self.redis_pool)
6766
logger.info("Redis client initialized successfully.")
6867
else:
69-
logger.warning(
70-
"REDIS_BACKEND_URL not set, Redis client not initialized.")
68+
logger.warning("REDIS_BACKEND_URL not set, Redis client not initialized.")
7169
except Exception as e:
7270
logger.error(f"Failed to initialize Redis client: {str(e)}")
7371

@@ -84,8 +82,7 @@ def _init_clip_model(self):
8482
self.clip_available = True
8583
logger.info("CLIP model loaded successfully")
8684
except Exception as e:
87-
logger.warning(
88-
f"Failed to load CLIP model, size-only filtering will be used: {str(e)}")
85+
logger.warning(f"Failed to load CLIP model, size-only filtering will be used: {str(e)}")
8986
self.clip_available = False
9087

9188
async def start(self):
@@ -105,8 +102,7 @@ def _get_celery_inspector(self):
105102
if not celery_app.conf.broker_url or not celery_app.conf.result_backend:
106103
celery_app.conf.broker_url = REDIS_URL
107104
celery_app.conf.result_backend = REDIS_BACKEND_URL
108-
logger.warning(
109-
f"Celery broker URL is not configured properly, reconfiguring to {celery_app.conf.broker_url}")
105+
logger.warning(f"Celery broker URL is not configured properly, reconfiguring to {celery_app.conf.broker_url}")
110106
try:
111107
inspector = celery_app.control.inspect()
112108
inspector.ping()

0 commit comments

Comments
 (0)