File size: 2,495 Bytes
14850b9
9b5b26a
 
 
c19d193
6aae614
8fe992b
9b5b26a
 
40e3baa
9b5b26a
38fb13c
9b5b26a
14850b9
38fb13c
14850b9
38fb13c
 
 
4b5d1a1
 
9b5b26a
4b5d1a1
29ef7e4
758e80e
ee35b99
 
 
4b5d1a1
 
29ef7e4
38fb13c
9b5b26a
38fb13c
 
 
 
 
8c01ffb
38fb13c
 
 
 
 
 
 
 
8c01ffb
6aae614
ae7a494
 
 
 
e121372
bf6d34c
 
0921c55
fe328e0
13d500a
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
d3064d0
8c01ffb
 
 
 
 
 
8fe992b
 
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
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()