46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""Tests for AIClient forced tool name extraction."""
|
|
|
|
from src.ai.client import AIClient
|
|
|
|
|
|
def test_extract_forced_tool_name_full_name():
|
|
tools = [
|
|
"humanizer_zh.read_skill_doc",
|
|
"skills_creator.create_skill",
|
|
]
|
|
message = "please call tool humanizer_zh.read_skill_doc and return first 100 chars"
|
|
|
|
forced = AIClient._extract_forced_tool_name(message, tools)
|
|
|
|
assert forced == "humanizer_zh.read_skill_doc"
|
|
|
|
|
|
def test_extract_forced_tool_name_unique_prefix():
|
|
tools = [
|
|
"humanizer_zh.read_skill_doc",
|
|
"skills_creator.create_skill",
|
|
]
|
|
message = "please call tool humanizer_zh only"
|
|
|
|
forced = AIClient._extract_forced_tool_name(message, tools)
|
|
|
|
assert forced == "humanizer_zh.read_skill_doc"
|
|
|
|
|
|
def test_extract_forced_tool_name_ambiguous_prefix_returns_none():
|
|
tools = [
|
|
"skills_creator.create_skill",
|
|
"skills_creator.reload_skill",
|
|
]
|
|
message = "please call tool skills_creator"
|
|
|
|
forced = AIClient._extract_forced_tool_name(message, tools)
|
|
|
|
assert forced is None
|
|
|
|
|
|
def test_extract_prefix_limit_from_user_message():
|
|
assert AIClient._extract_prefix_limit("直接返回前100字") == 100
|
|
assert AIClient._extract_prefix_limit("前 256 字") == 256
|
|
assert AIClient._extract_prefix_limit("返回全文") is None
|