Files
socweb/backend/app/tools/__init__.py
T
gongzhiyongandClaude Sonnet 4.6 ac843da725 feat: add Google Serper search tool alongside Jina MCP
- Add langchain-community dependency for GoogleSerperAPIWrapper
- Add serper_api_key to config with default key
- Create app/tools/serper.py with async serper_search tool
- Register "serper" key in tools/__init__.py (independent from "search"/Jina MCP)
- Add tool title and input/output summaries in chat.py
- Set SERPER_API_KEY on Azure App Service (Operation resource group)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:11:22 +08:00

29 lines
990 B
Python

"""LangChain tool definitions for the ReAct agent."""
from app.tools.kb import kb_search
from app.tools.tickets import ticket_list, ticket_detail
from app.tools.document import generate_document
from app.tools.sandbox import sandbox_run
from app.tools.serper import serper_search
# Mapping from frontend tool names to LangChain tool objects.
# "search" is no longer here — it is handled via Jina MCP in chat.py.
# "serper" uses Google Serper REST API, independent from Jina MCP.
_TOOL_MAP: dict[str, list] = {
"knowledge": [kb_search],
"tickets": [ticket_list, ticket_detail],
"document": [generate_document],
"sandbox": [sandbox_run],
"serper": [serper_search],
}
def resolve_tools(tool_keys: list[str]) -> tuple[list, bool]:
"""Return (regular_tools, needs_jina_mcp)."""
needs_jina_mcp = "search" in tool_keys
tools = []
for key in tool_keys:
if key in _TOOL_MAP:
tools.extend(_TOOL_MAP[key])
return tools, needs_jina_mcp