naman1102 commited on
Commit
ebf7d5c
Β·
1 Parent(s): 5b43bea

Update tools.py

Browse files
Files changed (1) hide show
  1. tools.py +136 -79
tools.py CHANGED
@@ -45,8 +45,16 @@ def _download_file_for_task(task_id: str, ext: str) -> str:
45
  @tool
46
  def image_tool(task_id: str) -> str:
47
  """
48
- Expects: task_id (str) β€” a valid image task ID.
49
- Returns: image caption from Hugging Face API or error message.
 
 
 
 
 
 
 
 
50
  """
51
 
52
  import requests, os
@@ -111,12 +119,16 @@ def image_tool(task_id: str) -> str:
111
  @tool
112
  def excel_tool(task_id: str) -> str:
113
  """
114
- Downloads <task_id>.xlsx (if any) and returns a stringified list of
115
- records from the specified sheet. No fallback to user-supplied tables.
116
- Expected keys in `task_id`:
117
- β€’ task_id – required (used to download the file)
118
 
119
- returns: stringified list of records from the specified sheet
 
 
 
 
 
120
  """
121
  print("reached excel_tool")
122
  sheet = "Sheet1"
@@ -141,11 +153,16 @@ import openai
141
  @tool
142
  def audio_transcriber_tool(task_id: str) -> str:
143
  """
144
- LangGraph tool for transcribing audio via OpenAI's Whisper API.
145
- Expects: task_id is a string
146
- Returns:
147
- "<text or error message>"
148
- Always attempts to download the file for the given path or task ID.
 
 
 
 
 
149
  """
150
  print("reached audio_transcriber_tool")
151
 
@@ -188,11 +205,16 @@ import requests
188
  @tool
189
  def wikipedia_search_tool(wiki_query: str) -> str:
190
  """
191
- Searches Wikipedia for the given query and returns the first 5 pages.
192
- Expects: wiki_query is a non‐empty string.
193
- Returns: text summary of first matching page or an error message>"
194
-
195
- If no valid wiki_query is provided, returns {}.
 
 
 
 
 
196
  """
197
  print(f"DEBUG: reached wikipedia_search_tool with query: {wiki_query}")
198
  try:
@@ -252,9 +274,16 @@ def wikipedia_search_tool(wiki_query: str) -> str:
252
  @tool
253
  def arxiv_search_tool(arxiv_query: str) -> str:
254
  """
255
- Searches Arxiv for the given query and returns the first 5 pages.
256
- Expects: arxiv_query is a non‐empty string.
257
- Returns: text summary of first matching page or an error message>"
 
 
 
 
 
 
 
258
  """
259
  print(f"DEBUG: reached arxiv_search_tool with query: {arxiv_query}")
260
  try:
@@ -321,12 +350,16 @@ LLM = ChatOpenAI(model_name="gpt-4o-mini", temperature=0.2)
321
  @tool
322
  def analyze_code_tool(task_id: str) -> str:
323
  """
324
- Either task_id OR (file + task_id)
325
- Reads the code (max 400 lines / 10 kB) and asks the LLM for:
326
- β€’ plain-language summary
327
- β€’ list of key functions/classes
328
- β€’ obvious bugs or style smells
329
- Returns that analysis as a string.
 
 
 
 
330
  """
331
  print("reached analyze_code_tool")
332
  code_txt = ""
@@ -357,6 +390,82 @@ def analyze_code_tool(task_id: str) -> str:
357
  return LLM.invoke(prompt).content.strip()
358
 
359
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  # def web_search_tool(state: AgentState) -> AgentState:
361
  # """
362
  # Expects: state["web_search_query"] is a non‐empty string.
@@ -404,56 +513,4 @@ def analyze_code_tool(task_id: str) -> str:
404
  # return {
405
  # "web_search_query": None,
406
  # "web_search_result": result_text
