DAVE Agent powered by Google ADK
Go to file
Marco Procaccini 2375242ea5 new private key method for provisioning 2026-01-21 13:01:01 +01:00
.roo guida, roomode, analisi esempi 2025-09-18 18:38:19 +02:00
.vscode posts 2025-09-19 12:48:26 +02:00
config big refactory, support per folder locali, workflow per interazione con sorgenti differnti e analisi dati 2025-09-04 12:27:01 +02:00
docs docs e readme 2025-11-07 17:57:12 +01:00
mnt/shared big refactory, support per folder locali, workflow per interazione con sorgenti differnti e analisi dati 2025-09-04 12:27:01 +02:00
src/dave_agent Read QDrant API key from environment var 2026-01-19 12:26:06 +01:00
tools big refactory, support per folder locali, workflow per interazione con sorgenti differnti e analisi dati 2025-09-04 12:27:01 +02:00
.dockerignore Remove uv cache mounts and add .dockerignore to prevent unnecessary rebuilds 2025-10-20 14:48:19 +02:00
.env.sample posts 2025-09-19 12:48:26 +02:00
.env.test sviluppo gestione documenti in corso. da rivedere 2025-09-10 14:51:34 +02:00
.gitattributes Enforced Linux line endings and renormalized files 2025-08-20 18:06:26 +02:00
.gitignore d4science-lib is now a project dependency instead of a submodule 2025-11-07 14:56:32 +01:00
.python-version sviluppo gestione documenti in corso. da rivedere 2025-09-10 14:51:34 +02:00
.roomodes guida, roomode, analisi esempi 2025-09-18 18:38:19 +02:00
Dockerfile docker per prod e svil 2025-11-07 17:26:24 +01:00
FUNDING.md Added FUNDING and LICENSE 2025-09-18 12:09:01 +02:00
Jenkinsfile.build jenkinsfile provisioning produzione 2025-11-07 11:45:58 +01:00
Jenkinsfile.provisioning new private key method for provisioning 2026-01-21 13:01:01 +01:00
LICENSE.md Added FUNDING and LICENSE 2025-09-18 12:09:01 +02:00
README.md docs e readme 2025-11-07 17:57:12 +01:00
compose.yaml Remove uv cache mounts and add .dockerignore to prevent unnecessary rebuilds 2025-10-20 14:48:19 +02:00
debug.yaml docker per prod e svil 2025-11-07 17:26:24 +01:00
freeze.txt sviluppo gestione documenti in corso. da rivedere 2025-09-10 14:51:34 +02:00
pyproject.toml Modernized RAG system with semantic chunking and provider abstraction 2026-01-13 17:53:52 +01:00
requirements-dev.txt sviluppo gestione documenti in corso. da rivedere 2025-09-10 14:51:34 +02:00
requirements.txt Improved document analysis 2025-10-23 09:16:37 +02:00

README.md

DAVE - D4Science AI Virtual Assistant

DAVE is an AI agent designed to act as a knowledgeable and helpful assistant for researchers using the D4Science platform. It helps users find information, understand services, and navigate the D4Science ecosystem by leveraging a long-term memory system powered by a vector database.

This project is built using the Google Agent Development Kit (ADK).

Project Structure

/
├── src/
│   └── dave_agent/      # Main agent source code
├── d4science_lib/       # Local library for D4Science APIs
├── config/              # D4Science configuration files
├── mnt/                 # Mount points for persistent data (e.g., vector store)
├── Dockerfile           # Defines the container images
├── compose.yaml         # Docker Compose for production
├── debug.yaml           # Docker Compose for development/debugging
├── pyproject.toml       # Project dependencies
└── .env.sample          # Sample environment variables

Documentation

For more detailed information, please refer to the documentation in the docs/ directory:

  • Development Setup: A comprehensive guide for setting up the local development environment.
  • Deployment Guide: Instructions for deploying the application to Docker Swarm.
  • Environments: An overview of the DEV and PROD deployment environments.
  • Architecture: An overview of the agent's architecture.

This guide will walk you through setting up and running the project using Docker, which is the recommended method for consistency.

Prerequisites

  • Docker and Docker Compose are installed and running on your machine.

1. Environment Configuration (.env)

The application uses an .env file to manage environment-specific variables, such as ports and container names.

  1. Create an .env file: In the project root, copy the sample environment file.
    cp .env.sample .env
    
  2. Edit the .env file: Review the variables in the .env file and adjust them if necessary.

2. D4Science Configuration (config/)

The agent requires specific configuration and credential files to interact with D4Science services.

  1. Copy the Sample Files:
    cd config
    cp d4s_config.sample.json d4s_config.json
    cp d4s_credentials.json.sample d4s_credentials.json
    cp dave_config.sample.json dave_config.json
    cd ..
    
  2. Edit the JSON Files:
    • Fill in the required values in d4s_config.json and d4s_credentials.json with your D4Science credentials.
    • Review and update dave_config.json to configure the agent's behavior.

Running the Application with Docker

Development Mode (with Debugging and Hot-Reload)

This mode is for active development. It mounts the local source code into the container, enabling hot-reloading, and exposes a debug port.

  1. Build and Run the Containers:

    docker compose -f debug.yaml up --build
    
  2. Access the Web UI: The web interface will be available at http://127.0.0.1:8000 (or the DAVE_AGENT_PORT).

  3. Attach the VS Code Debugger:

    • Open the "Run and Debug" panel in VS Code (Ctrl+Shift+D).
    • Select the "Python: Attach to Docker" configuration and press F5.

Efficient Development Workflow

For a faster development loop, you can run the long-term-memory service in the background and only restart the dave-agent service when you make changes.

  1. Start the Memory Service in Detached Mode: This command starts only the Qdrant database container and leaves it running in the background.

    docker compose -f debug.yaml up -d long-term-memory
    
  2. Start and Stop the Agent Service: Run this command to start the agent. It will connect to the already running memory service.

    docker compose -f debug.yaml up dave-agent
    

    When you are ready to stop, press Ctrl+C in this terminal. This will only stop the dave-agent container, leaving the database running and ready for your next session.