bioinformatics-scout / src /tools /arxiv_tool.py
Mituvinci
Initial commit: multi-agent literature scout pipeline
5e4cf1b
"""ArXiv search tool wrapping the arxiv Python library."""
import arxiv
from agents import function_tool
@function_tool
def arxiv_search(query: str, max_results: int = 3) -> str:
"""Search ArXiv for papers matching the query. Returns titles, abstracts, and links.
Args:
query: The search query for ArXiv.
max_results: Maximum number of papers to return (default 3).
"""
client = arxiv.Client()
search = arxiv.Search(
query=query,
max_results=max_results,
sort_by=arxiv.SortCriterion.Relevance,
)
results = list(client.results(search))
if not results:
return f"No ArXiv results found for: {query}"
lines = []
for i, paper in enumerate(results, 1):
abstract = paper.summary.replace("\n", " ")[:500]
doi = paper.doi or ""
lines.append(
f"[ArXiv {i}]\n"
f"Title: {paper.title}\n"
f"Abstract: {abstract}\n"
f"Published: {paper.published.strftime('%Y-%m-%d')}\n"
f"DOI: {doi}\n"
f"URL: {paper.entry_id}\n"
)
return "\n".join(lines)