refactor(llm): 将LLM请求逻辑解耦到专门的组件中
庞大的`LLMRequest`类已被重构为一个协调器,它将任务委托给多个专门的组件。此更改旨在遵循单一职责原则,从而提高代码的结构、可维护性和可扩展性。 核心逻辑被提取到以下新类中: - `ModelSelector`: 封装了基于负载和可用性选择最佳模型的逻辑。 - `PromptProcessor`: 负责处理所有提示词修改和响应内容的解析。 - `RequestStrategy`: 管理请求的执行流程,包括故障转移和并发请求策略。 这种新的架构使系统更加模块化,更易于测试,并且未来可以更轻松地扩展新的请求策略。
This commit is contained in:
committed by
Windpicker-owo
parent
b99cb95416
commit
2c183d9288
@@ -122,7 +122,7 @@ def _convert_tool_options(tool_options: list[ToolOption]) -> list[dict]:
|
||||
|
||||
def _convert_tool_param(param: ToolParam) -> dict:
|
||||
"""转换工具参数"""
|
||||
result = {
|
||||
result: dict[str, Any] = {
|
||||
"type": param.param_type.value,
|
||||
"description": param.description,
|
||||
}
|
||||
@@ -132,7 +132,7 @@ def _convert_tool_options(tool_options: list[ToolOption]) -> list[dict]:
|
||||
|
||||
def _convert_tool_option_item(tool_option: ToolOption) -> dict:
|
||||
"""转换单个工具选项"""
|
||||
function_declaration = {
|
||||
function_declaration: dict[str, Any] = {
|
||||
"name": tool_option.name,
|
||||
"description": tool_option.description,
|
||||
}
|
||||
@@ -500,7 +500,7 @@ class AiohttpGeminiClient(BaseClient):
|
||||
# 直接重抛项目定义的异常
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.debug(e)
|
||||
logger.debug(f"请求处理中发生未知异常: {e}")
|
||||
# 其他异常转换为网络连接错误
|
||||
raise NetworkConnectionError() from e
|
||||
|
||||
|
||||
Reference in New Issue
Block a user