84 lines
3.2 KiB
Python
84 lines
3.2 KiB
Python
from pathlib import Path
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi import (
|
|
HTTPException as FastAPIHTTPException, # Import HTTPException from FastAPI
|
|
)
|
|
from fastapi.responses import FileResponse
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
@app.get("/skill_tree")
|
|
def get_skill_tree() -> dict:
|
|
return {
|
|
"graph": {
|
|
"nodes": {
|
|
"TestWriteFile": {
|
|
"name": "TestWriteFile",
|
|
"input": "Write the word 'Washington' to a .txt file",
|
|
"task_id": "fde559f8-3ab8-11ee-be56-0242ac120002",
|
|
"category": ["interface"],
|
|
"dependencies": [],
|
|
"cutoff": 60,
|
|
"ground": {
|
|
"answer": "The word 'Washington', printed to a .txt file named anything",
|
|
"should_contain": ["Washington"],
|
|
"should_not_contain": [],
|
|
"files": [".txt"],
|
|
"eval": {"type": "file"},
|
|
},
|
|
"info": {
|
|
"difficulty": "interface",
|
|
"description": "Tests the agents ability to write to a file",
|
|
"side_effects": [""],
|
|
},
|
|
},
|
|
"TestReadFile": {
|
|
"name": "TestReadFile",
|
|
"category": ["interface"],
|
|
"task_id": "fde559f8-3ab8-11ee-be56-0242ac120002",
|
|
"input": "Read the file called file_to_read.txt and write its content to a file called output.txt",
|
|
"dependencies": ["TestWriteFile"],
|
|
"cutoff": 60,
|
|
"ground": {
|
|
"answer": "The content of output.txt should be 'Hello World!'",
|
|
"should_contain": ["Hello World!"],
|
|
"files": ["output.txt"],
|
|
"eval": {"type": "file"},
|
|
},
|
|
"info": {
|
|
"description": "Tests the ability for an agent to read a file.",
|
|
"difficulty": "interface",
|
|
"side_effects": [""],
|
|
},
|
|
"artifacts": [
|
|
{
|
|
"artifact_id": "a1b259f8-3ab8-11ee-be56-0242ac121234",
|
|
"file_name": "file_to_read.txt",
|
|
"file_path": "interface/write_file/artifacts_out",
|
|
}
|
|
],
|
|
},
|
|
},
|
|
"edges": [{"source": "TestWriteFile", "target": "TestReadFile"}],
|
|
}
|
|
}
|
|
|
|
|
|
@app.get("/agent/tasks/{challenge_id}/artifacts/{artifact_id}")
|
|
def get_artifact(
|
|
challenge_id: str, artifact_id: str
|
|
) -> FileResponse: # Added return type annotation
|
|
try:
|
|
# Look up the file path using the challenge ID and artifact ID
|
|
|
|
file_path = "challenges/interface/read_file/artifacts_in/file_to_read.txt"
|
|
current_directory = Path(__file__).resolve().parent
|
|
|
|
# Return the file as a response
|
|
return FileResponse(current_directory / file_path)
|
|
|
|
except KeyError:
|
|
raise FastAPIHTTPException(status_code=404, detail="Artifact not found")
|