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 @tool def get_news_headlines() -> str: """ Fetches the top news headlines from the News API for India. This function makes a GET request to the News API to retrieve the top news headlines for India. It returns the titles and sources of the top 5 articles as a formatted string. If no articles are available, it returns a message indicating that no news is available. In case of a request error, it returns an error message. Returns: str: A containing the top 5 news headlines and their sources, or an error message. """ api_key = "2f90b8ee0ea64f08b2e9a4c9a13a69c4" sources = "google-news-in" name = "Google News (India)" description = "Comprehensive, up-to-date India news coverage, aggregated from sources all over the world by Google News.", URL = "https://news.google.com", language = "en" # Define language before using it url = f"https://newsapi.org/v2/everything?q=&sources={sources}&language={language}&apiKey={api_key}" try: response = requests.get(url) response.raise_for_status() data = response.json() articles = data["articles"] if not articles: return "No news available at the moment." headlines = [f"{article['title']} - {article['source']['name']}" for article in articles[:5]] return "\n".join(headlines) except requests.exceptions.RequestException as e: return f"Error fetching news data: {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', custom_role_conversions=None, ) with open("prompts.yaml", 'r') as stream: prompt_templates = yaml.safe_load(stream) agent = CodeAgent( model=model, tools=[get_news_headlines, DuckDuckGoSearchTool()], ## add your tools here (don't remove final answer) max_steps=6, verbosity_level=1, grammar=None, planning_interval=None, name=None, description=None, ) GradioUI(agent).launch()