added blocks routes

This commit is contained in:
SwiftyOS
2024-09-17 15:30:00 +02:00
parent 8d0bbc5ffe
commit 2142caf2ca

View File

@@ -1,17 +1,34 @@
from fastapi import APIRouter
from autogpt_server.server.rest_api import AgentServer
from typing import Any
import typing
import collections
import fastapi
import autogpt_server.data.block
import autogpt_server.data.credit
router = fastapi.APIRouter()
router = APIRouter()
@router.get("/blocks")
async def get_graph_blocks():
return AgentServer.get_graph_blocks()
return [v.to_dict() for v in autogpt_server.data.block.get_blocks().values()]
@router.get("/blocks/costs")
async def get_graph_block_costs():
return AgentServer.get_graph_block_costs()
return autogpt_server.data.credit.get_block_costs()
@router.post("/blocks/{block_id}/execute")
async def execute_graph_block(block_id: str, data: dict[str, Any]):
return AgentServer.execute_graph_block(block_id, data)
async def execute_graph_block(
block_id: str, data: autogpt_server.data.block.BlockInput
) -> autogpt_server.data.block.CompletedBlockOutput:
obj = autogpt_server.data.block.get_block(block_id)
if not obj:
raise fastapi.HTTPException(
status_code=404, detail=f"Block #{block_id} not found."
)
output = collections.defaultdict(list)
for name, data in obj.execute(data):
output[name].append(data)
return output