Jovynne commited on
Commit
866a942
·
verified ·
1 Parent(s): 952ef9b

Create mock_smolagents.py

Browse files
Files changed (1) hide show
  1. mock_smolagents.py +81 -0
mock_smolagents.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # mock_smolagents.py
2
+ # Minimal mock implementation for environments where smolagents is unavailable
3
+
4
+ from typing import Callable, List
5
+
6
+
7
+ def tool(func: Callable) -> Callable:
8
+ """Mock @tool decorator"""
9
+ func.name = func.__name__
10
+ return func
11
+
12
+
13
+ class LiteLLMModel:
14
+ """Mock LLM model"""
15
+ def __init__(self, model_id: str, api_key: str = None):
16
+ self.model_id = model_id
17
+ self.api_key = api_key
18
+
19
+
20
+ class ToolCallingAgent:
21
+ def __init__(
22
+ self,
23
+ model,
24
+ tools,
25
+ max_steps=5,
26
+ verbose=False,
27
+ add_base_tools=False,
28
+ ):
29
+ self.tools = tools
30
+ self.verbose = verbose
31
+
32
+ def run(self, task: str) -> str:
33
+ task_lower = task.lower()
34
+
35
+ # -------- Calculator --------
36
+ if "calculate" in task_lower or any(op in task_lower for op in ["+", "-", "*", "/"]):
37
+ for tool in self.tools:
38
+ if tool.name == "calculator":
39
+ import re
40
+ expr = re.sub(r"[^\d\+\-\*\/\(\)\.\s]", "", task)
41
+ return tool(expr)
42
+
43
+ # -------- Dataset Info --------
44
+ if "dataset" in task_lower or "mnist" in task_lower or "glue" in task_lower:
45
+ for tool in self.tools:
46
+ if tool.name == "get_hf_dataset_info":
47
+ if "mnist" in task_lower:
48
+ return tool("mnist")
49
+ elif "glue" in task_lower:
50
+ return tool("glue")
51
+ return tool("mnist")
52
+
53
+ # -------- Translation --------
54
+ if "translate" in task_lower:
55
+ for tool in self.tools:
56
+ if tool.name == "translate_text":
57
+ try:
58
+ parts = task_lower.replace("translate", "").split("to")
59
+ text = parts[0].strip()
60
+ lang = parts[1].strip().title()
61
+ return tool(text, lang)
62
+ except Exception:
63
+ return tool("hello", "Spanish")
64
+
65
+ # -------- Web Search --------
66
+ if "search" in task_lower or "find" in task_lower:
67
+ for tool in self.tools:
68
+ if tool.name == "search_web":
69
+ query = task_lower.replace("search", "").replace("find", "").strip()
70
+ return tool(query)
71
+
72
+ # -------- Fallback --------
73
+ return (
74
+ "🤖 **Mock Agent Response**\n\n"
75
+ "I couldn’t understand the request.\n\n"
76
+ "Try:\n"
77
+ "- `calculate 2 + 2`\n"
78
+ "- `translate hello to French`\n"
79
+ "- `tell me about mnist dataset`\n"
80
+ "- `search machine learning`"
81
+ )