For this demo app, we have a multi-agent system comprised with the following components:
- A data Agent that performs queries over Cybersyn's Financial & Economic Essentials Dataset
- A data Agent that performs queries over Cyberysyn' Government Essentials Dataset
- A general Agent that can answer all general queries
- A Human (In the Loop) Service that provides inputs to the two data agents
- A ControlPlane that features a router which routes tasks to the most appropriate orchestrator
- A RabbitMQ MessageQueue to broker communication between agents, human-in-the-loop, and control-plane
For the frontend, we built a Streamlit App to interact with this multi-agent system.
To run this demo, we make use of Docker
, specifically docker-compose
. For this
demo, all of the necessary services (with the exception of the message queue)
are packaged in one common Docker image and can be instantianted through their
respective commands (i.e., see docker-compose.yml
.)
For this app, we use OpenAI as the LLM provider and so an OPENAI_API_KEY
will
need to be supplied. Moreover, the Cybersyn data is pulled from Snowflake and so
various Snowflake params are also required. See the section "# FILL-IN" in the
template.env.docker
file. Once, you've filled in the necessary environment
variables, rename the file to .env.docker
.
Similarly, you need to provide credentials in the template.env.local
. Once
filled in, rename the file to .env.local
.
To start the multi-agent system, use the following command while in the root of the project directory:
docker-compose up --build
Once the services are all running, you can then run the streamlit app.
set -a && source .env.local
streamlit run snowflake_cybersyn_demo/apps/streamlit.py