Spaces:
Sleeping
Sleeping
File size: 1,924 Bytes
79df050 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | from pathlib import Path
from features.mcp.skills import skills_prompt_block
from services.ai_service import _build_base_system_prompt, _compose_messages_with_context
def test_base_prompt_has_no_domain_specific_market_hardcoding():
prompt = _build_base_system_prompt(
use_care_mode=False,
care_emotion=None,
user_name=None,
)
forbidden = ["台積電", "2330", "台股", "ADR", "尚未開盤", "上一交易日"]
assert not any(term in prompt for term in forbidden)
def test_compose_messages_uses_generic_time_sensitive_rule():
messages = _compose_messages_with_context(
base_prompt="base",
history_entries=[],
memory_context="",
env_context="timezone: Asia/Taipei",
time_context="當地時間: 2026-05-14 08:41(星期四,上午)\n時區: Asia/Taipei",
emotion_context="",
current_request="今天某公司股價多少?",
user_id="u1",
chat_id="c1",
use_care_mode=False,
care_emotion=None,
)
system_prompt = messages[0]["content"]
assert "時間訊號" in system_prompt
assert "環境訊號" in system_prompt
assert "自行判斷" in system_prompt
assert "來源時間早於用戶要求的時間範圍" in system_prompt
assert "台積電" not in system_prompt
assert "2330" not in system_prompt
def test_web_search_skill_is_generic_and_registered():
skill_text = Path("features/mcp/skills/web_search/SKILL.md").read_text(encoding="utf-8")
prompt = skills_prompt_block()
assert "avoid_domain_specific_hardcoding: true" in skill_text
assert "Do not hardcode domain-specific behavior" in skill_text
assert "do not present it as today's/current result" in skill_text
assert "web_search" in prompt
assert "responses_hosted_tool_auto" in prompt
assert "台積電" not in skill_text
assert "2330" not in skill_text
|