mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
* feat: add Firecrawl web search and extract tools, update configuration and tests * feat: implement Firecrawl API integration and error handling in web search tools * feat: enhance Firecrawl web search with session management and payload validation * feat: Firecrawl web search to use aiohttp.ClientSession directly for improved session management as it was * feat: update Firecrawl search to handle grouped web data response and add corresponding tests * feat: refactor Firecrawl web search to use aiohttp.ClientSession for improved error handling and session management * feat: remove unused coercion function and update Firecrawl search to use default limit in payload
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
from astrbot.core import sp
|
|
from astrbot.core.provider.func_tool_manager import FunctionToolManager
|
|
from astrbot.core.tools.computer_tools.shell import ExecuteShellTool
|
|
from astrbot.core.tools.message_tools import SendMessageToUserTool
|
|
from astrbot.core.tools.web_search_tools import FirecrawlExtractWebPageTool
|
|
from astrbot.core.tools.web_search_tools import FirecrawlWebSearchTool
|
|
|
|
|
|
def test_get_builtin_tool_by_class_returns_cached_instance():
|
|
manager = FunctionToolManager()
|
|
|
|
tool_by_class = manager.get_builtin_tool(SendMessageToUserTool)
|
|
tool_by_name = manager.get_builtin_tool("send_message_to_user")
|
|
|
|
assert tool_by_class is tool_by_name
|
|
assert manager.get_func("send_message_to_user") is tool_by_class
|
|
assert tool_by_class.name == "send_message_to_user"
|
|
|
|
|
|
def test_builtin_tool_ignores_inactivated_llm_tools():
|
|
manager = FunctionToolManager()
|
|
sp.put(
|
|
"inactivated_llm_tools",
|
|
["send_message_to_user"],
|
|
scope="global",
|
|
scope_id="global",
|
|
)
|
|
|
|
try:
|
|
tool = manager.get_builtin_tool(SendMessageToUserTool)
|
|
assert tool.active is True
|
|
finally:
|
|
sp.put("inactivated_llm_tools", [], scope="global", scope_id="global")
|
|
|
|
|
|
def test_computer_tools_are_registered_as_builtin_tools():
|
|
manager = FunctionToolManager()
|
|
|
|
tool = manager.get_builtin_tool(ExecuteShellTool)
|
|
|
|
assert tool.name == "astrbot_execute_shell"
|
|
assert manager.is_builtin_tool("astrbot_execute_shell") is True
|
|
|
|
|
|
def test_firecrawl_tools_are_registered_as_builtin_tools():
|
|
manager = FunctionToolManager()
|
|
|
|
search_tool = manager.get_builtin_tool(FirecrawlWebSearchTool)
|
|
extract_tool = manager.get_builtin_tool(FirecrawlExtractWebPageTool)
|
|
|
|
assert search_tool.name == "web_search_firecrawl"
|
|
assert extract_tool.name == "firecrawl_extract_web_page"
|
|
assert manager.is_builtin_tool("web_search_firecrawl") is True
|
|
assert manager.is_builtin_tool("firecrawl_extract_web_page") is True
|