Experimental Lightweight Agent Role-based Approach
The name is a backronym that comes from the most common protagonist name ChatGPT was giving me when I was trying to use it for storywriting.
I started this framework because I wasn't happy with the level of control I had with CrewAI and wanted to write the various integration and glue code in Clojure.
This repo is a quick haphazard fork of an internal polylith component that I use in production. The API will definitely change in the future, but I will consider keeping the old interface around for backwards-compatibility reasons.
See interface.clj and implementation for documentation and details. Anything outside of interface.clj should be considered an implementation detail. system-context is expected to a map with openai keys (eg {:OPENAI_API_KEY "sk_your-key" ,,,}) and any other system information your tools may need in order to run, I personally use integrant to manage this system context. See the system-test directory for a sample usage.
Start your REPL with the :system-test alias engaged or user.clj will try to load a missing dependency on integrant. The system context will be loaded expecting a sibling directory to this repo named config with api-keys.json in it, which should contain a root level object with OPENAI_API_KEY mapped to a valid openai api key.