Spaces:
Sleeping
Sleeping
import smolagents, numpy, math, xlrd, os, pandas | |
from smolagents import ( | |
Tool, | |
CodeAgent, | |
HfApiModel, | |
InferenceClientModel, | |
WebSearchTool, | |
PythonInterpreterTool, | |
FinalAnswerTool, | |
DuckDuckGoSearchTool, | |
GoogleSearchTool | |
) | |
#* | |
def read_excel(self, file_path, sheet_name=0): | |
""" | |
Read an Excel file into a pandas DataFrame. | |
Args: | |
file_path (str): Path to the Excel file. | |
sheet_name (str or int, optional): Sheet name or index. | |
Returns: | |
pandas.DataFrame or None | |
""" | |
try: | |
return pd.read_excel(file_path, sheet_name=sheet_name) | |
except Exception as e: | |
print(f"Error reading Excel file: {e}") | |
return None | |
# | |
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()] | |
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?", | |
#) |