huytofu92 commited on
Commit
dde4764
·
1 Parent(s): 9b9c542

First version

Browse files
Files changed (3) hide show
  1. mini_agents.py +45 -0
  2. tools.py +63 -0
  3. vlm_tools.py +54 -0
mini_agents.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from smolagents import CodeAgent, InferenceClientModel
2
+ from tools import sort_list
3
+ import os
4
+
5
+ MODEL_CHOICES = {
6
+ "audio": ["whisper-large-v3"],
7
+ "vlm": ["Salesforce/blip-image-captioning-base", "smolvlm/vlm-base-patch14-224"],
8
+ "code": ["gpt-4o-mini"]}
9
+
10
+ code_agent = CodeAgent(
11
+ model=MODEL_CHOICES["code"][0],
12
+ tools=[sort_list],
13
+ verbose=True
14
+ )
15
+
16
+ audio_model = InferenceClientModel(
17
+ model=MODEL_CHOICES["audio"][0],
18
+ api_key=os.getenv("HUGGINGFACE_API_KEY"),
19
+ api_url="https://api.openai.com/v1/audio/transcriptions"
20
+ )
21
+
22
+ audio_agent = CodeAgent(
23
+ model=audio_model,
24
+ tools=[],
25
+ verbose=True
26
+ )
27
+
28
+ vlm_model = InferenceClientModel(
29
+ model=MODEL_CHOICES["vlm"][0],
30
+ api_key=os.getenv("HUGGINGFACE_API_KEY"),
31
+ api_url="https://api.openai.com/v1/images/generations"
32
+ )
33
+
34
+ vlm_agent = CodeAgent(
35
+ model=vlm_model,
36
+ tools=[],
37
+ verbose=True
38
+ )
39
+
40
+
41
+
42
+
43
+
44
+
45
+
tools.py CHANGED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain_core.tools import tool
2
+ from datetime import datetime
3
+ from typing import Literal, List
4
+ from smolagents import WebSearchTool, DuckDuckGoSearchTool, VisitWebpageTool, WikipediaSearchTool
5
+
6
+ @tool
7
+ def get_current_time(timezone: str = "America/New_York", format: str = "%Y-%m-%d %H:%M:%S"):
8
+ """
9
+ Get the current time
10
+ Args:
11
+ timezone: The timezone to get the current time in. Example: "America/New_York"
12
+ format: The format to return the current time in. Example: "%Y-%m-%d %H:%M:%S"
13
+ Returns:
14
+ The current time
15
+ """
16
+ return datetime.now(timezone).strftime(format)
17
+
18
+ @tool
19
+ def sort_list(my_list: List[int], order: Literal["asc", "desc", "alphabetize", "alphabetize_reverse"]):
20
+ """
21
+ Sort a list in ascending or descending order if the list contains numbers.
22
+ Sort it in alphabetically or alphabetically in reverse order if the list contains strings or mixed types.
23
+
24
+ Args:
25
+ my_list: The list to sort
26
+ order: The order to sort the list in. Must be one of the following:
27
+ - "asc": Sort the list in ascending order. Only for lists containing numbers.
28
+ - "desc": Sort the list in descending order. Only for lists containing numbers.
29
+ - "alphabetize": Sort the list alphabetically. Only for lists containing strings or mixed types.
30
+ - "alphabetize_reverse": Sort the list alphabetically in reverse order. Only for lists containing strings or mixed types.
31
+
32
+ Returns:
33
+ The sorted list
34
+ """
35
+ if not isinstance(my_list, List):
36
+ raise ValueError("my_list must be a list")
37
+ else:
38
+ if all(isinstance(item, (int, float)) for item in my_list):
39
+ if order in ["asc", "desc"]:
40
+ return sorted(my_list, reverse=order == "desc")
41
+ elif order in ["alphabetize", "alphabetize_reverse"]:
42
+ how = {
43
+ "alphabetize": "asc",
44
+ "alphabetize_reverse": "desc"
45
+ }
46
+ return sorted(my_list, key=lambda x: str(x), reverse=how[order] == "desc")
47
+ else:
48
+ raise ValueError("order must be one of the following: asc, desc, alphabetize, alphabetize_reverse")
49
+ else:
50
+ print("This is a mixed list. Converting and sorting alphabetically.")
51
+ my_list = [str(item) for item in my_list]
52
+ how = {
53
+ "alphabetize": "asc",
54
+ "alphabetize_reverse": "desc"
55
+ }
56
+ return sorted(my_list, reverse=how[order] == "desc")
57
+
58
+ #smolagents tools
59
+ web_search_tool = WebSearchTool()
60
+ duckduckgo_search_tool = DuckDuckGoSearchTool()
61
+ visit_webpage_tool = VisitWebpageTool()
62
+ wikipedia_search_tool = WikipediaSearchTool()
63
+
vlm_tools.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain_core.tools import tool
2
+
3
+ @tool
4
+ def download_image(image_url: str):
5
+ """
6
+ Download an image from a url
7
+ Args:
8
+ image_url: The url of the image to download
9
+ Returns:
10
+ The image as a base64 string
11
+ """
12
+ #download the image into a base64 string
13
+ image = None
14
+ return image
15
+
16
+ @tool
17
+ def image_processing(image: str):
18
+ """
19
+ Process an image
20
+ Args:
21
+ image: The image in base64 format to process
22
+ Returns:
23
+ The processed image
24
+ """
25
+ processed_image = None
26
+ return processed_image
27
+
28
+ @tool
29
+ def object_detection(image: str):
30
+ """
31
+ Detect objects in an image
32
+ Args:
33
+ image: The image in base64 format to detect objects in
34
+ Returns:
35
+ The detected objects
36
+ """
37
+ detected_objects = None
38
+ return detected_objects
39
+
40
+ @tool
41
+ def ocr_scan(image: str):
42
+ """
43
+ Scan an image for text
44
+ Args:
45
+ image: The image in base64 format to scan for text
46
+ Returns:
47
+ The text in the image
48
+ """
49
+ scanned_text = None
50
+ return scanned_text
51
+
52
+
53
+
54
+