diff --git a/Dockerfile b/Dockerfile index 722aac8..36d30d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# AgenticRAG Dockerfile +# DocuMente Dockerfile # Multi-stage build for production FROM python:3.11-slim as builder diff --git a/LICENSE b/LICENSE index da94ff3..3e9fa32 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ Copyright e Licenza -Progetto: AgenticRAG (aka NotebookLM Agent API) +Progetto: DocuMente Autore: Luca Sacchi Ricciardi Contatto: luca@lucasacchi.net @@ -20,14 +20,14 @@ Nessuna Modifica: È vietato modificare, alterare, adattare, tradurre, decompila Uso Non Autorizzato: È vietato vendere, noleggiare, dare in locazione, concedere in licenza o utilizzare il software per scopi commerciali senza una licenza specifica rilasciata dall'autore. -Tutela del Marchio: Il nome "AgenticRAG", "NotebookLM Agent API" e le metodologie di sviluppo associate sono di proprietà dell'autore. +Tutela del Marchio: Il nome "DocuMente" e le metodologie di sviluppo associate sono di proprietà dell'autore. Legge Applicabile e Foro Competente -Il presente accordo è regolato dalla legge italiana. Per qualsiasi controversia derivante dall'interpretazione, esecuzione o risoluzione della presente licenza e per ogni disputa relativa al progetto "AgenticRAG", sarà competente in via esclusiva il Foro di Milano, Italia. +Il presente accordo è regolato dalla legge italiana. Per qualsiasi controversia derivante dall'interpretazione, esecuzione o risoluzione della presente licenza e per ogni disputa relativa al progetto "DocuMente", sarà competente in via esclusiva il Foro di Milano, Italia. Contatti Per richieste di autorizzazione, collaborazioni o informazioni su licenze commerciali, si prega di contattare l'autore all'indirizzo email: luca@lucasacchi.net. -Documento generato il 6 Aprile 2026 per la release del sistema completo. +Documento generato il 6 Aprile 2026 per la release di DocuMente. diff --git a/README.md b/README.md index d3dd88d..d5289ba 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,52 @@ -# NotebookLM Agent API +# DocuMente [](https://www.python.org/downloads/) [](https://fastapi.tiangolo.com/) [](https://github.com/astral-sh/ruff) [](https://docs.pytest.org/) -> **API e Webhook Interface per Google NotebookLM Automation** +> **Sistema di Retrieval Agentico con AI - Interroga i tuoi documenti in modo intelligente** -Questo progetto fornisce un'interfaccia API REST completa per Google NotebookLM, con supporto webhook per integrazione con altri agenti AI. Sviluppato seguendo le metodologie **Spec-Driven Development (SDD)** e **Test Driven Development (TDD)**. +DocuMente è un sistema RAG (Retrieval-Augmented Generation) avanzato che permette di caricare documenti e interagirci tramite chat conversazionale. Supporta multipli provider LLM (OpenAI, Z.AI, OpenCode Zen, OpenRouter, Anthropic, Google, Mistral, Azure) e offre una moderna interfaccia web React. ## Caratteristiche -- **API REST Completa**: Gestione notebook, fonti, chat, generazione contenuti -- **Webhook System**: Notifiche event-driven per integrazione multi-agent -- **AI Skill**: Interfaccia nativa per OpenCode e altri agenti AI -- **Qualità del Codice**: ≥90% test coverage, type hints, linting -- **Metodologie**: SDD + TDD + Conventional Commits +- **🧠 Multi-Provider LLM**: Supporta 8 provider diversi, scegli il tuo preferito +- **📄 Gestione Documenti**: Upload tramite drag & drop, supporta PDF, DOCX, TXT, MD +- **💬 Chat Intelligente**: Interroga i tuoi documenti con risposte contestuali +- **🔗 API REST Completa**: Integra DocuMente nelle tue applicazioni +- **🎨 Interfaccia Web Moderna**: React 18 + TypeScript + Tailwind CSS +- **🔒 Autenticazione Sicura**: API Key + JWT support +- **🐳 Containerizzato**: Docker e docker-compose pronti all'uso ## Requisiti - Python 3.10+ - [uv](https://github.com/astral-sh/uv) per dependency management -- Account Google con accesso a NotebookLM +- Node.js 18+ (per il frontend) +- Docker (opzionale) ## Installazione ```bash # Clona il repository -git clone https://github.com/example/notebooklm-agent.git -cd notebooklm-agent +git clone https://github.com/example/documente.git +cd documente -# Crea virtual environment +# Backend +cd backend uv venv --python 3.10 source .venv/bin/activate - -# Installa dipendenze uv sync --extra dev --extra browser -# Installa pre-commit hooks -uv run pre-commit install - -# Configura ambiente -cp .env.example .env -# Modifica .env con le tue configurazioni +# Frontend +cd ../frontend +npm install ``` ## Configurazione -Crea un file `.env`: +Crea un file `.env` nella cartella backend: ```env # API Configuration @@ -56,60 +55,76 @@ NOTEBOOKLM_AGENT_WEBHOOK_SECRET=your-webhook-secret NOTEBOOKLM_AGENT_PORT=8000 NOTEBOOKLM_AGENT_HOST=0.0.0.0 -# NotebookLM Configuration -NOTEBOOKLM_HOME=~/.notebooklm -NOTEBOOKLM_PROFILE=default +# LLM Provider API Keys (configura almeno uno) +OPENAI_API_KEY=sk-... +ZAI_API_KEY=... +OPENCODE_ZEN_API_KEY=... +OPENROUTER_API_KEY=... +ANTHROPIC_API_KEY=... +GOOGLE_API_KEY=... +MISTRAL_API_KEY=... +AZURE_API_KEY=... + +# Vector Store +QDRANT_HOST=localhost +QDRANT_PORT=6333 # Logging LOG_LEVEL=INFO LOG_FORMAT=json ``` -## Autenticazione NotebookLM - -```bash -# Login a NotebookLM (prima volta) -notebooklm login - -# Verifica autenticazione -notebooklm auth check -``` - ## Avvio -```bash -# Development server -uv run fastapi dev src/notebooklm_agent/api/main.py +### Con Docker (Consigliato) -# Production server -uv run gunicorn notebooklm_agent.api.main:app -w 4 -k uvicorn.workers.UvicornWorker +```bash +docker-compose up ``` -L'API sarà disponibile su `http://localhost:8000` +### Manuale -- API docs: `http://localhost:8000/docs` -- OpenAPI schema: `http://localhost:8000/openapi.json` +```bash +# Backend +cd backend +uv run fastapi dev src/agentic_rag/api/main.py + +# Frontend (in un altro terminale) +cd frontend +npm run dev +``` + +L'applicazione sarà disponibile: +- **Web UI**: http://localhost:3000 +- **API docs**: http://localhost:8000/api/docs +- **OpenAPI schema**: http://localhost:8000/openapi.json ## Uso Rapido +### Via Web UI + +1. Accedi a http://localhost:3000 +2. Inserisci la tua API Key +3. Carica documenti nella sezione "Documents" +4. Inizia a chattare nella sezione "Chat" + +### Via API + ```bash -# Creare notebook -curl -X POST http://localhost:8000/api/v1/notebooks \ +# Upload documento +curl -X POST http://localhost:8000/api/v1/documents \ -H "X-API-Key: your-key" \ - -H "Content-Type: application/json" \ - -d '{"title": "Ricerca AI"}' + -F "file=@documento.pdf" -# Aggiungere fonte -curl -X POST http://localhost:8000/api/v1/notebooks/{id}/sources \ +# Query RAG +curl -X POST http://localhost:8000/api/v1/query \ -H "X-API-Key: your-key" \ -H "Content-Type: application/json" \ - -d '{"type": "url", "url": "https://example.com"}' - -# Generare podcast -curl -X POST http://localhost:8000/api/v1/notebooks/{id}/generate/audio \ - -H "X-API-Key: your-key" \ - -H "Content-Type: application/json" \ - -d '{"instructions": "Make it engaging"}' + -d '{ + "question": "Qual è il contenuto principale?", + "provider": "openai", + "model": "gpt-4o-mini" + }' ``` ## Testing @@ -119,50 +134,53 @@ curl -X POST http://localhost:8000/api/v1/notebooks/{id}/generate/audio \ uv run pytest # Con coverage -uv run pytest --cov=src/notebooklm_agent --cov-report=term-missing +uv run pytest --cov=src/agentic_rag --cov-report=term-missing # Solo unit test uv run pytest tests/unit/ -m unit - -# Solo integration test -uv run pytest tests/integration/ -m integration ``` -## Sviluppo - -### Workflow - -1. **Spec-Driven**: Definisci requisiti in `prd.md` -2. **TDD**: Scrivi test → Implementa → Refactor -3. **Conventional Commits**: Segui lo standard per i commit -4. **Pre-commit**: I controlli automatici garantiscono qualità - -### Struttura Progetto +## Struttura Progetto ``` -notebooklm-agent/ -├── src/notebooklm_agent/ # Codice sorgente -├── tests/ # Test suite -├── docs/ # Documentazione -├── prd.md # Product Requirements -├── AGENTS.md # Linee guida OpenCode -├── SKILL.md # Definizione skill AI -└── CONTRIBUTING.md # Guida contribuzione +documente/ +├── backend/ +│ ├── src/agentic_rag/ # Codice sorgente backend +│ │ ├── api/ # FastAPI routes +│ │ ├── core/ # Config, auth, LLM factory +│ │ └── services/ # RAG, documents, vector store +│ ├── tests/ # Test suite +│ └── requirements.txt +├── frontend/ +│ ├── src/ # React + TypeScript +│ ├── public/ +│ └── package.json +├── docker-compose.yml +├── Dockerfile +└── README.md ``` +## Provider LLM Supportati + +| Provider | Modelli Principali | Stato | +|----------|-------------------|-------| +| **OpenAI** | GPT-4o, GPT-4, GPT-3.5 | ✅ | +| **Z.AI** | zai-large, zai-medium | ✅ | +| **OpenCode Zen** | zen-1, zen-lite | ✅ | +| **OpenRouter** | Multi-model access | ✅ | +| **Anthropic** | Claude 3.5, Claude 3 | ✅ | +| **Google** | Gemini 1.5 Pro/Flash | ✅ | +| **Mistral** | Mistral Large/Medium | ✅ | +| **Azure** | GPT-4, GPT-4o | ✅ | + ## Documentazione -- [PRD](./prd.md) - Product Requirements Document +- [PRD v2](./prd-v2.md) - Product Requirements Document (DocuMente) +- [Frontend Plan](./frontend-plan.md) - Piano sviluppo frontend +- [Test Coverage](./TEST_COVERAGE_REPORT.md) - Report coverage test - [AGENTS.md](./AGENTS.md) - Linee guida per OpenCode -- [SKILL.md](./SKILL.md) - Skill per agenti AI - [CONTRIBUTING.md](./CONTRIBUTING.md) - Come contribuire -## Stato del Progetto - -⚠️ **Versione Iniziale**: Questo progetto è in fase di setup iniziale. Le funzionalità API sono pianificate per le prossime release. - -Vedi [CHANGELOG.md](./CHANGELOG.md) per lo stato attuale e la roadmap. - ## ⚖️ Licenza e Note Legali Questo software è proprietà riservata di Luca Sacchi Ricciardi. @@ -177,4 +195,6 @@ Vedi [CONTRIBUTING.md](./CONTRIBUTING.md) per le linee guida su come contribuire --- -**Nota**: Questo è un progetto non ufficiale e non è affiliato con Google. Usa le API interne di NotebookLM che possono cambiare senza preavviso. +**Autore**: Luca Sacchi Ricciardi +**Contatto**: luca@lucasacchi.net +**Copyright**: © 2026 Tutti i diritti riservati diff --git a/TEST_COVERAGE_REPORT.md b/TEST_COVERAGE_REPORT.md index cd6c0d6..0761686 100644 --- a/TEST_COVERAGE_REPORT.md +++ b/TEST_COVERAGE_REPORT.md @@ -1,4 +1,4 @@ -# Test Coverage Report - AgenticRAG +# Test Coverage Report - DocuMente ## 📊 Summary diff --git a/docker-compose.yml b/docker-compose.yml index efaf853..62f9da0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -# AgenticRAG - Docker Compose +# DocuMente - Docker Compose # Complete stack with API, Qdrant, and optional services version: '3.8' diff --git a/frontend-plan.md b/frontend-plan.md index 76e33d4..2ed10b8 100644 --- a/frontend-plan.md +++ b/frontend-plan.md @@ -1,8 +1,8 @@ -# Piano di Sviluppo Frontend - AgenticRAG +# Piano di Sviluppo Frontend - DocuMente ## 📋 Overview -Sviluppo di un'interfaccia web moderna per AgenticRAG utilizzando **React 18 + Vite + TypeScript + Tailwind CSS + shadcn/ui**. +Sviluppo di un'interfaccia web moderna per DocuMente utilizzando **React 18 + Vite + TypeScript + Tailwind CSS + shadcn/ui**. --- @@ -319,7 +319,7 @@ npm run preview ### Dashboard ``` ┌─────────────────────────────────────────────────────────┐ -│ 🧠 AgenticRAG Dashboard Documents Chat Settings│ +│ 🧠 DocuMente Dashboard Documents Chat Settings│ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ @@ -343,7 +343,7 @@ npm run preview ### Chat Interface ``` ┌─────────────────────────────────────────────────────────┐ -│ 🧠 AgenticRAG [User ▼] │ +│ 🧠 DocuMente [User ▼] │ ├─────────────────────────────────────────────────────────┤ │ 💬 Chat 1 ┌─────────────────────┐ │ │ 💬 Chat 2 │ │ │ diff --git a/frontend/README.md b/frontend/README.md index 048bd9a..852304e 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,6 +1,6 @@ -# AgenticRAG Frontend +# DocuMente Frontend -Modern React-based web interface for AgenticRAG - Agentic Retrieval System powered by datapizza-ai. +Modern React-based web interface for DocuMente - Sistema di Retrieval Agentico con AI. ## 🚀 Features diff --git a/frontend/src/components/layout/Layout.tsx b/frontend/src/components/layout/Layout.tsx index 5fee257..f1d37b7 100644 --- a/frontend/src/components/layout/Layout.tsx +++ b/frontend/src/components/layout/Layout.tsx @@ -57,7 +57,7 @@ export function Layout({ children }: LayoutProps) {