Spaces:
Sleeping
Sleeping
EtienneB
commited on
Commit
·
4e8db54
1
Parent(s):
05454e1
updated
Browse files- requirements.txt +5 -0
- tools.py +14 -6
requirements.txt
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
# UI and OAuth
|
| 2 |
gradio[oauth]
|
| 3 |
requests
|
|
|
|
| 4 |
|
| 5 |
# LangChain and ecosystem
|
| 6 |
langchain
|
|
@@ -15,3 +16,7 @@ accelerate # Needed for many transformer-based models
|
|
| 15 |
|
| 16 |
# Environment config
|
| 17 |
python-dotenv
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
# UI and OAuth
|
| 2 |
gradio[oauth]
|
| 3 |
requests
|
| 4 |
+
pandas
|
| 5 |
|
| 6 |
# LangChain and ecosystem
|
| 7 |
langchain
|
|
|
|
| 16 |
|
| 17 |
# Environment config
|
| 18 |
python-dotenv
|
| 19 |
+
|
| 20 |
+
# Tools dependencies
|
| 21 |
+
duckduckgo-search # Required for web_search tool
|
| 22 |
+
pytz # Required for get_current_time_in_timezone tool
|
tools.py
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
|
|
| 1 |
import math
|
| 2 |
|
|
|
|
| 3 |
from langchain_community.tools import DuckDuckGoSearchRun
|
| 4 |
from langchain_core.tools import tool
|
| 5 |
|
|
@@ -196,12 +198,12 @@ def web_search(query: str) -> str:
|
|
| 196 |
|
| 197 |
|
| 198 |
@tool
|
| 199 |
-
def roman_calculator_converter(value1:int, value2:int, oper:str) -> str:
|
| 200 |
"""A tool that performs an operator on 2 numbers to calculate the result
|
| 201 |
Args:
|
| 202 |
value1: the first value
|
| 203 |
value2: the second value
|
| 204 |
-
oper: operator for the calculation, like "add", "
|
| 205 |
"""
|
| 206 |
roman_numerals = {
|
| 207 |
1000: "M", 900: "CM", 500: "D", 400: "CD",
|
|
@@ -213,19 +215,25 @@ def roman_calculator_converter(value1:int, value2:int, oper:str) -> str:
|
|
| 213 |
if oper == "add":
|
| 214 |
result = value1 + value2
|
| 215 |
elif oper == "subtract":
|
| 216 |
-
result = value2 - value1
|
| 217 |
elif oper == "divide":
|
| 218 |
-
|
|
|
|
|
|
|
| 219 |
elif oper == "multiply":
|
| 220 |
result = value1 * value2
|
| 221 |
-
|
| 222 |
else:
|
| 223 |
-
return "Unsupported operation. Please use 'add' or '
|
|
|
|
|
|
|
|
|
|
|
|
|
| 224 |
|
| 225 |
for value, numeral in roman_numerals.items():
|
| 226 |
while result >= value:
|
| 227 |
roman_string += numeral
|
| 228 |
result -= value
|
|
|
|
| 229 |
return f"The result of {oper} on the values {value1} and {value2} is the Roman numeral: {roman_string}"
|
| 230 |
|
| 231 |
|
|
|
|
| 1 |
+
import datetime
|
| 2 |
import math
|
| 3 |
|
| 4 |
+
import pytz
|
| 5 |
from langchain_community.tools import DuckDuckGoSearchRun
|
| 6 |
from langchain_core.tools import tool
|
| 7 |
|
|
|
|
| 198 |
|
| 199 |
|
| 200 |
@tool
|
| 201 |
+
def roman_calculator_converter(value1: int, value2: int, oper: str) -> str:
|
| 202 |
"""A tool that performs an operator on 2 numbers to calculate the result
|
| 203 |
Args:
|
| 204 |
value1: the first value
|
| 205 |
value2: the second value
|
| 206 |
+
oper: operator for the calculation, like "add", "subtract", "multiply", "divide"
|
| 207 |
"""
|
| 208 |
roman_numerals = {
|
| 209 |
1000: "M", 900: "CM", 500: "D", 400: "CD",
|
|
|
|
| 215 |
if oper == "add":
|
| 216 |
result = value1 + value2
|
| 217 |
elif oper == "subtract":
|
| 218 |
+
result = value1 - value2 # Fixed: was value2 - value1
|
| 219 |
elif oper == "divide":
|
| 220 |
+
if value2 == 0:
|
| 221 |
+
return "Error: Division by zero is not allowed"
|
| 222 |
+
result = int(value1 / value2) # Convert to int for Roman numerals
|
| 223 |
elif oper == "multiply":
|
| 224 |
result = value1 * value2
|
|
|
|
| 225 |
else:
|
| 226 |
+
return "Unsupported operation. Please use 'add', 'subtract', 'multiply', or 'divide'."
|
| 227 |
+
|
| 228 |
+
# Handle negative results
|
| 229 |
+
if result <= 0:
|
| 230 |
+
return f"Error: Roman numerals cannot represent zero or negative numbers. Result was: {result}"
|
| 231 |
|
| 232 |
for value, numeral in roman_numerals.items():
|
| 233 |
while result >= value:
|
| 234 |
roman_string += numeral
|
| 235 |
result -= value
|
| 236 |
+
|
| 237 |
return f"The result of {oper} on the values {value1} and {value2} is the Roman numeral: {roman_string}"
|
| 238 |
|
| 239 |
|