Spaces:
Sleeping
Sleeping
| import smolagents, numpy, math, xlrd, os | |
| import pandas as pd | |
| from typing import Union | |
| from smolagents import ( | |
| tool, | |
| CodeAgent, | |
| HfApiModel, | |
| InferenceClientModel, | |
| WebSearchTool, | |
| PythonInterpreterTool, | |
| FinalAnswerTool, | |
| DuckDuckGoSearchTool, | |
| GoogleSearchTool | |
| ) | |
| #* | |
| def analyze_excel_file(file_path: str, query: str) -> str: | |
| """ | |
| Analyze an Excel file using pandas and answer a question about it. | |
| Args: | |
| file_path: Path to the Excel file | |
| query: Question about the data | |
| Returns: | |
| Analysis result or error message | |
| """ | |
| try: | |
| import pandas as pd | |
| # Read the Excel file | |
| df = pd.read_excel(file_path) | |
| # Run various analyses based on the query | |
| result = f"Excel file loaded with {len(df)} rows and {len(df.columns)} columns.\n" | |
| result += f"Columns: {', '.join(df.columns)}\n\n" | |
| # Add summary statistics | |
| result += "Summary statistics:\n" | |
| result += str(df.describe()) | |
| return result | |
| except ImportError: | |
| return "Error: pandas and openpyxl are not installed. Please install them with 'pip install pandas openpyxl'." | |
| except Exception as e: | |
| return f"Error analyzing Excel file: {str(e)}" | |
| # | |
| class newAgent: | |
| """Adapts smolagents.CodeAgent to the HF course template API.""" | |
| def __init__(self): | |
| model_id = "meta-llama/Meta-Llama-3-70B-Instruct" # correct repo name | |
| hf_token = os.getenv("HUGGINGFACEHUB_API_TOKEN") # read real secret | |
| if not hf_token: | |
| raise RuntimeError("HUGGINGFACEHUB_API_TOKEN not set in Space secrets") | |
| #* | |
| system_prompt=( | |
| "You are an agent that answers exam questions." | |
| "Your answers should contain only what is asked for in the question, without any other content." | |
| "Be exact and concise in your answers to get a good score on the exam questions. Do not add explanation to the answers." | |
| "If you are ask for a list of items, reply with ONLY those items separated by commas, no other text." | |
| "You have a tool to read Excel files. The Excel file tool is named read_excel" | |
| ) | |
| #* | |
| model = HfApiModel(model_id=model_id, token=hf_token) | |
| # include FinalAnswerTool in tools so agent knows when to stop | |
| tools = [FinalAnswerTool(), read_excel] | |
| self.agent = CodeAgent( | |
| tools=tools, | |
| model=model, | |
| add_base_tools=True, | |
| max_steps=5 # limit reasoning time | |
| ) | |
| def __call__(self, question: str) -> str: | |
| """ONE question in → ONE pure-text answer out.""" | |
| #↓ Replace .run with whatever method actually returns the answer string. | |
| result = self.agent.run(question) | |
| return result | |
| #answer = self.run | |
| #agent.run( | |
| # "At what temperature and for how long should I bake French baguettes made with type 65 flour?", | |
| #) |