AI_Agent_Final_Assignment / create_agent.py
shulapy's picture
final-agent-code (#1)
6e31f04 verified
import os
import requests
import uuid
import mimetypes
import tempfile
from extensions.visual_qa import visualizer
from extensions.text_inspector_tool import TextInspectorTool
from agent import create_agent
from extensions.miscellaneous import (
get_single_file_description,
)
def answer_single_question(example: object, model: str, visual_inspection_tool: TextInspectorTool) -> str:
document_inspection_tool = TextInspectorTool(model, 100000)
augmented_question = """You have one question to answer. It is paramount that you provide a correct answer.
Give it all you can: I know for a fact that you have access to all the relevant tools to solve it and find the correct answer (the answer does exist).
Failure or 'I cannot answer' or 'None found' will not be tolerated, success will be rewarded.
Run verification steps if that's needed, you must make sure you find the correct answer! Here is the task:
""" + example["question"]
if example["file_name"]:
prompt_use_files = "\n\nTo solve the task above, you will have to use this attached file:\n"
prompt_use_files += get_single_file_description(
example["file_name"], example["question"], visual_inspection_tool, document_inspection_tool
)
augmented_question += prompt_use_files
agent = create_agent(model_id=model)
return agent.run(augmented_question)
def ask_agent(question: object) -> str:
"""Run the agent with the provided question and file."""
q_text = question.get("question", "")
print(f"Agent received question (first 50 chars): {q_text[:50]}...")
# Build the payload
question_object = {
"question": q_text,
"file_name": None
}
# If there’s a file name, build the full URL
file_name = question.get("file_name", "")
task_id = question.get("task_id", "")
if file_name:
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"
request_kwargs = {
"headers": {"User-Agent": user_agent},
"stream": True,
}
# Send a HTTP request to the URL
file_path = f"https://agents-course-unit4-scoring.hf.space/files/{task_id}"
response = requests.get(file_path, **request_kwargs)
response.raise_for_status()
content_type = response.headers.get("content-type", "")
extension = mimetypes.guess_extension(content_type)
if extension is None:
extension = ".download"
fname = str(uuid.uuid4()) + extension
temp_dir = tempfile.gettempdir()
download_path = os.path.join(temp_dir, fname)
print(f"Downloading file from {file_path} to {download_path} with content type {extension}")
with open(download_path, "wb") as fh:
for chunk in response.iter_content(chunk_size=512):
fh.write(chunk)
print(f"File downloaded to: {download_path}")
question_object["file_name"] = download_path
print(f"Question object created: {question_object}")
answer = answer_single_question(question_object, model="gemini/gemini-2.5-flash", visual_inspection_tool=visualizer)
print(f"Agent returning answer: {answer}")
return answer