Bandook01 commited on
Commit
3839dec
·
1 Parent(s): 00f9b1c

add more tools

Browse files
Files changed (3) hide show
  1. app.py +8 -7
  2. requirements.txt +4 -0
  3. tools.py +62 -0
app.py CHANGED
@@ -3,8 +3,8 @@ import gradio as gr
3
  import requests
4
  import inspect
5
  import pandas as pd
6
- from tools import ReverseTextTool, RunPythonFileTool, download_server, wiki_tool
7
- from llama_index.llms.gemini import Gemini
8
  import os
9
  from dotenv import load_dotenv
10
  from llama_index.llms.huggingface_api import HuggingFaceInferenceAPI
@@ -41,8 +41,9 @@ Tool Use Guidelines:
41
  5. For logic or word puzzles, solve them directly unless they are reversed — in which case, decode first using **ReverseTextTool**.
42
  6. When dealing with Excel files, prioritize using the **excel** tool over writing code in **terminal-controller**.
43
  7. If you need to download a file, always use the **download_server** tool and save it to the correct path.
44
- 8. Even for complex tasks, assume a solution exists. If one method fails, try another approach using different tools.
45
- 9. Due to context length limits, keep browser-based tasks (e.g., searches) as short and efficient as possible.
 
46
  """
47
 
48
 
@@ -53,12 +54,12 @@ class BasicAgent:
53
  gemini_api_key = os.getenv("GEMINI_API_KEY")
54
  if not gemini_api_key:
55
  raise ValueError("GEMINI_API_KEY not set in environment variables.")
56
- llm = Gemini(
57
- model="models/gemini-2.0-flash",
58
  api_key=gemini_api_key,
59
  )
60
  agent = FunctionAgent(
61
- tools=LoadAndSearchToolSpec.from_defaults([ReverseTextTool,RunPythonFileTool,download_server,wiki_tool]).to_tool_list(),
62
  llm=llm,
63
  system_prompt=SYSTEM_PROMPT,
64
  )
 
3
  import requests
4
  import inspect
5
  import pandas as pd
6
+ from tools import ReverseTextTool, RunPythonFileTool, download_server, wiki_tool,YoutubeTranscript
7
+ from llama_index.llms.google_genai import GoogleGenAI
8
  import os
9
  from dotenv import load_dotenv
10
  from llama_index.llms.huggingface_api import HuggingFaceInferenceAPI
 
41
  5. For logic or word puzzles, solve them directly unless they are reversed — in which case, decode first using **ReverseTextTool**.
42
  6. When dealing with Excel files, prioritize using the **excel** tool over writing code in **terminal-controller**.
43
  7. If you need to download a file, always use the **download_server** tool and save it to the correct path.
44
+ 8. To find information about what was said in a video use **YoutubeTranscript** tool to get the transcript and find the correct answer to the asked question
45
+ 9. Even for complex tasks, assume a solution exists. If one method fails, try another approach using different tools.
46
+ 10. Due to context length limits, keep browser-based tasks (e.g., searches) as short and efficient as possible.
47
  """
48
 
49
 
 
54
  gemini_api_key = os.getenv("GEMINI_API_KEY")
55
  if not gemini_api_key:
56
  raise ValueError("GEMINI_API_KEY not set in environment variables.")
57
+ llm = GoogleGenAI(
58
+ model="gemini-2.0-flash",
59
  api_key=gemini_api_key,
60
  )
61
  agent = FunctionAgent(
62
+ tools=[ReverseTextTool,RunPythonFileTool,download_server,wiki_tool,YoutubeTranscript],
63
  llm=llm,
64
  system_prompt=SYSTEM_PROMPT,
65
  )
requirements.txt CHANGED
@@ -18,6 +18,10 @@ llama-index-llms-gemini
18
  chessimg2pos
19
  llama-index-llms-huggingface-api
20
  llama-index-embeddings-huggingface
 
 
 
 
21
 
22
  # smol developer agent tools
23
  smolagents[litellm]
 
18
  chessimg2pos
19
  llama-index-llms-huggingface-api
20
  llama-index-embeddings-huggingface
21
+ llama-index-llms-google-genai
22
+ llama-hub-youtube-transcript
23
+ llama-index-readers-youtube-transcript
24
+ llama-index-readers-file
25
 
26
  # smol developer agent tools
27
  smolagents[litellm]
tools.py CHANGED
@@ -6,6 +6,68 @@ from llama_index.core.tools.tool_spec.load_and_search import (
6
  )
7
  from llama_index.tools.wikipedia import WikipediaToolSpec
8
  #from recognizer import predict_fen
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
 
11
 
 
6
  )
7
  from llama_index.tools.wikipedia import WikipediaToolSpec
8
  #from recognizer import predict_fen
9
+ from llama_index.readers.youtube_transcript import YoutubeTranscriptReader
10
+ from llama_index.readers.file import (
11
+ DocxReader,
12
+ HWPReader,
13
+ PDFReader,
14
+ EpubReader,
15
+ FlatReader,
16
+ HTMLTagReader,
17
+ ImageCaptionReader,
18
+ ImageReader,
19
+ ImageVisionLLMReader,
20
+ IPYNBReader,
21
+ MarkdownReader,
22
+ MboxReader,
23
+ PptxReader,
24
+ PandasCSVReader,
25
+ VideoAudioReader,
26
+ UnstructuredReader,
27
+ PyMuPDFReader,
28
+ ImageTabularChartReader,
29
+ XMLReader,
30
+ PagedCSVReader,
31
+ CSVReader,
32
+ RTFReader,
33
+ )
34
+
35
+ def ImageReaderTool(text:str) -> str:
36
+ """Image reader takes image files and parse it for llm to use"""
37
+ parser = ImageReader()
38
+ file_extractor = {
39
+ ".jpg": parser,
40
+ ".jpeg": parser,
41
+ ".png": parser,
42
+ } # Add other image formats as needed
43
+ documents = SimpleDirectoryReader(
44
+ "./data", file_extractor=file_extractor
45
+ ).load_data()
46
+ return documents
47
+
48
+ def CSVReaderTool(path: str) -> str:
49
+ """CSV reader takes csv file and parse it for llm to use"""
50
+ parser = CSVReader()
51
+ file_extractor = {".csv": parser} # Add other CSV formats as needed
52
+ documents = SimpleDirectoryReader(
53
+ "./data", file_extractor=file_extractor
54
+ ).load_data()
55
+ return documents
56
+
57
+ def YoutubeTranscript(link: str) -> str:
58
+ """
59
+ Get video transcript from youtube link
60
+ Args:
61
+ link (str): youtube link
62
+ Returns:
63
+ str: transcript of video to llm
64
+ """
65
+
66
+ loader = YoutubeTranscriptReader()
67
+ documents = loader.load_data(
68
+ ytlinks=[link]
69
+ )
70
+ return documents
71
 
72
 
73