Merge pull request #1588 from A-Dawn/r-dev
fix:A_Memorix 缺失总结模型配置导致导入异常
This commit is contained in:
48
pytests/A_memorix_test/test_summary_importer_model_config.py
Normal file
48
pytests/A_memorix_test/test_summary_importer_model_config.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import pytest
|
||||
|
||||
from src.A_memorix.core.utils.summary_importer import SummaryImporter
|
||||
from src.config.model_configs import TaskConfig
|
||||
from src.services import llm_service as llm_api
|
||||
|
||||
|
||||
def _fake_available_models() -> dict[str, TaskConfig]:
|
||||
return {
|
||||
"replyer": TaskConfig(
|
||||
model_list=["test-model"],
|
||||
max_tokens=128,
|
||||
temperature=0.7,
|
||||
selection_strategy="priority",
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
def test_resolve_summary_model_config_uses_auto_list_when_summarization_missing(monkeypatch):
|
||||
monkeypatch.setattr(llm_api, "get_available_models", _fake_available_models)
|
||||
|
||||
importer = SummaryImporter(
|
||||
vector_store=None,
|
||||
graph_store=None,
|
||||
metadata_store=None,
|
||||
embedding_manager=None,
|
||||
plugin_config={},
|
||||
)
|
||||
|
||||
resolved = importer._resolve_summary_model_config()
|
||||
|
||||
assert resolved is not None
|
||||
assert resolved.model_list == ["test-model"]
|
||||
|
||||
|
||||
def test_resolve_summary_model_config_rejects_legacy_string_selector(monkeypatch):
|
||||
monkeypatch.setattr(llm_api, "get_available_models", _fake_available_models)
|
||||
|
||||
importer = SummaryImporter(
|
||||
vector_store=None,
|
||||
graph_store=None,
|
||||
metadata_store=None,
|
||||
embedding_manager=None,
|
||||
plugin_config={"summarization": {"model_name": "auto"}},
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError, match="List\\[str\\]"):
|
||||
importer._resolve_summary_model_config()
|
||||
@@ -136,7 +136,9 @@ class SummaryImporter:
|
||||
if not available_tasks:
|
||||
return None
|
||||
|
||||
raw_cfg = self.plugin_config.get("summarization", {}).get("model_name", "auto")
|
||||
# vNext 要求该字段为 List[str];当配置缺失时回退到 ["auto"],
|
||||
# 避免默认值本身触发类型校验异常。
|
||||
raw_cfg = self.plugin_config.get("summarization", {}).get("model_name", ["auto"])
|
||||
selectors = self._normalize_summary_model_selectors(raw_cfg)
|
||||
default_task_name, default_task_cfg = self._pick_default_summary_task(available_tasks)
|
||||
|
||||
|
||||
@@ -472,7 +472,11 @@ def _migrate_config(config_doc: Dict[str, Any]) -> Dict[str, Any]:
|
||||
|
||||
summary = _ensure_table(config_doc, "summarization")
|
||||
summary_model = summary.get("model_name", ["auto"])
|
||||
if isinstance(summary_model, str):
|
||||
if "model_name" not in summary:
|
||||
normalized = ["auto"]
|
||||
summary["model_name"] = normalized
|
||||
changes["summarization.model_name"] = {"old": "<missing>", "new": normalized}
|
||||
elif isinstance(summary_model, str):
|
||||
normalized = [summary_model.strip() or "auto"]
|
||||
summary["model_name"] = normalized
|
||||
changes["summarization.model_name"] = {"old": summary_model, "new": normalized}
|
||||
|
||||
Reference in New Issue
Block a user