- 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>
29 lines
990 B
Python
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
|