mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-10 13:10:57 +00:00
feat: supports for provider reloading
This commit is contained in:
@@ -12,7 +12,7 @@ from .. import group
|
|||||||
class LogsRouterGroup(group.RouterGroup):
|
class LogsRouterGroup(group.RouterGroup):
|
||||||
|
|
||||||
async def initialize(self) -> None:
|
async def initialize(self) -> None:
|
||||||
@self.route('', methods=['GET'])
|
@self.route('', methods=['GET'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
|
|
||||||
start_page_number = int(quart.request.args.get('start_page_number', 0))
|
start_page_number = int(quart.request.args.get('start_page_number', 0))
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from .. import group
|
|||||||
class PluginsRouterGroup(group.RouterGroup):
|
class PluginsRouterGroup(group.RouterGroup):
|
||||||
|
|
||||||
async def initialize(self) -> None:
|
async def initialize(self) -> None:
|
||||||
@self.route('', methods=['GET'])
|
@self.route('', methods=['GET'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
plugins = self.ap.plugin_mgr.plugins()
|
plugins = self.ap.plugin_mgr.plugins()
|
||||||
|
|
||||||
@@ -23,14 +23,14 @@ class PluginsRouterGroup(group.RouterGroup):
|
|||||||
'plugins': plugins_data
|
'plugins': plugins_data
|
||||||
})
|
})
|
||||||
|
|
||||||
@self.route('/<author>/<plugin_name>/toggle', methods=['PUT'])
|
@self.route('/<author>/<plugin_name>/toggle', methods=['PUT'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _(author: str, plugin_name: str) -> str:
|
async def _(author: str, plugin_name: str) -> str:
|
||||||
data = await quart.request.json
|
data = await quart.request.json
|
||||||
target_enabled = data.get('target_enabled')
|
target_enabled = data.get('target_enabled')
|
||||||
await self.ap.plugin_mgr.update_plugin_switch(plugin_name, target_enabled)
|
await self.ap.plugin_mgr.update_plugin_switch(plugin_name, target_enabled)
|
||||||
return self.success()
|
return self.success()
|
||||||
|
|
||||||
@self.route('/<author>/<plugin_name>/update', methods=['POST'])
|
@self.route('/<author>/<plugin_name>/update', methods=['POST'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _(author: str, plugin_name: str) -> str:
|
async def _(author: str, plugin_name: str) -> str:
|
||||||
ctx = taskmgr.TaskContext.new()
|
ctx = taskmgr.TaskContext.new()
|
||||||
wrapper = self.ap.task_mgr.create_user_task(
|
wrapper = self.ap.task_mgr.create_user_task(
|
||||||
@@ -44,7 +44,7 @@ class PluginsRouterGroup(group.RouterGroup):
|
|||||||
'task_id': wrapper.id
|
'task_id': wrapper.id
|
||||||
})
|
})
|
||||||
|
|
||||||
@self.route('/<author>/<plugin_name>', methods=['DELETE'])
|
@self.route('/<author>/<plugin_name>', methods=['DELETE'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _(author: str, plugin_name: str) -> str:
|
async def _(author: str, plugin_name: str) -> str:
|
||||||
ctx = taskmgr.TaskContext.new()
|
ctx = taskmgr.TaskContext.new()
|
||||||
wrapper = self.ap.task_mgr.create_user_task(
|
wrapper = self.ap.task_mgr.create_user_task(
|
||||||
@@ -59,13 +59,13 @@ class PluginsRouterGroup(group.RouterGroup):
|
|||||||
'task_id': wrapper.id
|
'task_id': wrapper.id
|
||||||
})
|
})
|
||||||
|
|
||||||
@self.route('/reorder', methods=['PUT'])
|
@self.route('/reorder', methods=['PUT'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
data = await quart.request.json
|
data = await quart.request.json
|
||||||
await self.ap.plugin_mgr.reorder_plugins(data.get('plugins'))
|
await self.ap.plugin_mgr.reorder_plugins(data.get('plugins'))
|
||||||
return self.success()
|
return self.success()
|
||||||
|
|
||||||
@self.route('/install/github', methods=['POST'])
|
@self.route('/install/github', methods=['POST'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
data = await quart.request.json
|
data = await quart.request.json
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class SettingsRouterGroup(group.RouterGroup):
|
|||||||
|
|
||||||
async def initialize(self) -> None:
|
async def initialize(self) -> None:
|
||||||
|
|
||||||
@self.route('', methods=['GET'])
|
@self.route('', methods=['GET'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
return self.success(
|
return self.success(
|
||||||
data={
|
data={
|
||||||
@@ -23,7 +23,7 @@ class SettingsRouterGroup(group.RouterGroup):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@self.route('/<manager_name>', methods=['GET'])
|
@self.route('/<manager_name>', methods=['GET'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _(manager_name: str) -> str:
|
async def _(manager_name: str) -> str:
|
||||||
|
|
||||||
manager = self.ap.settings_mgr.get_manager(manager_name)
|
manager = self.ap.settings_mgr.get_manager(manager_name)
|
||||||
@@ -44,7 +44,7 @@ class SettingsRouterGroup(group.RouterGroup):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@self.route('/<manager_name>/data', methods=['PUT'])
|
@self.route('/<manager_name>/data', methods=['PUT'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _(manager_name: str) -> str:
|
async def _(manager_name: str) -> str:
|
||||||
data = await quart.request.json
|
data = await quart.request.json
|
||||||
manager = self.ap.settings_mgr.get_manager(manager_name)
|
manager = self.ap.settings_mgr.get_manager(manager_name)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from .. import group
|
|||||||
class StatsRouterGroup(group.RouterGroup):
|
class StatsRouterGroup(group.RouterGroup):
|
||||||
|
|
||||||
async def initialize(self) -> None:
|
async def initialize(self) -> None:
|
||||||
@self.route('/basic', methods=['GET'])
|
@self.route('/basic', methods=['GET'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
|
|
||||||
conv_count = 0
|
conv_count = 0
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class SystemRouterGroup(group.RouterGroup):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@self.route('/tasks', methods=['GET'])
|
@self.route('/tasks', methods=['GET'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
task_type = quart.request.args.get("type")
|
task_type = quart.request.args.get("type")
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ class SystemRouterGroup(group.RouterGroup):
|
|||||||
data=self.ap.task_mgr.get_tasks_dict(task_type)
|
data=self.ap.task_mgr.get_tasks_dict(task_type)
|
||||||
)
|
)
|
||||||
|
|
||||||
@self.route('/tasks/<task_id>', methods=['GET'])
|
@self.route('/tasks/<task_id>', methods=['GET'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _(task_id: str) -> str:
|
async def _(task_id: str) -> str:
|
||||||
task = self.ap.task_mgr.get_task_by_id(int(task_id))
|
task = self.ap.task_mgr.get_task_by_id(int(task_id))
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ class SystemRouterGroup(group.RouterGroup):
|
|||||||
|
|
||||||
return self.success(data=task.to_dict())
|
return self.success(data=task.to_dict())
|
||||||
|
|
||||||
@self.route('/reload', methods=['POST'])
|
@self.route('/reload', methods=['POST'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
json_data = await quart.request.json
|
json_data = await quart.request.json
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ class SystemRouterGroup(group.RouterGroup):
|
|||||||
)
|
)
|
||||||
return self.success()
|
return self.success()
|
||||||
|
|
||||||
@self.route('/_debug/exec', methods=['POST'])
|
@self.route('/_debug/exec', methods=['POST'], auth_type=group.AuthType.USER_TOKEN)
|
||||||
async def _() -> str:
|
async def _() -> str:
|
||||||
if not constants.debug_mode:
|
if not constants.debug_mode:
|
||||||
return self.http_status(403, 403, "Forbidden")
|
return self.http_status(403, 403, "Forbidden")
|
||||||
|
|||||||
@@ -197,5 +197,27 @@ class Application:
|
|||||||
|
|
||||||
await self.plugin_mgr.load_plugins()
|
await self.plugin_mgr.load_plugins()
|
||||||
await self.plugin_mgr.initialize_plugins()
|
await self.plugin_mgr.initialize_plugins()
|
||||||
|
case core_entities.LifecycleControlScope.PROVIDER.value:
|
||||||
|
self.logger.info("执行热重载 scope="+scope)
|
||||||
|
|
||||||
|
llm_model_mgr_inst = llm_model_mgr.ModelManager(self)
|
||||||
|
await llm_model_mgr_inst.initialize()
|
||||||
|
self.model_mgr = llm_model_mgr_inst
|
||||||
|
|
||||||
|
llm_session_mgr_inst = llm_session_mgr.SessionManager(self)
|
||||||
|
await llm_session_mgr_inst.initialize()
|
||||||
|
self.sess_mgr = llm_session_mgr_inst
|
||||||
|
|
||||||
|
llm_prompt_mgr_inst = llm_prompt_mgr.PromptManager(self)
|
||||||
|
await llm_prompt_mgr_inst.initialize()
|
||||||
|
self.prompt_mgr = llm_prompt_mgr_inst
|
||||||
|
|
||||||
|
llm_tool_mgr_inst = llm_tool_mgr.ToolManager(self)
|
||||||
|
await llm_tool_mgr_inst.initialize()
|
||||||
|
self.tool_mgr = llm_tool_mgr_inst
|
||||||
|
|
||||||
|
runner_mgr_inst = runnermgr.RunnerManager(self)
|
||||||
|
await runner_mgr_inst.initialize()
|
||||||
|
self.runner_mgr = runner_mgr_inst
|
||||||
case _:
|
case _:
|
||||||
pass
|
pass
|
||||||
@@ -23,6 +23,7 @@ class LifecycleControlScope(enum.Enum):
|
|||||||
APPLICATION = "application"
|
APPLICATION = "application"
|
||||||
PLATFORM = "platform"
|
PLATFORM = "platform"
|
||||||
PLUGIN = "plugin"
|
PLUGIN = "plugin"
|
||||||
|
PROVIDER = "provider"
|
||||||
|
|
||||||
|
|
||||||
class LauncherTypes(enum.Enum):
|
class LauncherTypes(enum.Enum):
|
||||||
|
|||||||
+8
-1
@@ -79,6 +79,12 @@
|
|||||||
重载插件
|
重载插件
|
||||||
</v-list-item-title>
|
</v-list-item-title>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
|
|
||||||
|
<v-list-item @click="reload('provider')">
|
||||||
|
<v-list-item-title>
|
||||||
|
重载 LLM 管理器
|
||||||
|
</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-menu>
|
</v-menu>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
@@ -169,7 +175,8 @@ function openDocs() {
|
|||||||
|
|
||||||
const reloadScopeLabel = {
|
const reloadScopeLabel = {
|
||||||
'platform': "消息平台",
|
'platform': "消息平台",
|
||||||
'plugin': "插件"
|
'plugin': "插件",
|
||||||
|
'provider': "LLM 管理器"
|
||||||
}
|
}
|
||||||
|
|
||||||
function reload(scope) {
|
function reload(scope) {
|
||||||
|
|||||||
Reference in New Issue
Block a user