Code Monkey home page Code Monkey logo

beebot's Introduction

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 and the ability to acquire more tools during task execution
  • Built-in persistence
  • REST API conforming to the e2b 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 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.

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:

poetry run beebot

API (via e2b)

To start the server run:

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:

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:

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:

{
  "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:

curl --request POST \
  --url http://localhost:8000/agent/tasks/<task-id>/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)

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 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.

beebot's People

Contributors

adam-baserun avatar erik-megarad avatar jakubno avatar pwuts avatar romanzubenko avatar tradunsky avatar valentatomas avatar waynehamadi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beebot's Issues

Agent protocol is outdated - Unable to find installation candidates for agent-protocol-client (0.2.2)

I am going to fix the code to address the agent protocol issue and commit but i had to say it, this is very good. I am stealing your folder structure because it is the only one ive seen so far that i can look at and know precisely what everything does, I can take that and draw basically a tree that is roughly equivalent to an anatomy for an Autonomous AI Agent. Been trying to work that out for the entire time ive been crash coursing so thank you and I am watching hoping ya'all geet back on the project.

regardless I'll be adopting the organizational structure when I start coding my own from scratch.

Prompt engineering issues omnibus

Issues related to prompts that are known and will be fixed will be listed in this issue. Contributions to fix these issues are welcome.

  • - read_file output is usually not parsed correctly from history such that it will attempt to read the same file over and over. Consider document embedding again and maybe disabling read_file as a result.
  • - Plan sent to Decider is sometimes not detailed enough to specify arguments, e.g. file contents. This causes it to sometimes use placeholders when writing files or calling other functions.

RuntimeError: Unrecognized or unsupported scheme: "".

I'm running in ubuntu via wsl2 in windows 11. Not sure if this is a supported environment.

What would you like me to do?
> get the css styling information from https://www.flaotplane.com
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/*****/beebot/beebot/initiator/cli.py", line 35, in main
    initialize_db(config.database_url)
  File "/home/*****/beebot/beebot/models/database_models.py", line 88, in initialize_db
    database = connect(db_url)
  File "/home/*****/.cache/pypoetry/virtualenvs/beebot-gxFpor5K-py3.10/lib/python3.10/site-packages/playhouse/db_url.py", line 102, in connect
    raise RuntimeError('Unrecognized or unsupported scheme: "%s".' %
RuntimeError: Unrecognized or unsupported scheme: "".

Feature req: Please integrate apipie.ai

Users want access to as much AI as they can get, they dont want to manage 50 accounts, they want the fastest AI they want the cheapest AI, and you can provide all of that for them with this update.

in addition to or in place of integrating with any aggregators - Please integrate APIpie so devs can access them all from one place/subscription and plus it also provides:

-The most affordable, reliable and fastest AI available
-One API to access ~500 Models and growing
-Language, embedding, voice, image, vision and more
-Global AI load balancing, route queries based on price or latency
-Redundancy for major models providing the greatest up time possible
-Global reporting of AI availability, pricing and performance

Its the same API format as openai, just change the domain name and your API key and enjoy a plethora of models without changing any of your code other than how you handle the models list.

This is a win win for everyone, any new AI's from any providers will be automatically integrated into your stack with this one integration. Not to mention all the other advantages.

coroutine error

poetry run beebot
<coroutine object main at 0x7fa467bfd4e0>
sys:1: RuntimeWarning: coroutine 'main' was never awaited
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

Command Mapper

Hi, guys.
This is Roman - CTO from Sinai RnD.

I played for several weeks with different GPT Agents. And I'm really interested in BeeBot's potential, approach and tools-focusing.
Thank you a lot for your outstanding work!

During my tries with BeeBot, I mentioned interesting behaviour. Sometimes AI decides to choose a command that does not exist in the list of available commands but is close to it. For example:

  • save_data(data="Important data", file_name="data.txt") instead of write_file(filename="data.txt", text_content="Important data")
  • python(function_call="google_search", question="How much is the fish?") instead of google_search (query="How much is the fish")

Finally, I wrote and tested a very small fix that asks AI to map a non-exited command to an exited one if such behaviour occurs.

Do you think that this approach makes sense and is it worse to make a PR for it?

@erik-megarad @romanzubenko

Request for Log Sharing

Dear BeeBotTeam,

I hope this message finds you well. As we work on enhancing our project's performance and optimizing our AI system, we believe that your valuable log data can provide valuable insights. To that end, we kindly request your assistance in sharing relevant log files with us.

Your logs could help us better understand system behavior, identify areas for improvement, and enhance our AI interactions. Rest assured that we will handle your data with the utmost care and in compliance with all applicable data privacy regulations.

Please let us know if you are willing to share your log files and, if so, the preferred method for sharing them. Your contribution will be greatly appreciated and will contribute to the success of our project.

Thank you for your support and collaboration.

Best regards,
Mike

Unable to find installation candidates for agent-protocol

I am getting the following error while testing out beebot. I have run the ./setup.sh script after getting into venv and got this:

(beebot) unitythemaker@blazingfast ~/TMP/beebot (main) [1]
❯ poetry install
Installing dependencies from lock file

Package operations: 19 installs, 0 updates, 0 removals

  • Installing agent-protocol (0.2.4): Failed

  RuntimeError

  Unable to find installation candidates for agent-protocol (0.2.4)

  at lib/python3.11/site-packages/poetry/installation/chooser.py:73 in choose_for
       69│ 
       70│             links.append(link)
       71│ 
       72│         if not links:
    →  73│             raise RuntimeError(f"Unable to find installation candidates for {package}")
       74│ 
       75│         # Get the best link
       76│         chosen = max(links, key=lambda link: self._sort_key(package, link))
       77│ 

  • Installing agent-protocol-client (0.2.2): Failed

  RuntimeError

  Unable to find installation candidates for agent-protocol-client (0.2.2)

  at lib/python3.11/site-packages/poetry/installation/chooser.py:73 in choose_for
       69│ 
       70│             links.append(link)
       71│ 
       72│         if not links:
    →  73│             raise RuntimeError(f"Unable to find installation candidates for {package}")
       74│ 
       75│         # Get the best link
       76│         chosen = max(links, key=lambda link: self._sort_key(package, link))
       77│ 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.