Files
odysseus/tests/test_multilingual_domain_routing.py
T

73 lines
2.4 KiB
Python

from src.agent_loop import (
_DOMAIN_TOOL_MAP,
_classify_agent_request,
_compact_native_route_tools,
)
def _intent(text: str) -> dict[str, object]:
return _classify_agent_request([{"role": "user", "content": text}], text)
def test_chinese_email_workflow_selects_email_domain() -> None:
prompt = "请阅读收件箱里的客户投诉邮件,直接发送符合条件的通知,并把其余回复保存为草稿。"
intent = _intent(prompt)
assert intent["low_signal"] is False
assert "email" in intent["domains"]
compact = _compact_native_route_tools(
set(_DOMAIN_TOOL_MAP["email"]),
prompt,
{"email"},
)
assert compact is not None
assert {"list_emails", "read_email", "send_email", "draft_email"} <= compact
assert not {
"bash", "python", "web_search", "web_fetch", "download_attachment",
"reply_to_email", "ui_control",
} & compact
def test_compact_email_surface_adds_only_requested_specialists() -> None:
available = set(_DOMAIN_TOOL_MAP["email"]) | {
"bash", "python", "web_search", "web_fetch", "read_file", "ls",
}
attachment = _compact_native_route_tools(
available,
"Find the email with the quarterly attachment and download it.",
{"email"},
)
reply = _compact_native_route_tools(
available,
"Reply to Dana's last email.",
{"email"},
)
assert attachment is not None
assert {"search_emails", "download_attachment"} <= attachment
assert "send_email" not in attachment
assert reply is not None
assert {"draft_email_reply", "reply_to_email"} <= reply
assert "download_attachment" not in reply
def test_compact_file_surface_keeps_workspace_discovery_dependency() -> None:
compact = _compact_native_route_tools(
{"read_file", "ls", "list_emails", "read_email"},
"Read the relevant local files and summarize the related email.",
{"email"},
)
assert compact is not None
assert {"read_file", "ls", "get_workspace"} <= compact
def test_chinese_calendar_and_notes_requests_select_personal_tools() -> None:
for prompt in (
"请把下周会议加入日历。",
"请创建一份待办清单并设置提醒。",
):
intent = _intent(prompt)
assert intent["low_signal"] is False
assert "notes_calendar_tasks" in intent["domains"]