mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-23 04:12:13 +00:00
143 lines
5.2 KiB
Python
143 lines
5.2 KiB
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
from typing import Optional
|
|
|
|
from dbgpt._private.config import Config
|
|
from dbgpt.app.base import WebServerParameters
|
|
from dbgpt.component import SystemApp
|
|
from dbgpt.configs.model_config import MODEL_DISK_CACHE_DIR
|
|
from dbgpt.util.executor_utils import DefaultExecutorFactory
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
CFG = Config()
|
|
|
|
|
|
def initialize_components(
|
|
param: WebServerParameters,
|
|
system_app: SystemApp,
|
|
embedding_model_name: str,
|
|
embedding_model_path: str,
|
|
rerank_model_name: Optional[str] = None,
|
|
rerank_model_path: Optional[str] = None,
|
|
):
|
|
# Lazy import to avoid high time cost
|
|
from dbgpt.app.initialization.embedding_component import (
|
|
_initialize_embedding_model,
|
|
_initialize_rerank_model,
|
|
)
|
|
from dbgpt.app.initialization.scheduler import DefaultScheduler
|
|
from dbgpt.app.initialization.serve_initialization import register_serve_apps
|
|
from dbgpt.datasource.manages.connector_manager import ConnectorManager
|
|
from dbgpt.model.cluster.controller.controller import controller
|
|
|
|
# Register global default executor factory first
|
|
system_app.register(
|
|
DefaultExecutorFactory, max_workers=param.default_thread_pool_size
|
|
)
|
|
system_app.register(DefaultScheduler)
|
|
system_app.register_instance(controller)
|
|
system_app.register(ConnectorManager)
|
|
|
|
from dbgpt.serve.agent.hub.controller import module_plugin
|
|
|
|
system_app.register_instance(module_plugin)
|
|
|
|
from dbgpt.serve.agent.agents.controller import multi_agents
|
|
|
|
system_app.register_instance(multi_agents)
|
|
|
|
_initialize_embedding_model(
|
|
param, system_app, embedding_model_name, embedding_model_path
|
|
)
|
|
_initialize_rerank_model(param, system_app, rerank_model_name, rerank_model_path)
|
|
_initialize_model_cache(system_app, param.port)
|
|
_initialize_awel(system_app, param)
|
|
# Initialize resource manager of agent
|
|
_initialize_resource_manager(system_app)
|
|
_initialize_agent(system_app)
|
|
_initialize_openapi(system_app)
|
|
# Register serve apps
|
|
register_serve_apps(system_app, CFG, param.port)
|
|
_initialize_operators()
|
|
|
|
|
|
def _initialize_model_cache(system_app: SystemApp, port: int):
|
|
from dbgpt.storage.cache import initialize_cache
|
|
|
|
if not CFG.MODEL_CACHE_ENABLE:
|
|
logger.info("Model cache is not enable")
|
|
return
|
|
|
|
storage_type = CFG.MODEL_CACHE_STORAGE_TYPE or "disk"
|
|
max_memory_mb = CFG.MODEL_CACHE_MAX_MEMORY_MB or 256
|
|
persist_dir = CFG.MODEL_CACHE_STORAGE_DISK_DIR or MODEL_DISK_CACHE_DIR
|
|
if CFG.WEBSERVER_MULTI_INSTANCE:
|
|
persist_dir = f"{persist_dir}_{port}"
|
|
initialize_cache(system_app, storage_type, max_memory_mb, persist_dir)
|
|
|
|
|
|
def _initialize_awel(system_app: SystemApp, param: WebServerParameters):
|
|
from dbgpt.configs.model_config import _DAG_DEFINITION_DIR
|
|
from dbgpt.core.awel import initialize_awel
|
|
|
|
# Add default dag definition dir
|
|
dag_dirs = [_DAG_DEFINITION_DIR]
|
|
if param.awel_dirs:
|
|
dag_dirs += param.awel_dirs.strip().split(",")
|
|
dag_dirs = [x.strip() for x in dag_dirs]
|
|
|
|
initialize_awel(system_app, dag_dirs)
|
|
|
|
|
|
def _initialize_agent(system_app: SystemApp):
|
|
from dbgpt.agent import initialize_agent
|
|
|
|
initialize_agent(system_app)
|
|
|
|
|
|
def _initialize_resource_manager(system_app: SystemApp):
|
|
from dbgpt.agent.expand.resources.dbgpt_tool import list_dbgpt_support_models
|
|
from dbgpt.agent.expand.resources.host_tool import (
|
|
get_current_host_cpu_status,
|
|
get_current_host_memory_status,
|
|
get_current_host_system_load,
|
|
)
|
|
from dbgpt.agent.expand.resources.search_tool import baidu_search
|
|
from dbgpt.agent.resource.base import ResourceType
|
|
from dbgpt.agent.resource.manage import get_resource_manager, initialize_resource
|
|
from dbgpt.serve.agent.resource.datasource import DatasourceResource
|
|
from dbgpt.serve.agent.resource.knowledge import KnowledgeSpaceRetrieverResource
|
|
from dbgpt.serve.agent.resource.plugin import PluginToolPack
|
|
|
|
initialize_resource(system_app)
|
|
rm = get_resource_manager(system_app)
|
|
rm.register_resource(DatasourceResource)
|
|
rm.register_resource(KnowledgeSpaceRetrieverResource)
|
|
rm.register_resource(PluginToolPack, resource_type=ResourceType.Tool)
|
|
# Register a search tool
|
|
rm.register_resource(resource_instance=baidu_search)
|
|
rm.register_resource(resource_instance=list_dbgpt_support_models)
|
|
# Register host tools
|
|
rm.register_resource(resource_instance=get_current_host_cpu_status)
|
|
rm.register_resource(resource_instance=get_current_host_memory_status)
|
|
rm.register_resource(resource_instance=get_current_host_system_load)
|
|
|
|
|
|
def _initialize_openapi(system_app: SystemApp):
|
|
from dbgpt.app.openapi.api_v1.editor.service import EditorService
|
|
|
|
system_app.register(EditorService)
|
|
|
|
|
|
def _initialize_operators():
|
|
from dbgpt.app.operators.converter import StringToInteger
|
|
from dbgpt.app.operators.datasource import (
|
|
HODatasourceExecutorOperator,
|
|
HODatasourceRetrieverOperator,
|
|
)
|
|
from dbgpt.app.operators.llm import HOLLMOperator, HOStreamingLLMOperator
|
|
from dbgpt.app.operators.rag import HOKnowledgeOperator
|
|
from dbgpt.serve.agent.resource.datasource import DatasourceResource
|