mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
- 【重构】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`
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from abc import ABC, abstractmethod
|
|
from typing import Any
|
|
|
|
from zhenxun.services.llm.adapters.base import ResponseData
|
|
from zhenxun.services.llm.config.generation import LLMGenerationConfig
|
|
from zhenxun.services.llm.types import LLMMessage
|
|
from zhenxun.services.llm.types.capabilities import ModelCapabilities
|
|
from zhenxun.services.llm.types.models import ModelDetail, ToolDefinition
|
|
|
|
|
|
class ConfigMapper(ABC):
|
|
@abstractmethod
|
|
def map_config(
|
|
self,
|
|
config: LLMGenerationConfig,
|
|
model_detail: ModelDetail | None = None,
|
|
capabilities: ModelCapabilities | None = None,
|
|
) -> dict[str, Any]:
|
|
"""将通用生成配置转换为特定 API 的参数字典"""
|
|
...
|
|
|
|
|
|
class MessageConverter(ABC):
|
|
@abstractmethod
|
|
def convert_messages(
|
|
self, messages: list[LLMMessage]
|
|
) -> list[dict[str, Any]] | dict[str, Any]:
|
|
"""将通用消息列表转换为特定 API 的消息格式"""
|
|
...
|
|
|
|
|
|
class ToolSerializer(ABC):
|
|
@abstractmethod
|
|
def serialize_tools(self, tools: list[ToolDefinition]) -> Any:
|
|
"""将通用工具定义转换为特定 API 的工具格式"""
|
|
...
|
|
|
|
|
|
class ResponseParser(ABC):
|
|
@abstractmethod
|
|
def parse(self, response_json: dict[str, Any]) -> ResponseData:
|
|
"""将特定 API 的响应解析为通用响应数据"""
|
|
...
|