Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/AutoPackAI/beebot

An Autonomous AI Agent that works
https://github.com/AutoPackAI/beebot

artificial-intelligence autonomous-agents

Last synced: about 1 month ago
JSON representation

An Autonomous AI Agent that works

Awesome Lists containing this project

README

        

# BeeBot

BeeBot is your personal worker bee, an Autonomous AI Assistant designed to perform a wide range of practical tasks
autonomously.


BeeBot Mascot

## Status

Development of BeeBot is currently on hold. I've decided that LLMs as they are now (late 2023) aren't up to the task of generalized autonomous AI. I will revive the project if either:

- LLMs get significantly better at structured thinking, reliable outcomes, and obeying instructions
- I can develop or fine tune a custom model which is trained specifically for Autonomous AI
- I figure out a particular subset of tasks that BeeBot is acceptably good at that I can focus on. (Hint: It's not coding)

Check back here, hopefully this will get re-started.

## Features

- Tool selection via [AutoPack](https://autopack.ai) and the ability to acquire more tools during task execution
- Built-in persistence
- REST API conforming to the [e2b](https://www.e2b.dev/) standard.
- A websocket server to publish all events that occur within BeeBot
- Swappable filesystem emulation so that files can be stored in-memory, on-disk, or in a database
- A Web UI for managing your tasks (coming very soon)
- Dynamic manipulation of history during task execution
- Built-in caching with [Helicone](https://www.helicone.ai/) if enabled.

## Installation

To get started with BeeBot, you can clone the repo to your local machine and install its dependencies using `poetry`.
These instructions may vary depending on your local development environment.

```bash
git clone https://github.com/AutoPackAI/beebot.git
cd beebot
./setup.sh
```

Windows is officially unsupported but it may work. PRs are welcome for Windows compatibility but will not be a primary
focus.

### Persistence

Persistence is _required_. While SQLite is officially supported and is used in tests, it is highly recommended that
you use Postgres via docker, simply by executing `docker compose up -d`.

## Running

### CLI

To use the CLI run:

```bash
poetry run beebot
```

### API (via [e2b](https://www.e2b.dev/))

To start the server run:

```bash
uvicorn beebot.initiator.api:create_app --factory --timeout-keep-alive=300
```

If you're doing development on BeeBot itself, you may want to use this command:

```bash
uvicorn beebot.initiator.api:create_app --factory --reload --timeout-graceful-shutdown=3 --timeout-keep-alive=300
```

and then you can call the API using the following commands:

To **create a task** run:

```bash
curl --request POST \
--url http://localhost:8000/agent/tasks \
--header 'Content-Type: application/json' \
--data '{
"input": "Write '\''hello world'\'' to hi.txt"
}'
```

You will get a response like this:

```json
{
"input": "Write 'hello world' to hi.txt",
"task_id": "103",
"artifacts": []
}
```

Then to **execute one step of the task** copy the `task_id` you got from the previous request and run:

```bash
curl --request POST \
--url http://localhost:8000/agent/tasks//steps
```

### Websocket Connection

_Note: Notifications are currently undergoing a rework and may not work at the moment_

To receive a stream of changes to all the data models in BeeBot, you can subscribe to the websocket connection at
the `/notifications` endpoint with the same host/port as the web api, e.g. ws://localhost:8000/notifications. Use your
favorite websocket testing tool to try it out. (I like [Insomnia](https://insomnia.rest/))

### Web Interface

We are working on a web interface using Node.js (Remix)

## Philosophy

BeeBot's development process is guided by a specific philosophy, emphasizing key principles that shape its development
and future direction.

### Priorities

The development of BeeBot is driven by the following priorities, always in this order:

1. Functionality: BeeBot aims to achieve a high success rate for tasks within its range of _expected_ capabilities.
2. Flexibility: BeeBot strives to be adaptable to a wide range of tasks, expanding that range over time.
3. Reliability: BeeBot focuses on reliably completing known tasks with predictability.
4. Efficiency: BeeBot aims to execute tasks with minimal steps, optimizing both time and resource usage.
5. Convenience: BeeBot aims to provide a user-friendly platform for task automation.

### Principles

To achieve these priorities, BeeBot follows the following principles:

- Tool-focused: BeeBot carefully selects and describes tools, ensuring their reliable use by LLMs. It
uses [AutoPack](https://autopack.ai) as the package manager for its tools.
- LLM specialization: BeeBot will leverage a variety of LLMs best suited for different tasks, while OpenAI remains the
primary LLM for planning and decision-making.
- Functionality and flexibility first: BeeBot prioritizes functionality and flexibility over developer quality-of-life,
which may limit support for specific platforms and other deployment conveniences.
- Unorthodox methodologies: BeeBot employs unconventional development approaches to increase development speed, such as
the absence of unit tests. Instead, end-to-end tests are used, ensuring the entire system works together as expected.
- Proven concepts: BeeBot adopts new concepts only after they have been proven to enhance its five priorities.
As a result, it does not have complex memory or a tree of thought.

## Documentation

For further information on the architecture and future plans of BeeBot, please refer to the `docs/` directory. The
documentation is currently very light, but will evolve alongside the project as new insights and developments emerge.
Contributions and feedback from the community are highly appreciated.