File size: 3,066 Bytes
19b9935
57ee912
1fa2efd
19b9935
 
 
1fa2efd
 
e631dac
adb4004
 
19b9935
 
 
adb4004
 
19b9935
 
adb4004
 
19b9935
 
adb4004
19b9935
 
 
 
 
 
 
 
1fa2efd
 
e631dac
adb4004
 
19b9935
 
 
adb4004
 
19b9935
 
adb4004
 
19b9935
 
adb4004
19b9935
 
 
 
 
 
 
 
1fa2efd
e631dac
adb4004
 
19b9935
 
 
adb4004
 
19b9935
 
adb4004
 
19b9935
 
adb4004
19b9935
 
 
 
 
 
 
 
1fa2efd
e631dac
adb4004
 
19b9935
 
 
adb4004
 
19b9935
 
adb4004
 
19b9935
 
adb4004
19b9935
 
 
 
 
 
 
 
 
73e8255
 
e631dac
adb4004
 
19b9935
 
 
adb4004
 
19b9935
 
adb4004
 
19b9935
 
adb4004
19b9935
 
 
73e8255
1fa2efd
19b9935
 
 
 
 
73e8255
 
1fa2efd
 
 
 
73e8255
1fa2efd
73e8255
 
 
1fa2efd
 
73e8255
57ee912
1fa2efd
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
from smolagents import HfApiModel, CodeAgent, DuckDuckGoSearchTool, WikipediaSearchTool, Tool


class add(Tool):
    name = "add"
    description = """
        This tool adds two integers together and returns an integer.

        Args:
            a: first integer
            b: second integer
        """
    inputs = {
        "a":{
            "type":"integer",
            "description":"first integer"
        },
        "b":{
            "type":"integer",
            "description":"second integer"
        }
    }
    output_type = "integer"

    def forward(self, a: int, b: int):
        return a + b


class subtract(Tool):
    name = "subtract"
    description = """
        This tool subtracts two integers and returns an integer.

        Args:
            a: first integer
            b: second integer
        """
    inputs = {
        "a":{
            "type":"integer",
            "description":"first integer"
        },
        "b":{
            "type":"integer",
            "description":"second integer"
        }
    }
    output_type = "integer"

    def forward(self, a: int, b: int):
        return a - b

class multiply(Tool):
    name = "multiply"
    description = """
        This tool multiplies two integers and returns an integer.

        Args:
            a: first integer
            b: second integer
        """
    inputs = {
        "a":{
            "type":"integer",
            "description":"first integer"
        },
        "b":{
            "type":"integer",
            "description":"second integer"
        }
    }
    output_type = "integer"

    def forward(self, a: int, b: int):
        return a * b

class divide(Tool):
    name = "divide"
    description = """
        This tool divides two integers and returns an integer.

        Args:
            a: first integer
            b: second integer
        """
    inputs = {
        "a":{
            "type":"integer",
            "description":"first integer"
        },
        "b":{
            "type":"integer",
            "description":"second integer"
        }
    }
    output_type = "integer"

    def forward(self, a: int, b: int):
        if b == 0:
            raise ValueError("Cannot divide by zero.")
        return a / b

class modulo(Tool):
    name = "modulo"
    description = """
        This tool returns the modulus of two integers

        Args:
            a: first integer
            b: second integer
        """
    inputs = {
        "a":{
            "type":"integer",
            "description":"first integer"
        },
        "b":{
            "type":"integer",
            "description":"second integer"
        }
    }
    output_type = "integer"

    def forward(self, a: int, b: int):
        return a % b

tools=[
    add(),
    subtract(),
    multiply(),
    divide(),
    modulo(),
    DuckDuckGoSearchTool(),
    WikipediaSearchTool()
]


def create_agent():
    agent = CodeAgent(
        model = HfApiModel(),
        tools = tools,
        max_steps=10,
        verbosity_level=2
    )

    return agent