Spaces:
Sleeping
Sleeping
File size: 2,982 Bytes
9b5b26a c19d193 6aae614 8fe992b 9b5b26a ecd4181 7cb41fc ecd4181 9b5b26a d9a0ba7 d7dde43 9b5b26a d7dde43 7cb41fc d7dde43 d9a0ba7 d7dde43 d9a0ba7 d7dde43 d9a0ba7 d7dde43 d9a0ba7 d7dde43 d9a0ba7 7cb41fc d7dde43 d9a0ba7 d7dde43 d9a0ba7 d7dde43 6aae614 ae7a494 e121372 bf6d34c 41d1605 fe328e0 13d500a 8c01ffb d9a0ba7 861422e d9a0ba7 8c01ffb 8fe992b 7cb41fc 8c01ffb 861422e 8fe992b 9b5b26a 8c01ffb |
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 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
import os
@tool
def news_aggregator(keyword: str, max_results: int = 5) -> str:
"""
A tool that fetches the latest news articles related to a specific keyword.
Args:
keyword: The topic or keyword to search for (e.g., "AI", "technology").
max_results: The maximum number of articles to return (default is 5).
Returns:
A string containing the titles and URLs of the latest news articles.
"""
try:
# Fetch the API key from environment variables
api_key = os.getenv("NEWSAPI_KEY")
if not api_key:
return "Error: NewsAPI key is missing. Please set the NEWSAPI_KEY environment variable."
# Construct the API URL
url = f"https://newsapi.org/v2/everything?q={keyword}&pageSize={max_results}&apiKey={api_key}"
# Make the API request
response = requests.get(url)
response.raise_for_status() # Raise an error for bad status codes
# Parse the JSON response
data = response.json()
# Check if the response contains articles
articles = data.get("articles", [])
if not articles:
return f"No news articles found for the keyword '{keyword}'."
# Format the results
result = f"Here are the latest news articles about '{keyword}':\n"
for i, article in enumerate(articles, 1):
title = article.get("title", "No title")
url = article.get("url", "#")
result += f"{i}. {title}\n {url}\n"
return result
except requests.exceptions.RequestException as e:
return f"Error fetching news articles: {str(e)}"
except Exception as e:
return f"An unexpected error occurred: {str(e)}"
final_answer = FinalAnswerTool()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
#model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud',
custom_role_conversions=None,
)
# prompt templates
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# Agent and tools
agent = CodeAgent(
model=model,
tools=[final_answer, news_aggregator], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch() |