mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-06 16:07:01 +08:00
Simplify agent tool schema explanation test
This commit is contained in:
@@ -1,6 +1,4 @@
|
|||||||
import importlib.util
|
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
from pathlib import Path
|
|
||||||
from typing import Iterator, Optional, Type
|
from typing import Iterator, Optional, Type
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
@@ -69,30 +67,8 @@ def _schema_properties(args_schema: Type[BaseModel]) -> dict:
|
|||||||
return args_schema.model_json_schema().get("properties", {})
|
return args_schema.model_json_schema().get("properties", {})
|
||||||
|
|
||||||
|
|
||||||
def _load_lexiannot_tool_schemas() -> list[Type[BaseModel]]:
|
|
||||||
"""只加载 LexiAnnot schema 文件,避免触发插件包可选依赖。"""
|
|
||||||
schema_path = (
|
|
||||||
Path(__file__).resolve().parents[1]
|
|
||||||
/ "app"
|
|
||||||
/ "plugins"
|
|
||||||
/ "lexiannot"
|
|
||||||
/ "schemas.py"
|
|
||||||
)
|
|
||||||
spec = importlib.util.spec_from_file_location(
|
|
||||||
"_test_lexiannot_schemas",
|
|
||||||
schema_path,
|
|
||||||
)
|
|
||||||
assert spec and spec.loader
|
|
||||||
module = importlib.util.module_from_spec(spec)
|
|
||||||
spec.loader.exec_module(module)
|
|
||||||
return [
|
|
||||||
module.VocabularyAnnotatingToolInput,
|
|
||||||
module.QueryAnnotationTasksToolInput,
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_agent_tool_schemas_do_not_expose_explanation_parameter() -> None:
|
def test_agent_tool_schemas_do_not_expose_explanation_parameter() -> None:
|
||||||
"""所有 Agent 工具输入模型都不应暴露 explanation 参数。"""
|
"""仓库内置 Agent 工具和中间件输入模型不应暴露 explanation 参数。"""
|
||||||
tool_classes = [
|
tool_classes = [
|
||||||
*MoviePilotToolFactory.BUILTIN_TOOL_CLASSES,
|
*MoviePilotToolFactory.BUILTIN_TOOL_CLASSES,
|
||||||
AskUserChoiceTool,
|
AskUserChoiceTool,
|
||||||
@@ -103,7 +79,6 @@ def test_agent_tool_schemas_do_not_expose_explanation_parameter() -> None:
|
|||||||
SkillToolInput,
|
SkillToolInput,
|
||||||
QueryActivityLogInput,
|
QueryActivityLogInput,
|
||||||
]
|
]
|
||||||
plugin_schemas = _load_lexiannot_tool_schemas()
|
|
||||||
|
|
||||||
for tool_class in tool_classes:
|
for tool_class in tool_classes:
|
||||||
args_schema = getattr(tool_class, "args_schema", None)
|
args_schema = getattr(tool_class, "args_schema", None)
|
||||||
@@ -111,7 +86,7 @@ def test_agent_tool_schemas_do_not_expose_explanation_parameter() -> None:
|
|||||||
continue
|
continue
|
||||||
assert "explanation" not in _schema_properties(args_schema), tool_class.name
|
assert "explanation" not in _schema_properties(args_schema), tool_class.name
|
||||||
|
|
||||||
for args_schema in middleware_schemas + plugin_schemas:
|
for args_schema in middleware_schemas:
|
||||||
assert "explanation" not in _schema_properties(args_schema), args_schema.__name__
|
assert "explanation" not in _schema_properties(args_schema), args_schema.__name__
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user