#!/usr/bin/env python3 import logging import json import basic_agent LOG = logging.getLogger(__name__) QUESTIONS_PATH = "../questions.json" DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space" # Local: # https://huggingface.co/docs/smolagents/tutorials/inspect_runs # https://cobusgreyling.medium.com/introduce-inspectability-to-huggingface-smolagents-571bd3f8da4c # # pip install arize-phoenix opentelemetry-sdk opentelemetry-exporter-otlp openinference-instrumentation-smolagents # # pip install 'smolagents[telemetry]' # # python -m phoenix.server.main serve from opentelemetry import trace from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from openinference.instrumentation.smolagents import SmolagentsInstrumentor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor endpoint = "http://0.0.0.0:6006/v1/traces" trace_provider = TracerProvider() trace_provider.add_span_processor( SimpleSpanProcessor(OTLPSpanExporter(endpoint))) SmolagentsInstrumentor().instrument(tracer_provider=trace_provider) ba = basic_agent.BasicAgent() with open(QUESTIONS_PATH, "r") as fp: questions = json.load(fp) # Should be 20 print(f"{len(questions)=}") # One question entry: # # {'Level': '1', # 'file_name': '7bd855d8-463d-4ed5-93ca-5fe35145f733.xlsx', # 'question': 'The attached Excel file contains the sales of menu items for a ' # 'local fast-food chain. What were the total sales that the chain ' # 'made from food (not including drinks)? Express your answer in ' # 'USD with two decimal places.', # 'task_id': '7bd855d8-463d-4ed5-93ca-5fe35145f733'}, # # 18 has an xlsx file # 13 has an mp3 file # 11 has a py file # 9 has an mp3 file want = 9 question = questions[want] q_task_id = question["task_id"] q_text = question["question"] q_filename = question.get("file_name", "") if q_filename: file_url = f"{DEFAULT_API_URL}/files/{q_task_id}" print("Question {task_id=} has attachment: {file_url=}") quest_with_url = f"{q_text}\nFile url: {file_url}" else: quest_with_url = q_text answer = ba(quest_with_url) LOG.warning(f"{answer=}")