From 02f4d2ac32e2ebc1ffec54e8eae06bbd74bbdf74 Mon Sep 17 00:00:00 2001 From: Lazaros Toumanidis Date: Mon, 14 Jul 2025 11:19:19 +0300 Subject: [PATCH 1/3] add alive docs --- docs/alive/_category_.json | 8 ++ docs/alive/architecture.md | 84 +++++++++++++++++++ docs/alive/deployment.md | 149 ++++++++++++++++++++++++++++++++++ docs/alive/images/diagram.svg | 1 + docs/alive/introduction.md | 61 ++++++++++++++ 5 files changed, 303 insertions(+) create mode 100644 docs/alive/_category_.json create mode 100644 docs/alive/architecture.md create mode 100644 docs/alive/deployment.md create mode 100644 docs/alive/images/diagram.svg create mode 100644 docs/alive/introduction.md diff --git a/docs/alive/_category_.json b/docs/alive/_category_.json new file mode 100644 index 0000000..f172fae --- /dev/null +++ b/docs/alive/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Alive", + "position": 0.0004, + "link": { + "type": "generated-index", + "description": "How to customize an agent avatar" + } +} \ No newline at end of file diff --git a/docs/alive/architecture.md b/docs/alive/architecture.md new file mode 100644 index 0000000..06233c9 --- /dev/null +++ b/docs/alive/architecture.md @@ -0,0 +1,84 @@ +--- +sidebar_position: 0.0006 +--- +# Architecture + +**ALIVE** is a modular system consisting of both frontend and backend subsystems, with clear separation of concerns, containerized deployment, and real-time multimodal interaction support. + +--- + +## System Overview + +ALIVE is split into two main subsystems: + +### EVA – Empathetic Virtual Assistant (Backend) + +- Built with **FastAPI** in **Python** +- Real-time WebSocket chat with LLM and RAG +- Emotional response tagging and summarization +- Handles user session, message history, and document retrieval + +### AVATAR – Emotional Avatar Renderer (Frontend + API) + +- Built with **ASP.NET Core** and **C#** +- Provides a REST API and WebRTC interface for avatar rendering +- Integrates with: + - **D-ID Clips API** for face animation + - **Azure Speech Services** for emotional TTS +- Supports dynamic rendering based on emotion-tagged content + +--- + +## Subsystem Components + +### EVA (FastAPI Application) + +- `/eva/main.py` – Entrypoint with WebSocket routing and lifecycle hooks +- `/eva/llm/` – Interfaces for calling OpenAI/Anthropic APIs, emotion segmentation +- `/eva/rag/` – Local RAG document store using **ChromaDB** +- `/eva/db/` – Conversation storage and admin setting persistence (SQLite/PostgreSQL) +- `/eva/admin/` – Secure admin panel for prompt configuration, document uploads, and conversation management + +### AVATAR (ASP.NET Core Service) + +- `/avatar/` – Main backend orchestrating avatar generation +- `/avatar/wwwroot/` – Web frontend assets for avatar display +- `/avatar/Program.cs`, `/avatar/appsettings.json` – Service initialization and configuration + +--- + +## Supporting Services + +- **ChromaDB** (embedded) – RAG vector store for semantic search +- **Azure TTS** – Expressive speech synthesis based on emotion +- **D-ID API** – Avatar face animation based on transcript and voice +- **WebRTC** – Low-latency avatar playback + +--- + +## Deployment Stack + +| Component | Tech | Role | +|----------------|------------------|-------------------------------| +| EVA | Python + FastAPI | WebSocket chat, LLM, RAG | +| AVATAR | C# + ASP.NET | Audio/visual rendering | +| Chroma | Rust (DB engine) | Vector database for RAG | +| D-ID API | SaaS | Face animation | +| Azure Speech | SaaS | Emotion-aware TTS | +| Frontend | HTML/CSS/JS | User interface for avatar | +| DB | PostgreSQL/SQLite| Conversation persistence | + +--- + +## Communication Flow + +![Architecture](images/diagram.svg 'Architecture') + +--- + +## Extensibility + +- Swap model providers using `LLM_PROVIDER=openai|anthropic` in `.env` +- Extend document support by dropping files into `documents/` (or configuring another vector store) +- Customize the avatar renderer by modifying the AVATAR pipeline or using alternatives to D-ID +- Replace Azure TTS with ElevenLabs or local TTS via configurable adapters diff --git a/docs/alive/deployment.md b/docs/alive/deployment.md new file mode 100644 index 0000000..6e6f441 --- /dev/null +++ b/docs/alive/deployment.md @@ -0,0 +1,149 @@ +--- +sidebar_position: 0.0007 +--- + +# Deployment + +This guide outlines how to deploy the ALIVE system using the official Docker images. ALIVE consists of two main services: + +- `sermas-eva`: Backend for chat, emotion tagging, RAG, and LLM integration +- `sermas-avatar`: Avatar rendering and emotional TTS using D-ID and Azure + +--- + +## Prerequisites + +Before you begin, ensure you have: + +- Docker installed (v27+ recommended) including the compose plugin +- A valid OpenAI or Anthropic API key +- An Azure Speech key (for TTS) +- A D-ID API key (for the 3D avatar) + +--- + +## Docker Images + +The official images are hosted on Docker Hub: + +| Component | Image | +|-----------|-------| +| EVA | [`thingenious/sermas-eva`](https://hub.docker.com/r/thingenious/sermas-eva) | +| AVATAR | [`thingenious/sermas-avatar`](https://hub.docker.com/r/thingenious/sermas-avatar) | + +--- + +## Quick Start with `docker-compose` + +1. Copy and rename the example configuration: + + ```shell + cp compose.example.yaml compose.yaml + # you might want to commment out / remove the "build" sections + cp .env.example .env + ``` + +2. Edit the `.env` file and fill in: + + ```env + OPENAI_API_KEY=your-key + AZURE_SPEECH_API_KEY=your-key + DID_API_KEY=your-did-key + CHAT_API_KEY=choose-a-secret + # example generation with: + # openssl rand -hex 32 + # or python -c "import secrets; print(secrets.token_hex(32))" + ``` + +3. Start the stack: + + ```shell + docker compose -f compose.yaml up -d + ``` + +Once running: + +- EVA backend: [http://localhost:8000](http://localhost:8000), WebSocket at [ws://localhost:8000/ws](ws://localhost:8000/ws) +- AVATAR frontend: [http://localhost:3000](http://localhost:3000) + +--- + +## Reverse Proxy with Nginx and HTTPS (Recommended) + +To expose ALIVE services over the internet securely, you can place an Nginx reverse proxy in front of the EVA and AVATAR containers and enable HTTPS using Let's Encrypt and Certbot. + +### Example Nginx Config (for `/etc/nginx/sites-available/alive`) + +```nginx +server { + listen 80; + server_name your-domain.com; + + location / { + return 301 https://$host$request_uri; + } +} + +server { + listen 443 ssl; + server_name your-domain.com; + + ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; + + location / { + proxy_pass http://localhost:3000; # AVATAR frontend + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + + location /ws/ { + proxy_pass http://localhost:8000/ws/; # EVA WebSocket + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + # optional (admin panel) + location /admin/ { + proxy_pass http://localhost:8000/admin/; + } + + location /healthz { + proxy_pass http://localhost:8000/healthz; + } +} +``` + +## Advanced Configuration + +You can configure behavior via environment variables. Some key options: + +| Variable | Description | +|----------|-------------| +| `LLM_PROVIDER` | `openai` or `anthropic` | +| `MAX_HISTORY_MESSAGES` | Number of chat messages retained | +| `CHROMA_DB_DIR` | Directory for Chroma vector DB | +| `CHAT_WS_URL` | URL for WebSocket clients | +| `ADMIN_API_KEY` | Protects admin endpoints | + +--- + +## Health & Debug + +- EVA: `GET /healthz` → `{ "status": "ok" }` +- Admin Panel: `GET /admin/` (requires token) + +You can inspect container logs with: + +```shell +docker compose logs -f +``` + +--- + +## Source & Updates + +For latest changes, visit the GitHub repository: + +👉 [`thingenious/sermas`](https://github.com/thingenious/sermas) diff --git a/docs/alive/images/diagram.svg b/docs/alive/images/diagram.svg new file mode 100644 index 0000000..b1235e2 --- /dev/null +++ b/docs/alive/images/diagram.svg @@ -0,0 +1 @@ +

