Spaces:
Sleeping
Sleeping
| from typing import List | |
| from phi.document.base import Document | |
| from phi.document.reader.base import Reader | |
| try: | |
| import arxiv # noqa: F401 | |
| except ImportError: | |
| raise ImportError("The `arxiv` package is not installed. Please install it via `pip install arxiv`.") | |
| class ArxivReader(Reader): | |
| max_results: int = 5 # Top articles | |
| sort_by: arxiv.SortCriterion = arxiv.SortCriterion.Relevance | |
| def read(self, query: str) -> List[Document]: | |
| """ | |
| Search a query from arXiv database | |
| This function gets the top_k articles based on a user's query, sorted by relevance from arxiv | |
| @param query: | |
| @return: List of documents | |
| """ | |
| documents = [] | |
| search = arxiv.Search(query=query, max_results=self.max_results, sort_by=self.sort_by) | |
| for result in search.results(): | |
| links = ", ".join([x.href for x in result.links]) | |
| documents.append( | |
| Document( | |
| name=result.title, | |
| id=result.title, | |
| meta_data={"pdf_url": str(result.pdf_url), "article_links": links}, | |
| content=result.summary, | |
| ) | |
| ) | |
| return documents | |