GitXplorerGitXplorer
e

2024-11-bot

public
0 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
6cd9eeabcf5f73852011ca4ff63fc3401ecb53f6

chat: add a virtual request_tool that adds the tool to the LLM context

eelecnix committed 2 months ago
Unverified
7f20693ef7132ad317c2228927eeb405541bc6de

registry: list all tools, including the stopped ones

eelecnix committed 2 months ago
Unverified
a825d64bbcc9ee5a9adfd83ecc0556fb38cdbc43

chat: Don't allow self-calls, the LLM gets too confused.

eelecnix committed 2 months ago
Unverified
310ee70d95fada457c58b4c01e05fb886b33488f

Split registry_tool out of bot, so it can be inspected

eelecnix committed 2 months ago
Unverified
b2c1ed35d8f4cda1ebc372380eae595d5e1367f5

inspect_tool: list all git files and their contents

eelecnix committed 2 months ago
Unverified
df3886126f310e976d447091577c86b4f2659428

Try to convince the LLM to use less recursive calls

eelecnix committed 2 months ago

README

The README file for this repository.

Self-improving Bot

A bot that starts with a small set of tools, but can modify them and create new ones.

Tools are executable programs, but the definition may evolve. Initially they are Flask applications that serve their OpenAPI schema.

How to start

The recommended way is to run the root bot in a Docker container:

docker run -v .:/root/ -w /root -e UV_PROJECT_ENVIRONMENT=/root/.venv-docker ghcr.io/astral-sh/uv:python3.12-alpine uv run bot.py

The bot has two execution modes: interactive, or server. The interactive mode allows a user to send input to the bot from standard input, and the server mode receives commands through HTTP requests. The interactive mode transparently starts the server.

The bot starts a small set of tools:

  • chat: interfaces with an LLM using Ollama
  • start_tool: the bot registers itself as a tool that can start other tools
  • search_tools: Flask app that enables the bot to find available tools
  • create_tool: Flask app that enables the bot to define a new tool
  • inspect_tool: Flask app that serves the source code of a tool
  • edit_tool: Flask app that creates new versions of tools