Web Browser (JavaScript / WebRTC)

ASP.NET Core Backend

D-ID API (Avatar Clips)

Microsoft Azure
Speech Services

EVE LLM
(WebSocket)

\ No newline at end of file diff --git a/docs/alive/introduction.md b/docs/alive/introduction.md new file mode 100644 index 0000000..d18779b --- /dev/null +++ b/docs/alive/introduction.md @@ -0,0 +1,61 @@ +--- +sidebar_position: 0.0005 +--- +# Introduction + +**ALIVE** (Avatar Liveness for Intelligent Virtual Empathy) is an open, modular system for building emotionally intelligent, multimodal virtual assistants. Designed as part of the [SERMAS Project](https://sermasproject.eu/), ALIVE integrates natural language processing, emotional modeling, real-time WebSocket communication, and 3D avatar animation into a unified experience. + +At its core, ALIVE aims to combine **meaningful dialogue** with **human-like presence** by bringing together: + +- 🤖 **Conversational AI** – powered by LLMs and RAG +- 🎭 **Emotional Context** – responses tagged with affective cues +- 🧍‍♀️ **Avatar Expression** – lifelike visual feedback using D-ID and emotional TTS +- 🎙️ **Multimodal Input** – support for both typed and spoken interactions +- 🌐 **Real-Time WebSocket Streaming** – ensures low-latency conversational flow + +--- + +## System Components + +ALIVE is composed of two tightly-integrated subsystems: + +### EVA – Empathetic Virtual Assistant + +- Real-time WebSocket chat backend (FastAPI) +- LLM-driven generation with context memory and summarization +- Emotionally segmented responses with RAG source attribution +- Conversation persistence and summarization + +### AVATAR – Emotional Avatar Rendering + +- ASP.NET Core API + Web frontend +- Integration with D-ID Clips for animated face generation +- Azure Speech Services for expressive TTS output +- WebRTC streaming for real-time avatar playback + +--- + +## Key Capabilities + +- **Emotion-Aware Messaging** + Every message is tagged with emotional tone (e.g., happy, concerned, thoughtful) to drive both voice and facial expression. + +- **Contextual Memory** + Conversations are persisted, summarized, and reused to maintain continuity across sessions. + +- **Hybrid Input & Output** + Supports both voice and text inputs and delivers multimodal avatar responses. + +- **Open and Modular** + Designed to be composable, Dockerized, and adaptable for research, prototyping, or production deployments. + +--- + +## Source Code and Docker Images + +ALIVE is maintained under the open-source [`thingenious/sermas`](https://github.com/thingenious/sermas) repository on GitHub. + +You can also run the system using our prebuilt Docker images: + +- [`thingenious/sermas-eva`](https://hub.docker.com/r/thingenious/sermas-eva): The FastAPI-based backend with LLM and RAG support +- [`thingenious/sermas-avatar`](https://hub.docker.com/r/thingenious/sermas-avatar): The ASP.NET Core service for avatar animation and voice rendering From f0e3df2e09bf1728b91361c5e447aa0c1d442984 Mon Sep 17 00:00:00 2001 From: Lazaros Toumanidis Date: Mon, 14 Jul 2025 12:29:56 +0300 Subject: [PATCH 2/3] update alive docs --- docs/alive/images/preview.webp | Bin 0 -> 66510 bytes docs/alive/introduction.md | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 docs/alive/images/preview.webp diff --git a/docs/alive/images/preview.webp b/docs/alive/images/preview.webp new file mode 100644 index 0000000000000000000000000000000000000000..b33729644f06e4bc4b12815d236f376c25fd2e7c GIT binary patch literal 66510 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Μ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 K&p0o+b$|frREVJf literal 0 HcmV?d00001 diff --git a/docs/alive/introduction.md b/docs/alive/introduction.md index d18779b..a966da1 100644 --- a/docs/alive/introduction.md +++ b/docs/alive/introduction.md @@ -1,10 +1,13 @@ --- sidebar_position: 0.0005 --- + # Introduction **ALIVE** (Avatar Liveness for Intelligent Virtual Empathy) is an open, modular system for building emotionally intelligent, multimodal virtual assistants. Designed as part of the [SERMAS Project](https://sermasproject.eu/), ALIVE integrates natural language processing, emotional modeling, real-time WebSocket communication, and 3D avatar animation into a unified experience. +![Preview](images/preview.webp "Preview") + At its core, ALIVE aims to combine **meaningful dialogue** with **human-like presence** by bringing together: - 🤖 **Conversational AI** – powered by LLMs and RAG From 2749967629b878116db074a8185d8905ea731779 Mon Sep 17 00:00:00 2001 From: Lazaros Toumanidis Date: Mon, 14 Jul 2025 19:55:22 +0300 Subject: [PATCH 3/3] update _category_.json --- docs/alive/_category_.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/alive/_category_.json b/docs/alive/_category_.json index f172fae..2b6395c 100644 --- a/docs/alive/_category_.json +++ b/docs/alive/_category_.json @@ -3,6 +3,6 @@ "position": 0.0004, "link": { "type": "generated-index", - "description": "How to customize an agent avatar" + "description": "Avatar Liveness for Intelligent Virtual Empathy (ALIVE)" } -} \ No newline at end of file +}