Spaces:
Sleeping
Sleeping
| 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 tools.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 = 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() | |