jansahayak / tools /tavily_tool.py
Anmol4521's picture
Upload 95 files
388aa42 verified
"""
Tavily Search Tool
Enables live government website search
"""
from langchain_core.tools import Tool
from tavily import TavilyClient
from config import TAVILY_API_KEY
def get_tavily_client():
"""
Initializes Tavily client with API key
"""
if not TAVILY_API_KEY:
raise ValueError("TAVILY_API_KEY not found in environment variables")
return TavilyClient(api_key=TAVILY_API_KEY)
def tavily_search(query: str) -> str:
"""
Performs advanced search using Tavily API
Optimized for government websites and official portals
Args:
query: Search query string
Returns:
Formatted search results
"""
try:
client = get_tavily_client()
result = client.search(
query=query,
search_depth="advanced",
max_results=5
)
# Format results for agent consumption
formatted_results = []
for item in result.get('results', []):
formatted_results.append({
'title': item.get('title', 'N/A'),
'url': item.get('url', 'N/A'),
'content': item.get('content', 'N/A')
})
return str(formatted_results)
except Exception as e:
return f"Search error: {str(e)}"
def government_focused_search(query: str) -> str:
"""
Enhanced search specifically for Indian government domains
Adds .gov.in filter to queries
Args:
query: Base search query
Returns:
Search results from government websites
"""
enhanced_query = f"{query} site:gov.in"
return tavily_search(enhanced_query)
# LangChain Tool wrapper
tavily_tool = Tool(
name="Tavily_Search",
func=tavily_search,
description="Search government websites and official portals for real-time information about schemes, exams, and policies"
)
government_search_tool = Tool(
name="Government_Search",
func=government_focused_search,
description="Search specifically Indian government (.gov.in) websites for official scheme and exam information"
)