Spaces:
Running
Running
File size: 2,786 Bytes
71a8799 9b5b26a c19d193 6aae614 71a8799 9b5b26a 71a8799 9b5b26a 71a8799 9b5b26a 71a8799 9b5b26a 71a8799 8c01ffb 6aae614 ae7a494 e121372 71a8799 13d500a 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b 71a8799 8c01ffb 71a8799 861422e 8fe992b 71a8799 9b5b26a 71a8799 |
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
from smolagents import CodeAgent, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from scholarly import scholarly
import gradio as gr
@tool
def fetch_latest_research_papers(keywords: list, num_results: int = 5) -> list:
"""Fetches the latest research papers from Google Scholar based on provided keywords.
Args:
keywords: A list of keywords to search for relevant papers.
num_results: The number of papers to fetch (default is 5).
"""
try:
query = " ".join(keywords)
search_results = scholarly.search_pubs(query)
papers = []
for i in range(num_results):
paper = next(search_results, None)
if paper:
papers.append({
"title": paper['bib'].get('title', 'No Title'),
"authors": paper['bib'].get('author', 'Unknown Authors'),
"year": paper['bib'].get('pub_year', 'Unknown Year'),
"abstract": paper['bib'].get('abstract', 'No Abstract Available'),
"link": paper.get('pub_url', 'No Link Available')
})
return papers
except Exception as e:
return [f"Error fetching research papers: {str(e)}"]
final_answer = FinalAnswerTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[final_answer, fetch_latest_research_papers],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name="ScholarAgent",
description="An AI agent that fetches the latest research papers from Google Scholar based on user-defined keywords and filters.",
prompt_templates=prompt_templates
)
def search_papers(user_input):
keywords = user_input.split(",") # Split input by commas for multiple keywords
results = fetch_latest_research_papers(keywords, num_results=5)
return "\n\n".join([f"**Title:** {paper['title']}\n**Authors:** {paper['authors']}\n**Year:** {paper['year']}\n**Abstract:** {paper['abstract']}\n[Read More]({paper['link']})" for paper in results])
# Create a simple Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# Google Scholar Research Paper Fetcher")
keyword_input = gr.Textbox(label="Enter keywords (comma-separated)", placeholder="e.g., deep learning, reinforcement learning")
output_display = gr.Markdown()
search_button = gr.Button("Search")
search_button.click(search_papers, inputs=[keyword_input], outputs=[output_display])
demo.launch()
|