Spaces:
Sleeping
Sleeping
File size: 1,552 Bytes
40ee601 509faa9 40ee601 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import os
from datetime import datetime
from dotenv import load_dotenv
from langchain_core.tools import tool
from tavily import TavilyClient
load_dotenv()
tavily_client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY"))
@tool
def web_search_tool(query: str) -> str:
"""
Searches the web for the given query to retrieve the latest,
highly relevant, and concise context for research purposes.
"""
current_year = datetime.now().year
current_date = datetime.now().strftime("%B %d, %Y")
if str(current_year) not in query:
enhanced_query = f"{query} {current_year} latest"
else:
enhanced_query = query
response = tavily_client.search(
query=enhanced_query,
max_results=5,
search_depth="advanced"
)
results = response.get("results", [])
final_response = [
f"[SYSTEM NOTE: Today's exact date is {current_date}. Base all your synthesis, timelines, and citations relative to this present date.]\n"
]
for result in results:
title = result.get("title", "Untitled")
source = result.get("url", "No URL available")
content = result.get("content", "")
published_date = result.get("published_date", "Unknown Date")
final_response.append(
f"Title: {title}\n"
f"Source: {source}\n"
f"Published: {published_date}\n"
f"Snippet: {content}\n"
f"---"
)
output_string = "\n\n".join(final_response)
return output_string |