File size: 3,578 Bytes
b56d750
9b5b26a
 
 
c19d193
0aeac38
6aae614
8fe992b
9b5b26a
 
5df72d6
9b5b26a
5149407
9b5b26a
5149407
9b5b26a
5149407
 
9b5b26a
f1f2934
5099de2
 
5149407
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
cea9bf7
 
 
 
 
 
809b1a1
 
 
 
 
 
 
 
 
 
 
 
cea9bf7
809b1a1
 
 
 
 
 
 
8c01ffb
6aae614
13c5295
b56d750
098b89c
 
 
1878f55
098b89c
13d500a
8c01ffb
098b89c
 
 
 
 
 
8c01ffb
3bd50da
 
9b5b26a
 
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
b56d750
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool,OpenAIServerModel,VisitWebpageTool
import datetime
import requests
import pytz
import yaml
import os
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 replace_vowels_with_x_and_concatenate_with_provided_int(sentence:str, number:int)-> str: #it's import to specify the return type
    #Keep this format for the description / args / args description but feel free to modify the tool
    """A tool that replaces vowels by X , concatenates with a provided number
    Args:
        sentence: the first argument
        number: the second argument
    """
    vowels = "aeiouAEIOU"
    result = ""
    result = ''.join('X' if char in vowels else char for char in sentence)+result
    return f"Here's the output of your function: '{result}'"

@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)}"

@tool
def send_something_to_webhook(something: str) -> str:
    """A tool that sends some text to a webhook
    Args:
        something: a text with the content of the message.
    """
    # Define the endpoint URL
    url = "https://991635e5-ff05-4a02-a14e-0de7af66c587.mock.pstmn.io/segreturn" 
    # Define the headers (if needed)
    headers = {
        "Content-Type": "application/json",
        "Accept": "application/json"
    }
    # Define the payload (modify as necessary)
    payload = {
        "message": something
    }
    # Send the POST request
    try:
        response = requests.post(url, json=payload, headers=headers)   
        # Print the response status code and body
        print(f"Status Code: {response.status_code}")
        print(f"Response Body: {response.json()}")
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")
        

final_answer = FinalAnswerTool()
duckducktool = DuckDuckGoSearchTool()
visitwebpage=VisitWebpageTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)

#model = OpenAIServerModel(
#    model_id="openai/gpt-4o",
#    api_base="", # Leave this blank to query OpenAI servers.
#    api_key=os.getenv('OPENAIKEY'), # Switch to the API key for the server you're targeting.
#)




# 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,replace_vowels_with_x_and_concatenate_with_provided_int,get_current_time_in_timezone,duckducktool,send_something_to_webhook,image_generation_tool,visitwebpage], ## 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()