import os import gradio as gr import requests import inspect import pandas as pd #import smolagents #to test from smolagents import CodeAgent, InferenceClientModel, DuckDuckGoSearchTool, HfApiModel, load_tool, tool from huggingface_hub import InferenceClient import json from final_answer import FinalAnswerTool api_url = "https://agents-course-unit4-scoring.hf.space" questions_url = f"{api_url}/questions" submit_url = f"{api_url}/submit" class BasicAgent: def __init__(self): print("BasicAgent initialized.") def __call__(self, question: str) -> str: print(f"Agent received question (first 50 chars): {question[:50]}...") fixed_answer = "This is a default answer." print(f"Agent returning fixed answer: {fixed_answer}") return fixed_answer def load_questions_from_file(filepath="questions.json"): try: with open(filepath, "r", encoding="utf-8") as f: questions_data = json.load(f) if not questions_data: print("Loaded file is empty.") return "Loaded file is empty.", None print(f"Loaded {len(questions_data)} questions from file.") return "Loaded questions successfully.", questions_data except FileNotFoundError: print("File not found. Please run the API fetch first.") return "File not found.", None except json.JSONDecodeError as e: print(f"Error decoding JSON: {e}") return f"Error decoding JSON: {e}", None except Exception as e: print(f"Unexpected error: {e}") return f"Unexpected error: {e}", None #set up #token #Model model = HfApiModel( max_tokens=2096, temperature=0.5, model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded custom_role_conversions=None, ) #final_answer = FinalAnswerTool() #Agent agent_codeagent = CodeAgent( model=model, tools=[], #tools=[final_answer], ## add your tools here (don't remove final answer) max_steps=6, verbosity_level=1, grammar=None, planning_interval=None, name=None, description=None #prompt_templates=prompt_templates ) # def run_and_submit_one(): # 1. Instantiate Agent ( modify this part to create your agent) try: agent = BasicAgent() #agent = agent_codeagent except Exception as e: print(f"Error instantiating agent: {e}") return f"Error initializing agent: {e}", None # 2. Fetch Questions by loading from local json status_message, questions_data = load_questions_from_file() if questions_data is not None and len(questions_data) > 0: first_question = questions_data[0] print("First question object:", first_question) #To test question_text = first_question.get("question") task_id = first_question.get("task_id") print(f"\nTask ID: {task_id}") print(f"Question: {question_text}") else: print("No data found.") # 3. Run your Agent results_log = [] answers_payload = [] try: submitted_answer = agent(question_text) answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer}) results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer}) except Exception as e: print(f"Error running agent on task {task_id}: {e}") results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": f"AGENT ERROR: {e}"}) if not answers_payload: print("Agent did not produce any answers to submit.") return "Agent did not produce any answers to submit.", pd.DataFrame(results_log) run_and_submit_one()