Services
API Graph

API Graph

Il servizio API Graph è l'orchestration gateway di Vitruvyan: espone HTTP per l'esecuzione del pipeline LangGraph, la governance Plasticity, l'audit monitoring e — dalla v2.1 — i capability endpoint della Knowledge Base.

Porta host: 10004 → container 8004
Container: core_graph
Stack: Python / FastAPI


Endpoint principali

Pipeline LangGraph

MetodoPathDescrizione
POST/runEsegue il grafo con {input_text, user_id}
POST/graph/dispatchDispatch con audit monitoring
POST/dispatchAlias backward-compat
POST/run/uploadEsegue il grafo con documento allegato (chunking Babel Gardens)

Health & Monitoring

MetodoPathDescrizione
GET/healthHealth check del servizio
GET/metricsPrometheus metrics
GET/audit/graph/healthStato audit monitoring sessione corrente
GET/audit/graph/metricsMetriche performance esecuzioni
POST/audit/graph/triggerAudit manuale (admin)
POST/audit/grafana/webhookWebhook alert Grafana

Plasticità (Learning Loop)

MetodoPathDescrizione
POST/api/feedbackFeedback thumbs up/down da UI
GET/api/plasticity/statsStatistiche PlasticityManager
GET/api/plasticity/healthReport salute learning system
POST/api/plasticity/cycleTrigger manuale ciclo apprendimento

RAG Admin (Semantic Warden)

MetodoPathDescrizione
GET/admin/rag/healthHealth snapshot tutte le collection
GET/admin/rag/metricsMetriche retrieval storiche
GET/admin/rag/eventsFeed eventi lifecycle RAG

Knowledge Base

MetodoPathAuthDescrizione
POST/kb/ingestX-KB-Secret headerIngest file da GitHub Action → chunking → embedding → upsert vitruvyan_kb
POST/kb/askRAG diretto: embed query → Qdrant → gpt-4o-mini → risposta con sources

KB Endpoints

POST /kb/ingest

Riceve contenuto file dal GitHub Action, esegue chunking heading-aware e upsert su Qdrant vitruvyan_kb.

{
  "files": [
    { "path": "docs/pages/getting-started/overview.md", "content": "# Overview\n..." }
  ],
  "deleted": ["docs/pages/old-page.md"]
}

Response:

{
  "status": "ok",
  "files_processed": 1,
  "files_deleted": 0,
  "total_chunks": 12,
  "points_upserted": 12,
  "errors": []
}
  • Auth: header X-KB-Secret (env KB_INGEST_SECRET)
  • Chunking: heading-aware (H1/H2), max 1200 chars, fallback a paragrafi
  • IDs deterministici UUID5 → idempotente, zero duplicati
  • Pre-delete automatico dei vecchi chunk prima di upsert (gestisce cambio numero sezioni)

POST /kb/ask

Endpoint RAG diretto per la chat widget della KB docs.

{ "query": "Come funzionano i Sacred Orders?", "top_k": 5 }

Response:

{
  "answer": "I Sacred Orders sono...",
  "sources": [
    { "url": "/system-core/sacred-orders", "heading": "Sacred Orders", "excerpt": "..." }
  ],
  "query_ms": 1240
}

Pipeline: embedding via core_embedding (nomic-embed-text-v1.5) → ricerca Qdrant vitruvyan_kb → sintesi gpt-4o-mini.

Vedi anche: KB Auto-Ingest per la pipeline di aggiornamento automatico.


Configurazione (env vars)

VariabileDefaultDescrizione
EMBEDDING_API_URLhttp://embedding:8010/v1/embeddings/batchURL embedding service
QDRANT_URLhttp://core_qdrant:6333URL Qdrant interno
KB_COLLECTIONvitruvyan_kbCollection Qdrant KB
KB_INGEST_SECRETSecret per autenticare GitHub Action
OPENAI_API_KEYChiave OpenAI (sintesi kb.ask + gpt-4o-mini)
QDRANT_HOSTcore_qdrantHost Qdrant (fallback se QDRANT_URL non impostato)
QDRANT_PORT6333Porta Qdrant
PLASTICITY_ENABLEDtrueAbilita learning loop
AUDIT_ENABLEDfalseAbilita audit monitoring LangGraph

Architettura interna