Sborole-Final-Assignment / tools /SemanticScholar.py
Sborole's picture
Update tools/SemanticScholar.py
eb75560 verified
import os
from smolagents import Tool
from tavily import TavilyClient
class TavilyResearchTool(Tool):
"""
Tavily deep-research search tool.
Use this when the question needs academic papers,
scientific background or research-level accuracy.
"""
name = "tavily_research"
description = (
"Use Tavily deep research mode to find academic-level content "
"including papers, research summaries, and high-quality sources."
)
inputs = {
"query": {"type": "string", "description": "Research topic to search"}
}
output_type = "string"
def __init__(self, **kwargs):
super().__init__(**kwargs)
api_key = os.getenv("TAVILY_API_KEY")
if not api_key:
raise ValueError("Missing TAVILY_API_KEY.")
self.client = TavilyClient(api_key=api_key)
def forward(self, query: str) -> str:
try:
response = self.client.search(
query=query,
search_depth="advanced", # <-- academic/longform mode
max_results=5
)
out = []
for r in response.get("results", []):
out.append(
f"TITLE: {r.get('title')}\n"
f"CONTENT: {r.get('content')}\n"
f"SOURCE: {r.get('url')}"
)
return "\n\n---SEPARATOR---\n\n".join(out)
except Exception as e:
return f"Tavily research error: {e}"