Spaces:
Runtime error
Runtime error
| from smolagents import AzureOpenAIServerModel, CodeAgent, ToolCallingAgent, tool, load_tool, DuckDuckGoSearchTool, WikipediaSearchTool, VisitWebpageTool | |
| import pandas as pd | |
| import os | |
| from requests.exceptions import HTTPError | |
| from dotenv import load_dotenv | |
| from tempfile import TemporaryFile | |
| import requests | |
| from io import BytesIO | |
| from typing import IO, Union | |
| load_dotenv() | |
| model = AzureOpenAIServerModel( | |
| model_id = os.environ.get("AZURE_OPENAI_MODEL"), | |
| azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"), | |
| api_key=os.environ.get("AZURE_OPENAI_API_KEY"), | |
| api_version=os.environ.get("OPENAI_API_VERSION"), | |
| max_tokens=4096 | |
| ) | |
| def get_remote_file(url: str) -> IO: | |
| """This tool downloads a file using the requests package, which is often successful in downloading a file when other methods meet a HTTP Error 403: Forbidden. | |
| It returns IO which can be used as if it were a file in other fuctions which expect file data. The URL must be for the file itself, not a page. | |
| Args: | |
| url (str): Web address of file to download. | |
| Returns: | |
| IO: Bytes data | |
| """ | |
| # Send a GET request to the URL | |
| response = requests.get(url) | |
| # Check if the request was successful | |
| if response.status_code == 200: | |
| # Use BytesIO to read the content of the response as a binary stream | |
| return BytesIO(response.content) | |
| else: | |
| print(f"Failed to retrieve the file. Status code: {response.status_code}") | |
| def excel_reader(file_data: IO) -> pd.DataFrame: | |
| """ | |
| This tool returns a pandas dataframe from a file locally, from a URL or from bytes data. | |
| Args: | |
| file_data: A file location as a string (either a local file or url of xlsx file) or IO file data of an xlsx to read in as a dataframe. | |
| If a file is forbidden to be accessed directly, another approach is to download the file data with get_remote_file as bytes and use that instead of a URL. | |
| """ | |
| return pd.read_excel(file_data, engine="openpyxl") | |
| def string_reverser(text: str) -> str: | |
| """Reverses a string. This can be useful to try if initially a prompt or string seems uninelligable. | |
| Args: | |
| text (str): String that cannot be understood. | |
| Returns: | |
| str: Reversed string | |
| """ | |
| return text[::-1] | |