Spaces:
Sleeping
Sleeping
# π§° Required libraries | |
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, tool | |
from huggingface_hub import InferenceClient | |
import requests | |
from bs4 import BeautifulSoup | |
import json | |
import os | |
import gradio as gr | |
HF_TOKEN = os.getenv("HF_API_KEY") | |
client = InferenceClient(token=HF_TOKEN) | |
# π οΈ Custom tool to get Hugging Face top daily paper | |
def get_hugging_face_top_daily_paper() -> str: | |
""" | |
Returns the title of the most upvoted paper on Hugging Face daily papers. | |
""" | |
try: | |
url = "https://huggingface.co/papers" | |
response = requests.get(url) | |
response.raise_for_status() | |
soup = BeautifulSoup(response.content, "html.parser") | |
# Use more general selector | |
containers = soup.find_all('div', attrs={'data-props': True}) | |
top_paper = "" | |
for container in containers: | |
data_props = container.get('data-props', '') | |
if data_props: | |
try: | |
json_data = json.loads(data_props.replace('"', '"')) | |
if 'dailyPapers' in json_data: | |
top_paper = json_data['dailyPapers'][0]['title'] | |
break | |
except json.JSONDecodeError: | |
continue | |
return top_paper or "No top paper found." | |
except requests.exceptions.RequestException as e: | |
return f"Error occurred while fetching the paper: {e}" | |
# π Run the agent with a sample query | |
if __name__ == "__main__": | |
# π€ Load a model from Hugging Face Hub | |
model = HfApiModel(model_id="Qwen/Qwen2.5-Coder-32B-Instruct", api_key=HF_TOKEN) | |
# π§ Initialize tools | |
search_tool = DuckDuckGoSearchTool() | |
# π§ Build the agent | |
agent = CodeAgent( | |
tools=[search_tool, get_hugging_face_top_daily_paper], | |
model=model, | |
additional_authorized_imports=["requests", "bs4", "json"] | |
) | |
# π₯οΈ Web interface | |
def run_agent_interface(query): | |
return agent.run(query) | |
gr.Interface(fn=run_agent_interface, inputs="text", outputs="text").launch() | |