407
- # }
408
-
409
- # ─────────────────────────── Math Tools ───────────────────────────────
410
-
411
- @tool
412
- def add_tool(a: float, b: float) -> str:
413
- """
414
- Add two numbers.
415
- Args:
416
- a: First number
417
- b: Second number
418
- Returns: The sum of a and b
419
- """
420
- result = a + b
421
- return f"Addition result: {a} + {b} = {result}"
422
-
423
- @tool
424
- def subtract_tool(a: float, b: float) -> str:
425
- """
426
- Subtract two numbers.
427
- Args:
428
- a: First number (minuend)
429
- b: Second number (subtrahend)
430
- Returns: The difference of a minus b
431
- """
432
- result = a - b
433
- return f"Subtraction result: {a} - {b} = {result}"
434
-
435
- @tool
436
- def multiply_tool(a: float, b: float) -> str:
437
- """
438
- Multiply two numbers.
439
- Args:
440
- a: First number
441
- b: Second number
442
- Returns: The product of a and b
443
- """
444
- result = a * b
445
- return f"Multiplication result: {a} Γ— {b} = {result}"
446
-
447
- @tool
448
- def divide_tool(a: float, b: float) -> str:
449
- """
450
- Divide two numbers.
451
- Args:
452
- a: First number (dividend)
453
- b: Second number (divisor)
454
- Returns: The quotient of a divided by b
455
- """
456
- if b == 0:
457
- return "Division error: Cannot divide by zero"
458
- result = a / b
459
- return f"Division result: {a} Γ· {b} = {result}"
 
45
  @tool
46
  def image_tool(task_id: str) -> str:
47
  """
48
+ TOOL NAME: Image Analysis Tool
49
+
50
+ Purpose: When the user asks about images, photos, or visual content, use this tool to get a description of the image.
51
+
52
+ Input: A task_id string that identifies the specific image to analyze.
53
+
54
+ Example usage:
55
+ - "What is shown in this image?"
56
+ - "Describe the contents of the picture"
57
+ - "What objects are visible in the photo?"
58
  """
59
 
60
  import requests, os
 
119
  @tool
120
  def excel_tool(task_id: str) -> str:
121
  """
122
+ TOOL NAME: Excel Data Analysis Tool
123
+
124
+ Purpose: When the user asks about data in spreadsheets, tables, or Excel files, use this tool to read and analyze the data.
 
125
 
126
+ Input: A task_id string that identifies the specific Excel file to analyze.
127
+
128
+ Example usage:
129
+ - "What data is in this spreadsheet?"
130
+ - "Analyze the Excel file contents"
131
+ - "Show me the data from the table"
132
  """
133
  print("reached excel_tool")
134
  sheet = "Sheet1"
 
153
  @tool
154
  def audio_transcriber_tool(task_id: str) -> str:
155
  """
156
+ TOOL NAME: Audio Transcription Tool
157
+
158
+ Purpose: When the user asks about audio files, speech, or wants to know what was said in an audio recording, use this tool.
159
+
160
+ Input: A task_id string that identifies the specific audio file to transcribe.
161
+
162
+ Example usage:
163
+ - "What is said in this audio file?"
164
+ - "Transcribe the speech from the recording"
165
+ - "Convert the audio to text"
166
  """
167
  print("reached audio_transcriber_tool")
168
 
 
205
  @tool
206
  def wikipedia_search_tool(wiki_query: str) -> str:
207
  """
208
+ TOOL NAME: Wikipedia Search Tool
209
+
210
+ Purpose: When the user asks for historical, biographical, scientific, or factual information, use this tool.
211
+
212
+ Input: A string describing a topic to search on Wikipedia.
213
+
214
+ Example usage:
215
+ - "Who was Marie Curie?"
216
+ - "Explain quantum entanglement"
217
+ - "Tell me about the French Revolution"
218
  """
219
  print(f"DEBUG: reached wikipedia_search_tool with query: {wiki_query}")
220
  try:
 
274
  @tool
275
  def arxiv_search_tool(arxiv_query: str) -> str:
