Update app.py
Browse filesGetting files locally as fallback for 429 errors, also added testing condition
app.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
from smolagents import CodeAgent, DuckDuckGoSearchTool, Tool, HfApiModel, LiteLLMModel, load_tool, tool
|
| 2 |
import datetime
|
| 3 |
import pytz
|
|
|
|
| 4 |
import time
|
| 5 |
import wikipediaapi
|
| 6 |
import yaml
|
|
@@ -32,7 +33,7 @@ image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_co
|
|
| 32 |
|
| 33 |
class AudioDescriptionTool(Tool):
|
| 34 |
name = "audio_description"
|
| 35 |
-
description = "This is a tool that will describe
|
| 36 |
inputs = {
|
| 37 |
"file_name": {
|
| 38 |
"type": "string",
|
|
@@ -55,6 +56,7 @@ class AudioDescriptionTool(Tool):
|
|
| 55 |
return False
|
| 56 |
|
| 57 |
audio_description_tool = AudioDescriptionTool()
|
|
|
|
| 58 |
class FetchFileTool(Tool):
|
| 59 |
name = "file_saver"
|
| 60 |
description = """
|
|
@@ -76,16 +78,26 @@ class FetchFileTool(Tool):
|
|
| 76 |
}
|
| 77 |
output_type = "boolean"
|
| 78 |
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
full_path = os.path.join(file_path, file_name)
|
| 85 |
-
|
| 86 |
-
out_file.write(content)
|
| 87 |
return True
|
| 88 |
-
|
| 89 |
print(f"Error saving content to file: {e}")
|
| 90 |
return False
|
| 91 |
|
|
@@ -241,7 +253,9 @@ def run_and_submit_all( profile: gr.OAuthProfile | None):
|
|
| 241 |
continue
|
| 242 |
try:
|
| 243 |
# check if the file_name is not empty
|
| 244 |
-
|
|
|
|
|
|
|
| 245 |
question_text = f"{question_text} Here is the file: https://agents-course-unit4-scoring.hf.space/files/{item.get('task_id')}"
|
| 246 |
else:
|
| 247 |
continue
|
|
@@ -258,7 +272,7 @@ def run_and_submit_all( profile: gr.OAuthProfile | None):
|
|
| 258 |
print("Agent did not produce any answers to submit.")
|
| 259 |
return "Agent did not produce any answers to submit.", pd.DataFrame(results_log)
|
| 260 |
|
| 261 |
-
|
| 262 |
|
| 263 |
# 4. Prepare Submission
|
| 264 |
# submission_data = {"username": username.strip(), "agent_code": agent_code, "answers": answers_payload}
|
|
|
|
| 1 |
from smolagents import CodeAgent, DuckDuckGoSearchTool, Tool, HfApiModel, LiteLLMModel, load_tool, tool
|
| 2 |
import datetime
|
| 3 |
import pytz
|
| 4 |
+
import shutil
|
| 5 |
import time
|
| 6 |
import wikipediaapi
|
| 7 |
import yaml
|
|
|
|
| 33 |
|
| 34 |
class AudioDescriptionTool(Tool):
|
| 35 |
name = "audio_description"
|
| 36 |
+
description = "This is a tool that will describe a local audio clip."
|
| 37 |
inputs = {
|
| 38 |
"file_name": {
|
| 39 |
"type": "string",
|
|
|
|
| 56 |
return False
|
| 57 |
|
| 58 |
audio_description_tool = AudioDescriptionTool()
|
| 59 |
+
|
| 60 |
class FetchFileTool(Tool):
|
| 61 |
name = "file_saver"
|
| 62 |
description = """
|
|
|
|
| 78 |
}
|
| 79 |
output_type = "boolean"
|
| 80 |
|
| 81 |
+
def forward(self, location: str, file_path: str, file_name: str):
|
| 82 |
+
try:
|
| 83 |
+
response = requests.get(location)
|
| 84 |
+
response.raise_for_status()
|
| 85 |
+
content = response.content
|
| 86 |
+
full_path = os.path.join(file_path, file_name)
|
| 87 |
+
with open(full_path, 'wb') as out_file:
|
| 88 |
+
out_file.write(content)
|
| 89 |
+
return True
|
| 90 |
+
|
| 91 |
+
except Exception as e:
|
| 92 |
+
# if error is HTTP 429 then copy from /files
|
| 93 |
+
if response.status_code == 429:
|
| 94 |
+
# get last part of location separated by slash
|
| 95 |
+
file_id = location.split('/')[-1]
|
| 96 |
+
local_path = f"files/{file_id}"
|
| 97 |
full_path = os.path.join(file_path, file_name)
|
| 98 |
+
shutil.copy(local_path, full_path)
|
|
|
|
| 99 |
return True
|
| 100 |
+
else:
|
| 101 |
print(f"Error saving content to file: {e}")
|
| 102 |
return False
|
| 103 |
|
|
|
|
| 253 |
continue
|
| 254 |
try:
|
| 255 |
# check if the file_name is not empty
|
| 256 |
+
# 99c9cc74-fdc8-46c6-8f8d-3ce2d3bfeea3"
|
| 257 |
+
if item.get("task_id") == "99c9cc74-fdc8-46c6-8f8d-3ce2d3bfeea3":
|
| 258 |
+
# if item.get("file_name"):
|
| 259 |
question_text = f"{question_text} Here is the file: https://agents-course-unit4-scoring.hf.space/files/{item.get('task_id')}"
|
| 260 |
else:
|
| 261 |
continue
|
|
|
|
| 272 |
print("Agent did not produce any answers to submit.")
|
| 273 |
return "Agent did not produce any answers to submit.", pd.DataFrame(results_log)
|
| 274 |
|
| 275 |
+
return "Questions parsed.", pd.DataFrame(results_log)
|
| 276 |
|
| 277 |
# 4. Prepare Submission
|
| 278 |
# submission_data = {"username": username.strip(), "agent_code": agent_code, "answers": answers_payload}
|