Commit Graph

14 Commits

Author SHA1 Message Date
Zamil Majdy
af3febd79f feat(rnd): Add missing code on execution logic for AutoGPT Server (#7209)
Add missing changes from previous commit
2024-06-11 16:15:52 +02:00
SwiftyOS
60e0d4c530 fix(rnd): fixed cli repeated star cmd quality of life 2024-06-11 13:10:53 +02:00
SwiftyOS
4aeae53a61 fixed typo 2024-06-11 12:29:13 +02:00
SwiftyOS
d5c4eca739 Check if pid exists 2024-06-11 12:27:19 +02:00
Swifty
fd18877dae feat(rnd): CLI to Run and Stop the Server (#7195) 2024-06-11 11:21:34 +02:00
Zamil Majdy
e688cc31f0 feat(rnd): Implement agent block execution logic for AutoGPT Server (#7194)
### Background

This PR implements the main logic of the block execution engine for AutoGPT-Server.
An integration test is added to test the behavior.

*What you can do now with this PR*:
You can manually create a graph, by using the existing blocks as nodes (or write your own). Then execute the graph with an input.

*What you can't do yet*:
Listen to the graph execution result/update (you can follow the `AgentNodeExecution` table result, though).

### Changes 🏗️
* Split `data.py` (model file) into three modules:
    * `execution`: a model for node execution.
    * `graph`: a model for graph structure.
    * `block`: a model for agent block/component.
* Implemented executor main logic
* Simplify db structure:
    * Remove `AgentBlockInputOutput` in favor of `inputSchema` & `outputSchema` using serialized json/dict structure.
    * Remove `id` on `AgentBlock` in favor of using name (class name of the block) as its identifier.
    * Added `constantInput` column for `AgentNode` for hard-coded input/block configuration. Hence, removing`executionStateData` on `AgentNodeExecution`.
    * Rename AgentNodeLink input/output to source/sink to avoid confusion
* Change multithreading to multiprocessing, to allow the use of multiple `prisma` asynchronous client.
2024-06-10 19:30:34 +07:00
Swifty
39084192ff fix(agent server): Update file layout for autogpt server (#7190) 2024-06-05 12:53:54 +02:00
Nicholas Tindle
23dfdad454 feat(autogpt,autogpt_server): Build AutoGPT's Constituent Parts for deployment (#7188) 2024-06-05 12:14:08 +07:00
Zamil Majdy
4de0fd8cbd feat(db): Initialize Database Schema for AutoGPT server (#7168)
### Background

Introduced initial database schema for AutoGPT server.
It currently consists of 7 tables:

* `AgentGraph`: This model describes the Agent Graph/Flow (Multi Agent System).
    * `AgentNode`: This model describes a single node in the Agent Graph/Flow (Multi Agent System).
        * `AgentNodeLink`: This model describes the link between two AgentNodes.
        * `AgentNodeExecution`: This model describes the execution of an AgentNode.
* `AgentBlock`: This model describes a component that will be executed by the AgentNode (all the details required, like name, code, input/output).
    * `AgentBlockInputOutput`: This model describes the output (produced event) or input (consumed event) of an AgentBlock.
* `FileDefinition`: This model describe a file that can be used as input/output of an AgentNodeExecution.

### Changes 🏗️

* Add Prisma
* Add sqlite3
* Initialize database.
2024-06-05 12:09:58 +07:00
Swifty
e3a5663a05 fix(agent server): Updated function names and type checking (#7185)
* fix agent server

* renamed functions

* simplified dir naming
2024-06-04 11:02:38 +02:00
SwiftyOS
246bc850a1 deleted nextgenautogpt 2024-06-04 09:56:42 +02:00
SwiftyOS
f71d97dd48 restored nextgenautogpt 2024-06-03 11:42:18 +02:00
Zamil Majdy
7a932cdf00 feat(rnd): add FastAPI support to existing project outline (#7165)
### Background

###### Project Outline
Currently, the project mainly consists of these components:

*agent_api*
A component that will expose API endpoints for the creation & execution of agents.
This component will make connections to the database to persist and read the agents.
It will also trigger the agent execution by pushing its execution request to the ExecutionQueue.

*agent_executor*
A component that will execute the agents.
This component will be a pool of processes/threads that will consume the ExecutionQueue and execute the agent accordingly. 
The result and progress of its execution will be persisted in the database.

###### How to test
Execute `poetry run app`. 
Access the swagger page `http://localhost:8000/docs`, there is one API to trigger an execution of one dummy slow task, you fire the API a couple of times and see the `agent_executor` executes the multiple slow tasks concurrently by the pool of Python processes.
The pool size is currently set to `5` (hardcoded in app.py, the code entry point).

##### Changes 🏗️

* Initialize FastAPI for the AutoGPT server project.
* Reduced number of queues to 1 and abstracted into `ExecutionQueue` class.
* Reduced the number of main components into two `api` and `executor`.
2024-06-02 23:39:01 -05:00
Swifty
a5ee640935 feat(rnd): Add template of the next gen autogpt project (#7162)
* feat(rnd): Add template of the next gen autogpt project

* fix(rnd): fix typo

* fix(rnd): typo

* Added multi-processor arch

* feat(rnd) add bi-direction communication

* Updated project structure
2024-05-22 14:36:38 +02:00