276
  """
277
+ TOOL NAME: ArXiv Academic Search Tool
278
+
279
+ Purpose: When the user asks for academic research, scientific papers, or technical information, use this tool.
280
+
281
+ Input: A string describing the academic topic to search for on ArXiv.
282
+
283
+ Example usage:
284
+ - "Find research papers about machine learning"
285
+ - "What are recent studies on climate change?"
286
+ - "Search for papers on quantum computing"
287
  """
288
  print(f"DEBUG: reached arxiv_search_tool with query: {arxiv_query}")
289
  try:
 
350
  @tool
351
  def analyze_code_tool(task_id: str) -> str:
352
  """
353
+ TOOL NAME: Code Analysis Tool
354
+
355
+ Purpose: When the user asks about code, programming files, or wants to understand what a script does, use this tool.
356
+
357
+ Input: A task_id string that identifies the specific code file to analyze.
358
+
359
+ Example usage:
360
+ - "What does this Python code do?"
361
+ - "Analyze the code file for bugs"
362
+ - "Explain the functions in this script"
363
  """
364
  print("reached analyze_code_tool")
365
  code_txt = ""
 
390
  return LLM.invoke(prompt).content.strip()
391
 
392
 
393
+
394
+ # ─────────────────────────── Math Tools ───���───────────────────────────
395
+
396
+ @tool
397
+ def add_tool(a: float, b: float) -> str:
398
+ """
399
+ TOOL NAME: Addition Tool
400
+
401
+ Purpose: When the user asks to add numbers or perform addition calculations, use this tool.
402
+
403
+ Input: Two numbers (a and b) to add together.
404
+
405
+ Example usage:
406
+ - "What is 25 + 17?"
407
+ - "Add 3.14 and 2.86"
408
+ - "Calculate the sum of 100 and 250"
409
+ """
410
+ result = a + b
411
+ return f"Addition result: {a} + {b} = {result}"
412
+
413
+ @tool
414
+ def subtract_tool(a: float, b: float) -> str:
415
+ """
416
+ TOOL NAME: Subtraction Tool
417
+
418
+ Purpose: When the user asks to subtract numbers or perform subtraction calculations, use this tool.
419
+
420
+ Input: Two numbers (a and b) where b is subtracted from a.
421
+
422
+ Example usage:
423
+ - "What is 50 - 23?"
424
+ - "Subtract 15.5 from 40.2"
425
+ - "Calculate 1000 minus 347"
426
+ """
427
+ result = a - b
428
+ return f"Subtraction result: {a} - {b} = {result}"
429
+
430
+ @tool
431
+ def multiply_tool(a: float, b: float) -> str:
432
+ """
433
+ TOOL NAME: Multiplication Tool
434
+
435
+ Purpose: When the user asks to multiply numbers or perform multiplication calculations, use this tool.
436
+
437
+ Input: Two numbers (a and b) to multiply together.
438
+
439
+ Example usage:
440
+ - "What is 8 Γ— 7?"
441
+ - "Multiply 12.5 by 4"
442
+ - "Calculate the product of 15 and 20"
443
+ """
444
+ result = a * b
445
+ return f"Multiplication result: {a} Γ— {b} = {result}"
446
+
447
+ @tool
448
+ def divide_tool(a: float, b: float) -> str:
449
+ """
450
+ TOOL NAME: Division Tool
451
+
452
+ Purpose: When the user asks to divide numbers or perform division calculations, use this tool.
453
+
454
+ Input: Two numbers (a and b) where a is divided by b.
455
+
456
+ Example usage:
457
+ - "What is 100 Γ· 4?"
458
+ - "Divide 75 by 3"
459
+ - "Calculate 144 divided by 12"
460
+ """
461
+ if b == 0:
462
+ return "Division error: Cannot divide by zero"
463
+ result = a / b
464
+ return f"Division result: {a} Γ· {b} = {result}"
465
+
466
+
467
+
468
+
469
  # def web_search_tool(state: AgentState) -> AgentState:
470
  # """
471
  # Expects: state["web_search_query"] is a non‐empty string.
 
513
  # return {
514
  # "web_search_query": None,
515
  # "web_search_result": result_text
516
+ # }