Spaces:
Sleeping
Sleeping
EtienneB
commited on
Commit
·
0a05d57
1
Parent(s):
9a75fd8
updated tools and requirements
Browse files- agent.py +8 -14
- requirements.txt +1 -0
- tools.py +8 -13
agent.py
CHANGED
@@ -8,10 +8,10 @@ from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint
|
|
8 |
from langgraph.graph import START, MessagesState, StateGraph
|
9 |
from langgraph.prebuilt import ToolNode, tools_condition
|
10 |
|
11 |
-
from tools import (absolute, add, analyze_csv_file,
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
get_current_time_in_timezone, greatest_common_divisor,
|
16 |
is_prime, least_common_multiple, logarithm, modulus,
|
17 |
multiply, percentage_calculator, power, python_code_parser,
|
@@ -32,7 +32,7 @@ tools = [
|
|
32 |
is_prime, least_common_multiple, percentage_calculator,
|
33 |
wikipedia_search, analyze_excel_file, arxiv_search,
|
34 |
audio_transcription, python_code_parser, analyze_csv_file,
|
35 |
-
|
36 |
reverse_sentence, web_content_extract,
|
37 |
download_file,
|
38 |
]
|
@@ -73,13 +73,7 @@ You are an advanced AI agent equipped with multiple tools to solve complex, mult
|
|
73 |
- **Plan multi-tool sequences** - many questions require 2-5 tools in various combinations
|
74 |
- **Consider tool order flexibility** - tools can be used in any sequence that makes logical sense
|
75 |
- **Validate tool choice** - ensure the selected tool is the optimal match for your needs
|
76 |
-
|
77 |
-
- reserve_sentence -> read the reversed question and answer it.
|
78 |
-
- download_file -> analyze_csv_file -> add -> percentage_calculator
|
79 |
-
- reverse_sentence -> python_code_parser -> web_search -> extract_text_from_image
|
80 |
-
- arvix_search -> web_content_extract -> factorial -> roman_calculator_converter
|
81 |
-
- audio_transcription -> wikipedia_search -> compound_interest -> convert_temperature
|
82 |
-
|
83 |
4. **Multi-Step Problem Solving**: For complex questions:
|
84 |
- Break down the problem into logical steps
|
85 |
- Execute each step systematically, including any text transformations
|
@@ -113,7 +107,7 @@ You are an advanced AI agent equipped with multiple tools to solve complex, mult
|
|
113 |
- **download_file**: Download files from URLs or attachments
|
114 |
- **analyze_csv_file**: Analyze CSV file data
|
115 |
- **analyze_excel_file**: Analyze Excel file data
|
116 |
-
- **
|
117 |
- **audio_transcription**: Transcribe audio files to text
|
118 |
|
119 |
### Text Processing
|
@@ -137,7 +131,7 @@ You are an advanced AI agent equipped with multiple tools to solve complex, mult
|
|
137 |
- **Sequential Processing**: Use outputs from one tool as inputs for another when necessary
|
138 |
- **File Processing Priority**: Always download and process files before attempting to answer questions about them
|
139 |
- **Mathematical Chains**: Combine mathematical operations as needed (e.g., add -> multiply -> percentage_calculator)
|
140 |
-
- **Information + Processing**: Combine search tools with processing tools (e.g., web_search ->
|
141 |
- **Text Transformations**: Use text processing tools before analysis (e.g., reverse_sentence -> python_code_parser). In other words, first reverse the text when needed and then re-read the adjusted question.
|
142 |
- **Pattern Recognition**: Look for hidden patterns, instructions, or transformations within questions
|
143 |
|
|
|
8 |
from langgraph.graph import START, MessagesState, StateGraph
|
9 |
from langgraph.prebuilt import ToolNode, tools_condition
|
10 |
|
11 |
+
from tools import (absolute, add, analyze_csv_file, analyze_excel_file,
|
12 |
+
arxiv_search, audio_transcription, compound_interest,
|
13 |
+
convert_temperature, divide, download_file, exponential,
|
14 |
+
extract_text, factorial, floor_divide,
|
15 |
get_current_time_in_timezone, greatest_common_divisor,
|
16 |
is_prime, least_common_multiple, logarithm, modulus,
|
17 |
multiply, percentage_calculator, power, python_code_parser,
|
|
|
32 |
is_prime, least_common_multiple, percentage_calculator,
|
33 |
wikipedia_search, analyze_excel_file, arxiv_search,
|
34 |
audio_transcription, python_code_parser, analyze_csv_file,
|
35 |
+
extract_text,
|
36 |
reverse_sentence, web_content_extract,
|
37 |
download_file,
|
38 |
]
|
|
|
73 |
- **Plan multi-tool sequences** - many questions require 2-5 tools in various combinations
|
74 |
- **Consider tool order flexibility** - tools can be used in any sequence that makes logical sense
|
75 |
- **Validate tool choice** - ensure the selected tool is the optimal match for your needs
|
76 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
4. **Multi-Step Problem Solving**: For complex questions:
|
78 |
- Break down the problem into logical steps
|
79 |
- Execute each step systematically, including any text transformations
|
|
|
107 |
- **download_file**: Download files from URLs or attachments
|
108 |
- **analyze_csv_file**: Analyze CSV file data
|
109 |
- **analyze_excel_file**: Analyze Excel file data
|
110 |
+
- **extract_text**: Extract text from image files
|
111 |
- **audio_transcription**: Transcribe audio files to text
|
112 |
|
113 |
### Text Processing
|
|
|
131 |
- **Sequential Processing**: Use outputs from one tool as inputs for another when necessary
|
132 |
- **File Processing Priority**: Always download and process files before attempting to answer questions about them
|
133 |
- **Mathematical Chains**: Combine mathematical operations as needed (e.g., add -> multiply -> percentage_calculator)
|
134 |
+
- **Information + Processing**: Combine search tools with processing tools (e.g., web_search -> extract_text -> analyze_csv_file)
|
135 |
- **Text Transformations**: Use text processing tools before analysis (e.g., reverse_sentence -> python_code_parser). In other words, first reverse the text when needed and then re-read the adjusted question.
|
136 |
- **Pattern Recognition**: Look for hidden patterns, instructions, or transformations within questions
|
137 |
|
requirements.txt
CHANGED
@@ -14,6 +14,7 @@ langchain-huggingface
|
|
14 |
langfuse
|
15 |
langchain-google-genai
|
16 |
langchain-tavily
|
|
|
17 |
|
18 |
# Hugging Face integration
|
19 |
huggingface_hub
|
|
|
14 |
langfuse
|
15 |
langchain-google-genai
|
16 |
langchain-tavily
|
17 |
+
langchain-openai
|
18 |
|
19 |
# Hugging Face integration
|
20 |
huggingface_hub
|
tools.py
CHANGED
@@ -19,6 +19,7 @@ from langchain_core.messages import HumanMessage
|
|
19 |
# from langchain_community.tools import DuckDuckGoSearchRun
|
20 |
from langchain_core.tools import tool
|
21 |
from langchain_google_genai import ChatGoogleGenerativeAI
|
|
|
22 |
from langchain_tavily import TavilySearch
|
23 |
|
24 |
|
@@ -744,24 +745,18 @@ def analyze_csv_file(file_path: str, query: str) -> str:
|
|
744 |
except Exception as e:
|
745 |
return f"Error analyzing CSV file: {str(e)}"
|
746 |
|
747 |
-
|
748 |
-
|
749 |
-
vision_llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro",temperature=0)
|
750 |
|
751 |
@tool
|
752 |
-
def
|
753 |
"""
|
754 |
Extract text from an image file using a multimodal model.
|
755 |
-
|
756 |
-
|
757 |
-
img_path: A local image file path (strings).
|
758 |
-
|
759 |
-
Returns:
|
760 |
-
A single string containing the concatenated text extracted from each image.
|
761 |
"""
|
762 |
all_text = ""
|
763 |
try:
|
764 |
-
|
765 |
# Read image and encode as base64
|
766 |
with open(img_path, "rb") as image_file:
|
767 |
image_bytes = image_file.read()
|
@@ -797,11 +792,11 @@ def extract_text_from_image(img_path: str) -> str:
|
|
797 |
|
798 |
return all_text.strip()
|
799 |
except Exception as e:
|
800 |
-
#
|
801 |
error_msg = f"Error extracting text: {str(e)}"
|
802 |
print(error_msg)
|
803 |
return ""
|
804 |
-
|
805 |
|
806 |
@tool
|
807 |
def reverse_sentence(text: str) -> str:
|
|
|
19 |
# from langchain_community.tools import DuckDuckGoSearchRun
|
20 |
from langchain_core.tools import tool
|
21 |
from langchain_google_genai import ChatGoogleGenerativeAI
|
22 |
+
from langchain_openai import ChatOpenAI
|
23 |
from langchain_tavily import TavilySearch
|
24 |
|
25 |
|
|
|
745 |
except Exception as e:
|
746 |
return f"Error analyzing CSV file: {str(e)}"
|
747 |
|
748 |
+
|
749 |
+
vision_llm = ChatOpenAI(model="gpt-4o")
|
|
|
750 |
|
751 |
@tool
|
752 |
+
def extract_text(img_path: str) -> str:
|
753 |
"""
|
754 |
Extract text from an image file using a multimodal model.
|
755 |
+
|
756 |
+
This allows me to properly analyze the contents.
|
|
|
|
|
|
|
|
|
757 |
"""
|
758 |
all_text = ""
|
759 |
try:
|
|
|
760 |
# Read image and encode as base64
|
761 |
with open(img_path, "rb") as image_file:
|
762 |
image_bytes = image_file.read()
|
|
|
792 |
|
793 |
return all_text.strip()
|
794 |
except Exception as e:
|
795 |
+
# A butler should handle errors gracefully
|
796 |
error_msg = f"Error extracting text: {str(e)}"
|
797 |
print(error_msg)
|
798 |
return ""
|
799 |
+
|
800 |
|
801 |
@tool
|
802 |
def reverse_sentence(text: str) -> str:
|