# import requests # import pandas as pd # import gradio as gr # from agent26042026_RAG_Agent import ask_agent # from tool_logger_26042026 import save_logs_to_txt, reset_logs # DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space" # questions = requests.get(f"{DEFAULT_API_URL}/questions").json() # # ---------- HF EVAL ---------- # def run_and_submit_all(): # # [questions] = requests.get(f"{DEFAULT_API_URL}/random-question").json() # total = len(questions) # print(f"\nšŸš€ Total Questions: {total}\n") # results = [] # for idx, item in enumerate(questions, start=1): # q = item["question"] # task_id = item["task_id"] # print(f"\n🧠 Q{idx}/{total}: {q}") # try: # ans = ask_agent(q) # from tool_logger_26042026 import get_logs # logs = get_logs() # print("\nšŸ“Š TOOL TRACE:") # for log in logs[-3:]: # last 3 tool calls # print(f"→ {log['tool']}") # except Exception as e: # ans = f"ERROR: {e}" # print(f"ans {ans}") # results.append({ # "Task ID": task_id, # "Question": q, # "Answer": ans # }) # df = pd.DataFrame(results) # return "Run complete āœ…", df # print(f"Sample question: {questions[0]['question']}") # # ---------- SINGLE QUERY ---------- # # def chat_fn(user_input): # # task_id, question = questions[11]["task_id"], questions[11]["question"] # # # return print(task_id, question) # # ans = ask_agent(question, task_id) # # from tool_logger_26042026 import get_logs # # logs = get_logs() # # print("\nšŸ“Š TOOL TRACE:") # # for log in logs[-3:]: # last 3 tool calls # # print(f"→ {log['tool']}") # # return ans # def chat_fn(user_input): # task_id, question = questions[13]["task_id"], questions[13]["question"] # print(task_id, question) # ans = ask_agent(question, task_id) # from tool_logger_26042026 import get_logs # logs = get_logs() # print("\nšŸ“Š TOOL TRACE:") # for log in logs[-3:]: # last 3 tool calls # print(f"→ {log['tool']}") # return ans # def run_eval_pipeline(): # reset_logs() # result_text, result_df = run_and_submit_all() # save_logs_to_txt() # return result_text, result_df # # ---------- UI ---------- # with gr.Blocks() as demo: # gr.Markdown("# šŸ¤– LangGraph Smart Agent") # with gr.Tab("Chat"): # inp = gr.Textbox(label="Ask something") # out = gr.Textbox(label="Answer") # btn = gr.Button("Ask") # btn.click(chat_fn, inputs=inp, outputs=out) # with gr.Tab("HF Evaluation"): # run_btn = gr.Button("Run Full Evaluation") # out_text = gr.Textbox() # out_df = gr.DataFrame() # run_btn.click( # run_eval_pipeline, # outputs=[out_text, out_df], # ) # if __name__ == "__main__": # demo.launch(debug=True) # /////////////////////////////////////////////////////////////////////////// import requests import pandas as pd import gradio as gr from agent import ask_agent from tool_logger_26042026 import save_logs_to_txt, reset_logs DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space" questions = requests.get(f"{DEFAULT_API_URL}/questions").json() # # ---------- HF EVAL ---------- # def run_and_submit_all(): # # [questions] = requests.get(f"{DEFAULT_API_URL}/random-question").json() # total = len(questions) # print(f"\nšŸš€ Total Questions: {total}\n") # results = [] # for idx, item in enumerate(questions, start=1): # q = item["question"] # task_id = item["task_id"] # print(f"\n🧠 Q{idx}/{total}: {q}") # try: # ans = ask_agent(q) # from tool_logger_26042026 import get_logs # logs = get_logs() # print("\nšŸ“Š TOOL TRACE:") # for log in logs[-3:]: # last 3 tool calls # print(f"→ {log['tool']}") # except Exception as e: # ans = f"ERROR: {e}" # print(f"ans {ans}") # results.append({ # "Task ID": task_id, # "Question": q, # "Answer": ans # }) # df = pd.DataFrame(results) # return "Run complete āœ…", df # print(f"Sample question: {questions[0]['question']}") # # ---------- SINGLE QUERY ---------- # # def chat_fn(user_input): # # task_id, question = questions[11]["task_id"], questions[11]["question"] # # # return print(task_id, question) # # ans = ask_agent(question, task_id) # # from tool_logger_26042026 import get_logs # # logs = get_logs() # # print("\nšŸ“Š TOOL TRACE:") # # for log in logs[-3:]: # last 3 tool calls # # print(f"→ {log['tool']}") # # return ans def chat_fn(user_input): task_id, question = questions[13]["task_id"], questions[13]["question"] print(task_id, question) ans = ask_agent(question, task_id) from tool_logger_26042026 import get_logs logs = get_logs() print("\nšŸ“Š TOOL TRACE:") for log in logs[-3:]: # last 3 tool calls print(f"→ {log['tool']}") return ans # def run_eval_pipeline(): # reset_logs() # result_text, result_df = run_and_submit_all() # save_logs_to_txt() # return result_text, result_df # # ---------- UI ---------- # with gr.Blocks() as demo: # gr.Markdown("# šŸ¤– LangGraph Smart Agent") # with gr.Tab("Chat"): # inp = gr.Textbox(label="Ask something") # out = gr.Textbox(label="Answer") # btn = gr.Button("Ask") # btn.click(chat_fn, inputs=inp, outputs=out) # with gr.Tab("HF Evaluation"): # run_btn = gr.Button("Run Full Evaluation") # out_text = gr.Textbox() # out_df = gr.DataFrame() # run_btn.click( # run_eval_pipeline, # outputs=[out_text, out_df], # ) # if __name__ == "__main__": # demo.launch(debug=True) def run_and_submit_all(): questions = requests.get(f"{DEFAULT_API_URL}/questions").json() total = len(questions) print(f"\nšŸš€ Total Questions: {total}\n") results = [] answers_payload = [] for idx, item in enumerate(questions, start=1): q = item["question"] task_id = item["task_id"] print(f"\n🧠 Q{idx}/{total}: {q}") try: ans = ask_agent(q) from tool_logger_26042026 import get_logs logs = get_logs() print("\nšŸ“Š TOOL TRACE:") for log in logs[-3:]: print(f"→ {log['tool']}") except Exception as e: ans = f"ERROR: {e}" print(f"\nāœ… ANSWER: {ans}") # Save for dataframe results.append({ "Task ID": task_id, "Question": q, "Answer": ans }) # Save for submission answers_payload.append({ "task_id": task_id, "submitted_answer": str(ans) }) # ------------------------- # SUBMIT TO HF # ------------------------- submission_data = { "username": "chitranshu-9", # <-- change this "agent_code": "https://huggingface.co/spaces/chitranshu-9/final-agent-course/tree/main", # <-- change this "answers": answers_payload } print("\nšŸš€ Submitting answers...\n") response = requests.post( f"{DEFAULT_API_URL}/submit", json=submission_data, timeout=60 ) result = response.json() print("\nšŸŽÆ FINAL RESULT") print(f"response : {result}") print(f"Score: {result.get('score')}%") print(f"Correct: {result.get('correct_count')}/{result.get('total_attempted')}") df = pd.DataFrame(results) status = ( f"āœ… Submission Successful!\n" f"Score: {result.get('score')}%\n" f"Correct: {result.get('correct_count')}/{result.get('total_attempted')}" ) return status, df def run_eval_pipeline(): reset_logs() result_text, result_df = run_and_submit_all() save_logs_to_txt() return result_text, result_df with gr.Blocks() as demo: gr.Markdown("# šŸ¤– LangGraph Smart Agent") with gr.Tab("Chat"): inp = gr.Textbox(label="Ask something") out = gr.Textbox(label="Answer") btn = gr.Button("Ask") btn.click(chat_fn, inputs=inp, outputs=out) with gr.Tab("HF Evaluation"): run_btn = gr.Button("Run Full Evaluation") out_text = gr.Textbox() out_df = gr.DataFrame() run_btn.click( run_eval_pipeline, outputs=[out_text, out_df], ) if __name__ == "__main__": # Run evaluation automatically # result_text, result_df = run_eval_pipeline() # print("\n========================") # print(result_text) # print("========================\n") # print(result_df) # Optional: launch Gradio UI demo.launch(debug=True)