mirror of
https://github.com/RockChinQ/QChatGPT.git
synced 2024-11-16 11:42:44 +08:00
155 lines
4.3 KiB
Python
155 lines
4.3 KiB
Python
from __future__ import print_function
|
||
|
||
import os
|
||
import sys
|
||
|
||
from .bootutils import files
|
||
from .bootutils import deps
|
||
from .bootutils import log
|
||
from .bootutils import config
|
||
|
||
from . import app
|
||
from . import pool
|
||
from . import controller
|
||
from ..pipeline import stagemgr
|
||
from ..audit import identifier
|
||
from ..provider.session import sessionmgr as llm_session_mgr
|
||
from ..provider.requester import modelmgr as llm_model_mgr
|
||
from ..provider.sysprompt import sysprompt as llm_prompt_mgr
|
||
from ..provider.tools import toolmgr as llm_tool_mgr
|
||
from ..platform import manager as im_mgr
|
||
from ..command import cmdmgr
|
||
from ..plugin import manager as plugin_mgr
|
||
from ..audit.center import v2 as center_v2
|
||
from ..utils import version, proxy, announce
|
||
|
||
use_override = False
|
||
|
||
|
||
async def make_app() -> app.Application:
|
||
global use_override
|
||
|
||
generated_files = await files.generate_files()
|
||
|
||
if generated_files:
|
||
print("以下文件不存在,已自动生成,请修改配置文件后重启:")
|
||
for file in generated_files:
|
||
print("-", file)
|
||
|
||
sys.exit(0)
|
||
|
||
missing_deps = await deps.check_deps()
|
||
|
||
if missing_deps:
|
||
print("以下依赖包未安装,将自动安装,请完成后重启程序:")
|
||
for dep in missing_deps:
|
||
print("-", dep)
|
||
await deps.install_deps(missing_deps)
|
||
sys.exit(0)
|
||
|
||
qcg_logger = await log.init_logging()
|
||
|
||
# 生成标识符
|
||
identifier.init()
|
||
|
||
cfg_mgr = await config.load_python_module_config("config.py", "config-template.py")
|
||
cfg = cfg_mgr.data
|
||
|
||
# 检查是否携带了 --override 或 -r 参数
|
||
if "--override" in sys.argv or "-r" in sys.argv:
|
||
use_override = True
|
||
|
||
if use_override:
|
||
overrided = await config.override_config_manager(cfg_mgr)
|
||
if overrided:
|
||
qcg_logger.info("以下配置项已使用 override.json 覆盖:" + ",".join(overrided))
|
||
|
||
tips_mgr = await config.load_python_module_config(
|
||
"tips.py", "tips-custom-template.py"
|
||
)
|
||
|
||
# 检查管理员QQ号
|
||
if cfg_mgr.data["admin_qq"] == 0:
|
||
qcg_logger.warning("未设置管理员QQ号,将无法使用管理员命令,请在 config.py 中修改 admin_qq")
|
||
|
||
# 构建组建实例
|
||
ap = app.Application()
|
||
ap.logger = qcg_logger
|
||
ap.cfg_mgr = cfg_mgr
|
||
ap.tips_mgr = tips_mgr
|
||
|
||
proxy_mgr = proxy.ProxyManager(ap)
|
||
await proxy_mgr.initialize()
|
||
ap.proxy_mgr = proxy_mgr
|
||
|
||
ver_mgr = version.VersionManager(ap)
|
||
await ver_mgr.initialize()
|
||
ap.ver_mgr = ver_mgr
|
||
|
||
center_v2_api = center_v2.V2CenterAPI(
|
||
ap,
|
||
basic_info={
|
||
"host_id": identifier.identifier["host_id"],
|
||
"instance_id": identifier.identifier["instance_id"],
|
||
"semantic_version": ver_mgr.get_current_version(),
|
||
"platform": sys.platform,
|
||
},
|
||
runtime_info={
|
||
"admin_id": "{}".format(cfg["admin_qq"]),
|
||
"msg_source": cfg["msg_source_adapter"],
|
||
},
|
||
)
|
||
ap.ctr_mgr = center_v2_api
|
||
|
||
# 发送公告
|
||
ann_mgr = announce.AnnouncementManager(ap)
|
||
await ann_mgr.show_announcements()
|
||
|
||
ap.query_pool = pool.QueryPool()
|
||
|
||
await ap.ver_mgr.show_version_update()
|
||
|
||
plugin_mgr_inst = plugin_mgr.PluginManager(ap)
|
||
await plugin_mgr_inst.initialize()
|
||
ap.plugin_mgr = plugin_mgr_inst
|
||
|
||
cmd_mgr_inst = cmdmgr.CommandManager(ap)
|
||
await cmd_mgr_inst.initialize()
|
||
ap.cmd_mgr = cmd_mgr_inst
|
||
|
||
llm_model_mgr_inst = llm_model_mgr.ModelManager(ap)
|
||
await llm_model_mgr_inst.initialize()
|
||
ap.model_mgr = llm_model_mgr_inst
|
||
|
||
llm_session_mgr_inst = llm_session_mgr.SessionManager(ap)
|
||
await llm_session_mgr_inst.initialize()
|
||
ap.sess_mgr = llm_session_mgr_inst
|
||
|
||
llm_prompt_mgr_inst = llm_prompt_mgr.PromptManager(ap)
|
||
await llm_prompt_mgr_inst.initialize()
|
||
ap.prompt_mgr = llm_prompt_mgr_inst
|
||
|
||
llm_tool_mgr_inst = llm_tool_mgr.ToolManager(ap)
|
||
await llm_tool_mgr_inst.initialize()
|
||
ap.tool_mgr = llm_tool_mgr_inst
|
||
|
||
im_mgr_inst = im_mgr.PlatformManager(ap=ap)
|
||
await im_mgr_inst.initialize()
|
||
ap.im_mgr = im_mgr_inst
|
||
|
||
stage_mgr = stagemgr.StageManager(ap)
|
||
await stage_mgr.initialize()
|
||
ap.stage_mgr = stage_mgr
|
||
|
||
ctrl = controller.Controller(ap)
|
||
ap.ctrl = ctrl
|
||
|
||
await ap.initialize()
|
||
|
||
return ap
|
||
|
||
|
||
async def main():
|
||
app_inst = await make_app()
|
||
await app_inst.run()
|