File size: 2,928 Bytes
e0b448e
9b5b26a
 
 
c19d193
6aae614
ac9db40
8fe992b
e0b448e
9b5b26a
2b38079
 
b402b11
 
88de546
b402b11
 
2b38079
b402b11
2b38079
2363498
e2fff14
 
 
 
2b38079
 
 
 
 
2ec100f
2b38079
2ec100f
2b38079
b402b11
e2fff14
 
 
9b5b26a
e2fff14
9b5b26a
e2fff14
 
 
 
 
 
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
 
6aae614
ae7a494
e121372
e0b448e
 
 
13d500a
8c01ffb
9b5b26a
 
8c01ffb
861422e
 
e0b448e
8c01ffb
8fe992b
ff7a486
8c01ffb
 
 
 
e2fff14
8c01ffb
861422e
8fe992b
 
2b38079
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
92
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

# Below is an example of a tool that does nothing. Amaze us with your creativity!
@tool
def search_arxiv(query: str) -> str:
    """Searches arXiv for academic papers.

    Args:
        query (str): The topic or keywords to search for.

    Returns:
        str: A formatted list of found papers with titles, summaries, and links.
    """
    max_results = 5  # Static value for maximum results
    url = f"http://export.arxiv.org/api/query?search_query={query}&max_results={max_results}"
    response = requests.get(url)

    if response.status_code == 200:
        papers = []
        for entry in response.text.split("<entry>")[1:max_results+1]:
            title = entry.split("<title>")[1].split("</title>")[0].strip()
            summary = entry.split("<summary>")[1].split("</summary>")[0].strip()
            link = entry.split("<id>")[1].split("</id>")[0].strip()
            papers.append(f"Title: {title}\nSummary: {summary}\nLink: {link}\n")

        return "\n\n".join(papers)

    return "No papers found."

@tool
def summarize_text(text: str) -> str:
    """Summarizes long academic papers or articles.
    Args:
        text: The text to summarize.
    """
    model = HfApiModel(
        max_tokens=512,
        temperature=0.5,
        model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
    )
    return model.generate(f"Summarize this research paper: {text}")

@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """A tool that fetches the current local time in a specified timezone.
    Args:
        timezone: A string representing a valid timezone (e.g., 'America/New_York').
    """
    try:
        # Create timezone object
        tz = pytz.timezone(timezone)
        # Get current time in that timezone
        local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
        return f"The current local time in {timezone} is: {local_time}"
    except Exception as e:
        return f"Error fetching time for timezone '{timezone}': {str(e)}"


final_answer = FinalAnswerTool()

model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
)

# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

with open("prompts.yaml", 'r') as stream:
    prompt_templates = yaml.safe_load(stream)

agent = CodeAgent(
    model=model,
    tools=[final_answer, search_arxiv, summarize_text, image_generation_tool],  # add your tools here (don't remove final answer)
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name="Research Assistant",
    description=None,
    prompt_templates=prompt_templates
)

GradioUI(agent).launch()