Spaces:
Sleeping
Sleeping
#!/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=}") | |