Spaces:
Runtime error
Runtime error
File size: 4,467 Bytes
36351d1 051c1ef bd9a51c 051c1ef 1d1bae6 bd9a51c 051c1ef 36351d1 051c1ef 36351d1 051c1ef 36351d1 051c1ef 5d6dd93 e4bdf70 051c1ef 5d6dd93 051c1ef 5d6dd93 051c1ef e4bdf70 051c1ef e4bdf70 051c1ef e4bdf70 051c1ef e4bdf70 051c1ef e4bdf70 051c1ef e4bdf70 051c1ef e4bdf70 bd9a51c 051c1ef e4bdf70 051c1ef e4bdf70 5d6dd93 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
""" Basic Agent Evaluation Runner """
import os
import gradio as gr
import requests
import pandas as pd
from langchain_core.messages import HumanMessage
from agent import ninu
DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
class BasicAgent:
"""Agent class using LangGraph compiled graph."""
def __init__(self):
print("BasicAgent initialized.")
self.graph = ninu # ما تنساش: ما تعملش () هنا لأن `ninu` هو كائن compiled
def __call__(self, question: str) -> str:
print(f"Agent received question (first 50 chars): {question[:50]}...")
messages = [HumanMessage(content=question)]
result = self.graph.invoke({"messages": messages})
for message in reversed(result["messages"]):
if isinstance(message.content, str) and "FINAL ANSWER:" in message.content:
return message.content.split("FINAL ANSWER:")[-1].strip()
return "لم أتمكن من إيجاد إجابة نهائية."
def run_and_submit_all(profile: gr.OAuthProfile | None):
space_id = os.getenv("SPACE_ID")
if profile:
username = f"{profile.username}"
print(f"User logged in: {username}")
else:
print("User not logged in.")
return "Please Login to Hugging Face with the button.", None
api_url = DEFAULT_API_URL
questions_url = f"{api_url}/questions"
submit_url = f"{api_url}/submit"
try:
agent = BasicAgent()
except Exception as e:
return f"Error initializing agent: {e}", None
agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
try:
response = requests.get(questions_url, timeout=15)
response.raise_for_status()
questions_data = response.json()
except Exception as e:
return f"Error fetching questions: {e}", None
results_log = []
answers_payload = []
for item in questions_data:
task_id = item.get("task_id")
question_text = item.get("question")
if not task_id or question_text is None:
continue
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:
results_log.append({
"Task ID": task_id,
"Question": question_text,
"Submitted Answer": f"AGENT ERROR: {e}"
})
if not answers_payload:
return "Agent did not produce any answers to submit.", pd.DataFrame(results_log)
submission_data = {
"username": username.strip(),
"agent_code": agent_code,
"answers": answers_payload
}
try:
response = requests.post(submit_url, json=submission_data, timeout=60)
response.raise_for_status()
result_data = response.json()
final_status = (
f"Submission Successful!\n"
f"User: {result_data.get('username')}\n"
f"Overall Score: {result_data.get('score', 'N/A')}% "
f"({result_data.get('correct_count', '?')}/{result_data.get('total_attempted', '?')} correct)\n"
f"Message: {result_data.get('message', 'No message received.')}"
)
results_df = pd.DataFrame(results_log)
return final_status, results_df
except Exception as e:
return f"Submission Failed: {e}", pd.DataFrame(results_log)
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("# Basic Agent Evaluation Runner")
gr.Markdown(
"""
**Instructions:**
1. Clone this space and customize the agent logic.
2. Log in with Hugging Face to enable submission.
3. Click the button to run evaluation and submit all answers.
"""
)
gr.LoginButton()
run_button = gr.Button("Run Evaluation & Submit All Answers")
status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
run_button.click(
fn=run_and_submit_all,
outputs=[status_output, results_table]
)
if __name__ == "__main__":
print("\nLaunching Gradio Interface...")
demo.launch(debug=True, share=False)
|