Spaces:
Running
Running
File size: 3,338 Bytes
2e6775a 71a8799 9b5b26a 2e6775a 82728a0 bb8d29a 2e6775a bb8d29a 2e6775a bb8d29a 2e6775a bb8d29a 2e6775a bb8d29a 2e6775a bb8d29a 2e6775a bb8d29a 2e6775a 71a8799 041eef2 bb8d29a 82728a0 bb8d29a 71a8799 9b5b26a bb8d29a 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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
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 = 1) -> list:
"""Fetches the latest research papers from Google Scholar based on provided keywords."""
try:
print(f"DEBUG: Searching papers with keywords: {keywords}") # Debug input
query = " ".join(keywords)
search_results = scholarly.search_pubs(query)
papers = []
for i in range(num_results):
paper = next(search_results, None)
if paper:
print(f"DEBUG: Found paper - {paper['bib'].get('title', 'No Title')}") # Debug result
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')
})
if not papers:
print("DEBUG: No papers found.")
return papers
except Exception as e:
print(f"ERROR: {str(e)}") # Debug errors
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
print(f"DEBUG: Received input keywords - {keywords}") # Debug user input
results = fetch_latest_research_papers(keywords, num_results=1)
print(f"DEBUG: Results received - {results}") # Debug function output
if isinstance(results, list) and results:
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])
print("DEBUG: No results found.")
return "No results found. Try different keywords."
# 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])
print("DEBUG: Gradio UI is running. Waiting for user input...")
demo.launch()
|