zhenxun_bot/zhenxun/builtin_plugins/superuser/reload_setting.py

75 lines
2.1 KiB
Python
Raw Normal View History

2024-02-04 04:18:54 +08:00
from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
♻️ refactor(llm): 重构 LLM 服务架构,引入中间件与组件化适配器 (#2073) * ♻️ refactor(llm): 重构 LLM 服务架构,引入中间件与组件化适配器 - 【重构】LLM 服务核心架构: - 引入中间件管道,统一处理请求生命周期(重试、密钥选择、日志、网络请求)。 - 适配器重构为组件化设计,分离配置映射、消息转换、响应解析和工具序列化逻辑。 - 移除 `with_smart_retry` 装饰器,其功能由中间件接管。 - 移除 `LLMToolExecutor`,工具执行逻辑集成到 `ToolInvoker`。 - 【功能】增强配置系统: - `LLMGenerationConfig` 采用组件化结构(Core, Reasoning, Visual, Output, Safety, ToolConfig)。 - 新增 `GenConfigBuilder` 提供语义化配置构建方式。 - 新增 `LLMEmbeddingConfig` 用于嵌入专用配置。 - `CommonOverrides` 迁移并更新至新配置结构。 - 【功能】强化工具系统: - 引入 `ToolInvoker` 实现更灵活的工具执行,支持回调与结构化错误。 - `function_tool` 装饰器支持动态 Pydantic 模型创建和依赖注入 (`ToolParam`, `RunContext`)。 - 平台原生工具支持 (`GeminiCodeExecution`, `GeminiGoogleSearch`, `GeminiUrlContext`)。 - 【功能】高级生成与嵌入: - `generate_structured` 方法支持 In-Context Validation and Repair (IVR) 循环和 AutoCoT (思维链) 包装。 - 新增 `embed_query` 和 `embed_documents` 便捷嵌入 API。 - `OpenAIImageAdapter` 支持 OpenAI 兼容的图像生成。 - `SmartAdapter` 实现模型名称智能路由。 - 【重构】消息与类型系统: - `LLMContentPart` 扩展支持更多模态和代码执行相关内容。 - `LLMMessage` 和 `LLMResponse` 结构更新,支持 `content_parts` 和思维链签名。 - 统一 `LLMErrorCode` 和用户友好错误消息,提供更详细的网络/代理错误提示。 - `pyproject.toml` 移除 `bilireq`,新增 `json_repair`。 - 【优化】日志与调试: - 引入 `DebugLogOptions`,提供细粒度日志脱敏控制。 - 增强日志净化器,处理更多敏感数据和长字符串。 - 【清理】删除废弃模块: - `zhenxun/services/llm/memory.py` - `zhenxun/services/llm/executor.py` - `zhenxun/services/llm/config/presets.py` - `zhenxun/services/llm/types/content.py` - `zhenxun/services/llm/types/enums.py` - `zhenxun/services/llm/tools/__init__.py` - `zhenxun/services/llm/tools/manager.py` * 📦️ build(deps): 移除 bilireq 并添加 json_repair 依赖 * 🐛 (llm): 移除图片生成模型能力预检查 * ♻️ refactor(llm.session): 重构记忆系统以分离存储和策略 * 🐛 fix(reload_setting): 重载配置时清除LLM缓存 * ✨ feat(llm): 支持结构化生成函数接收 UniMessage * ✨ feat(search): 为搜索功能默认启用 Gemini Google Search 工具 * :rotating_light: auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-14 20:27:02 +08:00
from zhenxun.services.llm.config.providers import get_llm_config
from zhenxun.services.llm.manager import clear_model_cache
2024-02-04 04:18:54 +08:00
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
2024-08-11 15:57:33 +08:00
from zhenxun.utils.message import MessageUtils
2024-02-04 04:18:54 +08:00
__plugin_meta__ = PluginMetadata(
name="重载配置",
description="重新加载config.yaml",
usage="""
重载配置
""".strip(),
extra=PluginExtraData(
author="HibiKier",
version="0.1",
plugin_type=PluginType.SUPERUSER,
configs=[
RegisterConfig(
key="AUTO_RELOAD",
value=False,
help="自动重载配置文件",
default_value=False,
type=bool,
),
RegisterConfig(
key="AUTO_RELOAD_TIME",
value=180,
help="自动重载配置文件时长",
default_value=180,
type=int,
),
],
).to_dict(),
2024-02-04 04:18:54 +08:00
)
_matcher = on_alconna(
Alconna(
"重载配置",
),
rule=to_me(),
permission=SUPERUSER,
priority=1,
block=True,
)
@_matcher.handle()
async def _(session: EventSession, arparma: Arparma):
Config.reload()
♻️ refactor(llm): 重构 LLM 服务架构,引入中间件与组件化适配器 (#2073) * ♻️ refactor(llm): 重构 LLM 服务架构,引入中间件与组件化适配器 - 【重构】LLM 服务核心架构: - 引入中间件管道,统一处理请求生命周期(重试、密钥选择、日志、网络请求)。 - 适配器重构为组件化设计,分离配置映射、消息转换、响应解析和工具序列化逻辑。 - 移除 `with_smart_retry` 装饰器,其功能由中间件接管。 - 移除 `LLMToolExecutor`,工具执行逻辑集成到 `ToolInvoker`。 - 【功能】增强配置系统: - `LLMGenerationConfig` 采用组件化结构(Core, Reasoning, Visual, Output, Safety, ToolConfig)。 - 新增 `GenConfigBuilder` 提供语义化配置构建方式。 - 新增 `LLMEmbeddingConfig` 用于嵌入专用配置。 - `CommonOverrides` 迁移并更新至新配置结构。 - 【功能】强化工具系统: - 引入 `ToolInvoker` 实现更灵活的工具执行,支持回调与结构化错误。 - `function_tool` 装饰器支持动态 Pydantic 模型创建和依赖注入 (`ToolParam`, `RunContext`)。 - 平台原生工具支持 (`GeminiCodeExecution`, `GeminiGoogleSearch`, `GeminiUrlContext`)。 - 【功能】高级生成与嵌入: - `generate_structured` 方法支持 In-Context Validation and Repair (IVR) 循环和 AutoCoT (思维链) 包装。 - 新增 `embed_query` 和 `embed_documents` 便捷嵌入 API。 - `OpenAIImageAdapter` 支持 OpenAI 兼容的图像生成。 - `SmartAdapter` 实现模型名称智能路由。 - 【重构】消息与类型系统: - `LLMContentPart` 扩展支持更多模态和代码执行相关内容。 - `LLMMessage` 和 `LLMResponse` 结构更新,支持 `content_parts` 和思维链签名。 - 统一 `LLMErrorCode` 和用户友好错误消息,提供更详细的网络/代理错误提示。 - `pyproject.toml` 移除 `bilireq`,新增 `json_repair`。 - 【优化】日志与调试: - 引入 `DebugLogOptions`,提供细粒度日志脱敏控制。 - 增强日志净化器,处理更多敏感数据和长字符串。 - 【清理】删除废弃模块: - `zhenxun/services/llm/memory.py` - `zhenxun/services/llm/executor.py` - `zhenxun/services/llm/config/presets.py` - `zhenxun/services/llm/types/content.py` - `zhenxun/services/llm/types/enums.py` - `zhenxun/services/llm/tools/__init__.py` - `zhenxun/services/llm/tools/manager.py` * 📦️ build(deps): 移除 bilireq 并添加 json_repair 依赖 * 🐛 (llm): 移除图片生成模型能力预检查 * ♻️ refactor(llm.session): 重构记忆系统以分离存储和策略 * 🐛 fix(reload_setting): 重载配置时清除LLM缓存 * ✨ feat(llm): 支持结构化生成函数接收 UniMessage * ✨ feat(search): 为搜索功能默认启用 Gemini Google Search 工具 * :rotating_light: auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-14 20:27:02 +08:00
get_llm_config.cache_clear()
clear_model_cache()
2024-02-04 04:18:54 +08:00
logger.debug("自动重载配置文件", arparma.header_result, session=session)
2024-08-11 15:57:33 +08:00
await MessageUtils.build_message("重载完成!").send(reply_to=True)
2024-02-04 04:18:54 +08:00
@scheduler.scheduled_job(
"interval",
seconds=Config.get_config("reload_setting", "AUTO_RELOAD_TIME", 180),
)
async def _():
if Config.get_config("reload_setting", "AUTO_RELOAD"):
Config.reload()
♻️ refactor(llm): 重构 LLM 服务架构,引入中间件与组件化适配器 (#2073) * ♻️ refactor(llm): 重构 LLM 服务架构,引入中间件与组件化适配器 - 【重构】LLM 服务核心架构: - 引入中间件管道,统一处理请求生命周期(重试、密钥选择、日志、网络请求)。 - 适配器重构为组件化设计,分离配置映射、消息转换、响应解析和工具序列化逻辑。 - 移除 `with_smart_retry` 装饰器,其功能由中间件接管。 - 移除 `LLMToolExecutor`,工具执行逻辑集成到 `ToolInvoker`。 - 【功能】增强配置系统: - `LLMGenerationConfig` 采用组件化结构(Core, Reasoning, Visual, Output, Safety, ToolConfig)。 - 新增 `GenConfigBuilder` 提供语义化配置构建方式。 - 新增 `LLMEmbeddingConfig` 用于嵌入专用配置。 - `CommonOverrides` 迁移并更新至新配置结构。 - 【功能】强化工具系统: - 引入 `ToolInvoker` 实现更灵活的工具执行,支持回调与结构化错误。 - `function_tool` 装饰器支持动态 Pydantic 模型创建和依赖注入 (`ToolParam`, `RunContext`)。 - 平台原生工具支持 (`GeminiCodeExecution`, `GeminiGoogleSearch`, `GeminiUrlContext`)。 - 【功能】高级生成与嵌入: - `generate_structured` 方法支持 In-Context Validation and Repair (IVR) 循环和 AutoCoT (思维链) 包装。 - 新增 `embed_query` 和 `embed_documents` 便捷嵌入 API。 - `OpenAIImageAdapter` 支持 OpenAI 兼容的图像生成。 - `SmartAdapter` 实现模型名称智能路由。 - 【重构】消息与类型系统: - `LLMContentPart` 扩展支持更多模态和代码执行相关内容。 - `LLMMessage` 和 `LLMResponse` 结构更新,支持 `content_parts` 和思维链签名。 - 统一 `LLMErrorCode` 和用户友好错误消息,提供更详细的网络/代理错误提示。 - `pyproject.toml` 移除 `bilireq`,新增 `json_repair`。 - 【优化】日志与调试: - 引入 `DebugLogOptions`,提供细粒度日志脱敏控制。 - 增强日志净化器,处理更多敏感数据和长字符串。 - 【清理】删除废弃模块: - `zhenxun/services/llm/memory.py` - `zhenxun/services/llm/executor.py` - `zhenxun/services/llm/config/presets.py` - `zhenxun/services/llm/types/content.py` - `zhenxun/services/llm/types/enums.py` - `zhenxun/services/llm/tools/__init__.py` - `zhenxun/services/llm/tools/manager.py` * 📦️ build(deps): 移除 bilireq 并添加 json_repair 依赖 * 🐛 (llm): 移除图片生成模型能力预检查 * ♻️ refactor(llm.session): 重构记忆系统以分离存储和策略 * 🐛 fix(reload_setting): 重载配置时清除LLM缓存 * ✨ feat(llm): 支持结构化生成函数接收 UniMessage * ✨ feat(search): 为搜索功能默认启用 Gemini Google Search 工具 * :rotating_light: auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-14 20:27:02 +08:00
get_llm_config.cache_clear()
clear_model_cache()
2024-02-04 04:18:54 +08:00
logger.debug("已自动重载配置文件...")