SrcLurker commited on
Commit
17885ea
·
1 Parent(s): 7ea4da7

add math agent.

Browse files
Files changed (1) hide show
  1. basic_agent.py +62 -45
basic_agent.py CHANGED
@@ -18,47 +18,67 @@ Take the time to plan the steps to reach the solution. Show the steps and then e
18
 
19
  class BasicAgent:
20
 
21
- def __init__(self, model_id=None):
22
  print("BasicAgent initializing.")
23
  # Logs appear to be swallowed.
24
  LOG.warning("logging BasicAgent initialized.")
25
 
26
- # Assume we will use the default model creation
27
- self.model = None
28
-
29
- if model_id:
30
- self.model_id = model_id
31
-
32
- # Handle the special cases
33
- if model_id.lower() == "google":
34
- self.model_id = "google"
35
-
36
- # Use Google gemini free tier
37
- GEM_KEY=os.environ["GOOGLE_API_KEY"]
38
- self.model = smolagents.OpenAIServerModel(
39
- model_id="gemini-2.0-flash",
40
- api_base="https://generativelanguage.googleapis.com/v1beta/openai/",
41
- api_key=GEM_KEY,
42
- temperature=0.3)
43
- elif model_id.lower() == "local":
44
- self.model_id = "Qwen/Qwen3-4B-FP8"
45
- # Run locally.
46
- self.model = smolagents.TransformersModel(
47
- model_id=self.model_id,
48
- max_new_tokens=32000,
49
- temperature=0.3
50
- )
51
- else:
52
- self.model_id = "Qwen/Qwen3-32B"
53
-
54
- if not self.model:
55
- self.model = smolagents.HfApiModel(
56
  max_tokens=32000,
57
  temperature=0.3,
58
- model_id=self.model_id,
59
  custom_role_conversions=None,
60
  )
