|
import os |
|
import requests |
|
from smolagents import Tool |
|
from managers.file_manager import FileManager |
|
|
|
|
|
class FetchURLContentTool(Tool): |
|
name = "fetch_url_content" |
|
description = "Downloads the content or file at the given url and returns the local path of the downloaded file." |
|
inputs = { |
|
"url": { |
|
"type": "string", |
|
"description": "The url of the content or file to download." |
|
} |
|
} |
|
output_type = "string" |
|
|
|
def forward(self, url: str) -> str: |
|
try: |
|
headers = { |
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' |
|
} |
|
response = requests.get(url, headers=headers) |
|
response.raise_for_status() |
|
suffix = os.path.splitext(url)[-1] or '.bin' |
|
return "The path of the downloaded file is: " + FileManager.create_temp_file(response.content, suffix) |
|
except Exception as e: |
|
return f"Error fetch_url_content is not working properly, error: {e}, please skip this tool" |
|
|
|
|