A.M.I.C.A. stands for "Autonomous Multi-agent Intelligent Companion Assistant", and "amica" is the latin word for friend.
This project is a proof of concept for a system in which several agents cooperate asynchronously to perform different tasks. This is the companion code for the article "A.M.I.C.A." where you can find all the details about this project.
docker compose up -d
This will start two containers:
- A mosquitto MQTT message broker that will be used as Message Bus.
- A Valkey cache that will be used as a shared memory.
cd amika-sdk-java
mvn clean installcd agents/local-system-agent
mvn mn:runcd agents/minute-taker-agent
mvn mn:runcd amica-cli
mvn mn:runOnce in the CLI application, you can send queries, like for example:
> How many users are currently logged into this system?The local-system-agent will use the UserCount tool to get the number of users currently logged, and will respond with something like this:
There are currently 2 users logged into this system.You will also see how the minute-taker-agent will detect there was a new conversation between the user and the agent, and will generate the minute:
10:13:55.198 [RxComputationThreadPool-1] INFO e.n.a.a.m.i.l.agent.MinuteTakerAgent - Saving minute for conversation ebc5d308-8fba-4a61-af09-913dd0766eb8 to ...
10:13:55.198 [RxComputationThreadPool-1] INFO e.n.a.a.m.i.l.agent.MinuteTakerAgent -
{
"actors": ["nacho", "local-system-agent"],
"summary": "The user asked how many users are currently logged into this system.",
"messages": [
"The user asked How many users are currently logged into this system",
"The agent response was There are currently 2 users logged into this system."
]
}