61
- print(f"NEW2: BasicAgent {self.model_id=} {self.model=}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
  web_search_tools = [
64
  smolagents.DuckDuckGoSearchTool(),
@@ -70,7 +90,7 @@ class BasicAgent:
70
  self.web_search_agent = smolagents.CodeAgent(
71
  name="web_search_agent",
72
  description="Search the web",
73
- model=self.model,
74
  tools=web_search_tools,
75
  max_steps=6,
76
  verbosity_level=2,
@@ -78,17 +98,17 @@ class BasicAgent:
78
  additional_authorized_imports=["duckduckgo_search"],
79
  )
80
 
81
- wiki_search_tools = [
82
  smolagents.WikipediaSearchTool(),
83
  smolagents.VisitWebpageTool(),
84
  smolagents.FinalAnswerTool()
85
  ]
86
 
87
- self.wiki_search_agent = smolagents.CodeAgent(
88
  name="wikipedia_search_agent",
89
- description="Search wikipedia",
90
- model=self.model,
91
- tools=wiki_search_tools,
92
  max_steps=6,
93
  verbosity_level=2,
94
  planning_interval=None,
@@ -103,18 +123,15 @@ class BasicAgent:
103
  name="manager_agent",
104
  description="Manger of other agents",
105
  tools=[smolagents.FinalAnswerTool()],
106
- model=self.model,
 
107
  max_steps=10,
108
  verbosity_level=2,
109
  planning_interval=None,
110
  additional_authorized_imports=["duckduckgo_search", "wikipedia-api"],
111
- managed_agents=[self.web_search_agent, self.wiki_search_agent])
112
 
113
  def __call__(self, question: str) -> str:
114
- # Avoid rate limiting issues
115
- if self.model_id == "google":
116
- time.sleep(1)
117
-
118
  print(f"NEW Agent received question (first 50 chars): {question[:50]}...")
119
  prompt = f"{SYSTEM_PROMPT}\n\n{question}"
120
  answer = self.manager_agent.run(prompt)
 
18
 
19
  class BasicAgent:
20
 
21
+ def __init__(self):
22
  print("BasicAgent initializing.")
23
  # Logs appear to be swallowed.
24
  LOG.warning("logging BasicAgent initialized.")
25
 
26
+ self.manager_model_id = "Qwen/Qwen3-32B"
27
+ self.manager_model = None
28
+
29
+ self.code_model_id = "Qwen/Qwen2.5-Coder-32B-Instruct"
30
+ self.code_model = None
31
+
32
+ """
33
+ # Handle the special cases
34
+ if self.model_id.lower() == "google":
35
+ self.model_id = "google"
36
+
37
+ # Use Google gemini free tier
38
+ GEM_KEY=os.environ["GOOGLE_API_KEY"]
39
+ self.model = smolagents.OpenAIServerModel(
40
+ model_id="gemini-2.0-flash",
41
+ api_base="https://generativelanguage.googleapis.com/v1beta/openai/",
42
+ api_key=GEM_KEY,
43
+ temperature=0.3)
44
+ elif self.model_id.lower() == "local":
45
+ self.model_id = "Qwen/Qwen3-4B-FP8"
46
+ # Run locally.
47
+ self.model = smolagents.TransformersModel(
48
+ model_id=self.model_id,
49
+ max_new_tokens=32000,
50
+ temperature=0.3
51
+ )
52
+ """
53
+
54
+ if not self.manager_model:
55
+ self.manager_model = smolagents.HfApiModel(
56
  max_tokens=32000,
57
  temperature=0.3,
58
+ model_id=self.manager_model_id,
59
  custom_role_conversions=None,
60
  )
61
+
62
+ if not self.code_model:
63
+ self.code_model = smolagents.HfApiModel(
64
+ max_tokens=32000,
65
+ temperature=0.3,
66
+ model_id=self.code_model_id,
67
+ custom_role_conversions=None,
68
+ )
69
+
70
+ print(f"NEW3: BasicAgent {self.manager_model_id=} {self.code_model_id=}")
71
+
72
+ self.math_agent = smolagents.CodeAgent(
73
+ name="date_time_math_agent",
74
+ description="Handle date, time and math caclulations",
75
+ model=self.code_model,
76
+ tools=[],
77
+ max_steps=6,
78
+ verbosity_level=2,
79
+ planning_interval=None,
80
+ additional_authorized_imports=["datetime", "time", "calendar"],
81
+ )
82
 
83
  web_search_tools = [
84
  smolagents.DuckDuckGoSearchTool(),
 
90
  self.web_search_agent = smolagents.CodeAgent(
91
  name="web_search_agent",
92
  description="Search the web",
93
+ model=self.code_model,
94
  tools=web_search_tools,
95
  max_steps=6,
96
  verbosity_level=2,
 
98
  additional_authorized_imports=["duckduckgo_search"],
99
  )
100
 
101
+ wikipedia_search_tools = [
102
  smolagents.WikipediaSearchTool(),
103
  smolagents.VisitWebpageTool(),
104
  smolagents.FinalAnswerTool()
105
  ]
106
 
107
+ self.wikipedia_search_agent = smolagents.CodeAgent(
108
  name="wikipedia_search_agent",
109
+ description="Best search of wikipedia pages",
110
+ model=self.code_model,
111
+ tools=wikipedia_search_tools,
112
  max_steps=6,
113
  verbosity_level=2,
114
  planning_interval=None,
 
123
  name="manager_agent",
124
  description="Manger of other agents",
125
  tools=[smolagents.FinalAnswerTool()],
126
+ model=self.manager_model,
127
+ add_base_tools=True,
128
  max_steps=10,
129
  verbosity_level=2,
130
  planning_interval=None,
131
  additional_authorized_imports=["duckduckgo_search", "wikipedia-api"],
132
+ managed_agents=[self.web_search_agent, self.wikipedia_search_agent, self.math_agent])
133
 
134
  def __call__(self, question: str) -> str:
 
 
 
 
135
  print(f"NEW Agent received question (first 50 chars): {question[:50]}...")
136
  prompt = f"{SYSTEM_PROMPT}\n\n{question}"
137
  answer = self.manager_agent.run(prompt)