Event-Driven Autonomous Agents
Building a digital sentinel standing guard over the information chaos of the internet
The Semantic Web has long intrigued me. The idea of transforming the web into a comprehensible database accessible to artificial intelligence, as described in my earlier essays, "How AI will make the Semantic Web possible" and "Using AI to turn the Web into a database", became a foundation for my continued exploration. The notion of creating a smart alert system, a digital sentinel standing guard over the information chaos of the internet, was an application that continuously sparked my curiosity. Imagine a robot that ceaselessly trawls the vast ocean of the web, alerting you to the occurrence of a specific event, say, the release of a new book. This is a dream I have been chasing for years.
The emergence of autonomous agents like AutoGPT and BabyAGI piqued my interest. These systems represented a promising new direction for AI technology. I decided to experiment with these tools, with the aspiration of realizing my dream of a smart alert system. My excitement, however, was quickly tempered. These systems, while advanced, operate with a focus on a goal and its subsequent division into steps. This is a far cry from the continuous, vigilant monitoring system I envisioned. Much to my disappointment, I found their architecture ill-suited for such a task. You can make it work sometimes but not reliably.
The shortcomings of existing models lit a spark to build something new. I decided to create my own system, a system of event-driven autonomous agents. I call it WhenX.
The system's goal is to create alerts in the form of "When X happens, then do Y". In this initial version, we only support email alerts in the form of "When X happens, send me an email report". Making the agents constantly work in the background and monitoring information on your behalf is a small next step towards more autonomous systems.
This is an early experimental project with many bugs! I am still working on it.
You can find the code here!
Architecture
WhenX is a framework that functions as a symphony of three distinct autonomous agents, each playing its part in the grand orchestra of the web. The three main components: the Captain, the Scout, and the Sentinel, are designed to work in harmony. The Soldier, another significant part, acts in response to the Sentinel's alarms.
The Captain is the conductor of this orchestra. Given a mission, it is responsible for assembling a team of agents - a Scout, a Sentinel, and a Soldier.
The Scout serves as the explorer, the one who embarks on the quest for relevant information, creating 'Observations' along its journey. These Observations are the essential raw materials that fuel the WhenX system.
The Sentinel, the gatekeeper, scrutinizes the last N Observations made by the Scout. It is a discerning entity, designed to identify changes, no matter how subtle, in the Observation data. When it detects something noteworthy, it triggers an 'Alarm', signaling the Soldier to action.
The Soldier, the executor, springs into action upon receiving Alarms from the Sentinel. It executes instructions based on the alarms, crafting a 'Report' that encapsulates the detected change or event.
Those agents work together to generate a final report sent to the user.
WhenX stands out because it works based on events, which makes it excellent for monitoring and alerting tasks. This means it can continuously watch over things and alert us immediately when something important happens. This event-driven approach makes WhenX more responsive and accurate in giving alerts, which is a big advantage over traditional task-based AI systems.
While WhenX is still in its early stages, it represents an exciting step towards the realization of a smart alert system, and by extension, a significant stride in the quest to make the Semantic Web a reality. The journey so far has taught me one thing: disappointment can indeed be the mother of invention.
Hey, thanks for a very interesting article! I tried to check the Github repo, but got 404:
https://github.com/edmar/whenx