Skip to content

Commit

Permalink
Add FastAPI
Browse files Browse the repository at this point in the history
  • Loading branch information
majdyz committed May 22, 2024
1 parent 6b55187 commit beb354b
Show file tree
Hide file tree
Showing 22 changed files with 123 additions and 132 deletions.
10 changes: 10 additions & 0 deletions autogpts/autogpt/agbenchmark_config/challenges_already_beaten.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"TestWriteFile": true,
"TestReadFile": true,
"TestSortCsv": true,
"TestAnswerQuestionSmallCsv": true,
"TestCombineCsv": true,
"TestLabelCsv": true,
"TestAnswerQuestionCsv": true,
"TestAnswerQuestionCombineCsv": false
}
4 changes: 4 additions & 0 deletions autogpts/autogpt/output.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Age,ID,Name,Occupation,Salary
28,101,John,Engineer,80000
34,102,Alice,Doctor,120000
45,103,Bob,Lawyer,95000
17 changes: 17 additions & 0 deletions rnd/autogpt_server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Next Gen AutoGPT

This is a research project into creating the next generation of autogpt, which is an autogpt agent server.

It will come with the AutoGPT Agent as the default agent


## Project Outline

The project mainly consist of two main component:

agent_server: Responsible as the API server for creating an agent.
agent_executor: Responsible for executor the agent.




1 change: 1 addition & 0 deletions rnd/autogpt_server/autogpt_server/agent_api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .server import start_server
26 changes: 26 additions & 0 deletions rnd/autogpt_server/autogpt_server/agent_api/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import uvicorn

from fastapi import FastAPI

from autogpt_server.data import ExecutionQueue

app = FastAPI(
title="AutoGPT Agent Server",
description=(
"This server is used to execute agents that are created by the AutoGPT system."
),
summary="AutoGPT Agent Server",
version="0.1",
)

execution_queue : ExecutionQueue = None

@app.post("/agents/{agent_id}/execute")
def execute_agent(agent_id: str):
execution_id = execution_queue.add(agent_id)
return {"execution_id": execution_id, "agent_id": agent_id}

def start_server(queue: ExecutionQueue):
global execution_queue
execution_queue = queue
uvicorn.run(app)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .executor import start_executor
26 changes: 26 additions & 0 deletions rnd/autogpt_server/autogpt_server/agent_executor/executor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import logging
import time

from concurrent.futures import ThreadPoolExecutor

from autogpt_server.data import ExecutionQueue

logger = logging.getLogger(__name__)


# TODO: Replace this by an actual Agent Execution.
def __execute(id: str, data: str) -> None:
for i in range(5):
print(f"Executor processing step {i}, execution_id: {id}, data: {data}")
time.sleep(1)
print(f"Executor processing completed, execution_id: {id}, data: {data}")


def start_executor(pool_size: int, queue: ExecutionQueue) -> None:
with ThreadPoolExecutor(max_workers=pool_size) as executor:
while True:
execution = queue.get()
if not execution:
time.sleep(1)
continue
executor.submit(__execute, execution.execution_id, execution.data)
11 changes: 11 additions & 0 deletions rnd/autogpt_server/autogpt_server/app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from multiprocessing import Process

from autogpt_server.agent_api import start_server
from autogpt_server.agent_executor import start_executor
from autogpt_server.data import ExecutionQueue

if __name__ == "__main__":
queue = ExecutionQueue()
executor_process = Process(target=start_executor, args=(5,queue))
executor_process.start()
start_server(queue)
25 changes: 25 additions & 0 deletions rnd/autogpt_server/autogpt_server/data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import uuid

from multiprocessing import Queue

class Execution:
def __init__(self, execution_id: str, data: str):
self.execution_id = execution_id
self.data = data

# TODO: Replace this by a persistent queue.
class ExecutionQueue:
def __init__(self):
self.queue = Queue()

def add(self, data: str) -> str:
execution_id = uuid.uuid4()
self.queue.put(Execution(str(execution_id), data))
return str(execution_id)

def get(self) -> Execution | None:
return self.queue.get()

def empty(self) -> bool:
return self.queue.empty()

File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tool.poetry]
name = "rnd"
name = "autogpt_server"
version = "0.1.0"
description = ""
authors = ["SwiftyOS <craigswift13@gmail.com>"]
Expand Down
1 change: 1 addition & 0 deletions rnd/autogpt_server/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
python3 -m autogpt_server.app
27 changes: 0 additions & 27 deletions rnd/nextgenautogpt/README.md

This file was deleted.

Empty file.
39 changes: 0 additions & 39 deletions rnd/nextgenautogpt/nextgenautogpt/__main__.py

This file was deleted.

Empty file.
Empty file.
15 changes: 0 additions & 15 deletions rnd/nextgenautogpt/nextgenautogpt/executor/executor.py

This file was deleted.

Empty file.
33 changes: 0 additions & 33 deletions rnd/nextgenautogpt/nextgenautogpt/manager/manager.py

This file was deleted.

Empty file.
17 changes: 0 additions & 17 deletions rnd/nextgenautogpt/nextgenautogpt/server/server.py

This file was deleted.

0 comments on commit beb354b

Please sign in to comment.