๐๏ธ Arquitetura
studyAI โ Documentaรงรฃo do ProjetoApresentaรงรฃo
Arquitetura โ studyAI
Visรฃo geral da arquitetura do sistema: camadas, componentes e responsabilidades.
รndice
- Visรฃo geral
- Camadas
- Componentes
- Diagrama de alto nรญvel
- Fluxo de dados
- Observabilidade
- Decisรตes arquiteturais
Visรฃo geral
O studyAI รฉ uma aplicaรงรฃo web com frontend e backend separados:
- Frontend (Next.js): Interface do utilizador, autenticaรงรฃo, gestรฃo de projetos, chat
- Backend (FastAPI): API REST, lรณgica de negรณcio, orquestraรงรฃo de agentes, RAG
- Infraestrutura: PostgreSQL, Vector DB, Object Storage, Redis
A orquestraรงรฃo de agentes (LangGraph) corre no backend. O RAG usa os ficheiros e documentos do projeto como base de conhecimento.
Camadas
A carregar diagramaโฆ
Componentes
Frontend (Next.js)
| Componente | Responsabilidade |
|---|---|
| Auth | Login, registo, gestรฃo de sessรฃo |
| Projects | Listar, criar, editar, apagar projetos |
| Files | Upload, listagem, remoรงรฃo de ficheiros |
| Documents | Visualizaรงรฃo e ediรงรฃo de documentos gerados |
| Questions | Interface de perguntas e respostas |
| Chat | Interface de chat com RAG QA Agent |
| Evaluate | Submissรฃo de respostas e visualizaรงรฃo de feedback |
Backend (FastAPI)
| Componente | Responsabilidade |
|---|---|
| API Layer | Rotas, validaรงรฃo, autenticaรงรฃo, rate limiting |
| Auth Service | Registo, login, JWT, refresh tokens |
| Project Service | CRUD projetos |
| File Service | Upload, armazenamento, ingestรฃo |
| Ingest Pipeline | Parse โ Chunk โ Embed โ Index |
| RAG Service | Retrieval, construรงรฃo de contexto |
| Agent Orchestrator | LangGraph, Router, execuรงรฃo de agentes |
Infraestrutura
| Componente | Uso |
|---|---|
| PostgreSQL | Users, projects, files, documents, questions, progress |
| Vector DB | Embeddings, similarity search |
| Object Storage | Ficheiros carregados (PDFs, etc.) |
| Redis | Sessรตes, rate limiting, cache, filas |
| Observabilidade | Tracing LLM/agents, mรฉtricas, logs (LangSmith, Langfuse, etc.) |
Diagrama de alto nรญvel
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ UTILIZADOR โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FRONTEND (Next.js) โ
โ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Auth โ โ Projects โ โ Upload โ โ Chat โ โ Questions โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HTTPS
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ API (FastAPI) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Middleware: Auth ยท Rate Limit ยท CORS ยท Logging โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ /auth โ โ/projects โ โ /files โ โ /chat โ โ /evaluate โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโ
โ Ingest Pipeline โ โ LangGraph Agents โ โ RAG Service โ
โ Parse โ Chunk โ โ โ Router โ Planner โ โ โ Retrieve โ Context โ
โ Embed โ Index โ โ Writer โ ... โ โ โ LLM โ
โโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATA LAYER โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ PostgreSQL โ โ Vector DB โ โ Storage โ โ Redis โ โ
โ โ (relacional)โ โ (embeddings)โ โ (ficheiros)โ โ (cache, q) โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OBSERVABILIDADE โ
โ LangSmith / Langfuse โ Tracing LLM, agents, RAG ยท Mรฉtricas ยท Logs โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Fluxo de dados
1. Upload e ingestรฃo
User uploads PDF
โ API recebe ficheiro
โ Guarda em Object Storage
โ Regista em DB (status: pending)
โ Job: Parse PDF โ texto
โ Chunk texto (por parรกgrafo/header)
โ Embed cada chunk
โ Guarda em Vector DB (metadata: project_id, file_id)
โ Atualiza DB (status: processed)
2. Geraรงรฃo de conteรบdo
User: "Quero estudar X"
โ API /chat ou /generate
โ Router: intent = generate_content
โ Content Planner: RAG retrieval โ estrutura
โ Content Writer: por cada secรงรฃo, RAG โ Markdown
โ Question Generator: documento โ perguntas
โ Guarda documento + perguntas em DB
โ Re-indexa documento no Vector DB
โ Resposta ao user
3. Chat (QA)
User: "O que รฉ Y?"
โ API /chat
โ Router: intent = qa
โ RAG QA Agent: embed query โ retrieval โ top-k chunks
โ LLM: chunks + query โ resposta
โ Resposta ao user (streaming)
4. Avaliaรงรฃo
User submete resposta ร pergunta
โ API /evaluate
โ Router: intent = evaluate
โ Question Evaluator: user_answer + solution + material
โ LLM: compara, score, feedback
โ Guarda em UserProgress
โ Resposta ao user
Observabilidade
O estudoAI depende fortemente de chamadas LLM e de fluxos multi-agente. A observabilidade รฉ essencial para debug, otimizaรงรฃo de custos e monitorizaรงรฃo de qualidade.
Opรงรตes
| Ferramenta | Tipo | Pontos fortes | Integraรงรฃo |
|---|---|---|---|
| LangSmith | Tracing LLM | Nativo LangChain/LangGraph, traces por run, datasets, eval | langsmith SDK, env vars |
| Langfuse | Tracing LLM | Open-source, self-hosted, cost tracking, prompts versioning | langfuse SDK |
| OpenTelemetry | Tracing genรฉrico | Padrรฃo aberto, export para Jaeger, Datadog, etc. | Instrumentaรงรฃo manual |
| Datadog / Sentry | APM + Logs | Full-stack, alertas, jรก usado em muitos projetos | Via OpenTelemetry ou SDK |
Recomendaรงรฃo: LangSmith
LangSmith รฉ a plataforma de observabilidade da LangChain. Integra nativamente com LangChain e LangGraph:
- Traces: Cada invocaรงรฃo de chain/agent gera um trace com spans (LLM calls, tool calls, retrieval)
- Token usage: Tokens de input/output por chamada, custo estimado
- Datasets: Guardar inputs/outputs para avaliaรงรฃo e regressรฃo
- Evaluations: Correr evals em datasets (ex: groundedness, relevรขncia)
- Debug: Inspecionar prompts, respostas e estado entre nรณs do grafo
Configuraรงรฃo: Definir LANGCHAIN_TRACING_V2=true e LANGCHAIN_API_KEY (ou LANGCHAIN_PROJECT). O tracing รฉ automรกtico para LangChain/LangGraph.
O que observar
| Mรฉtrica | Onde | Uso |
|---|---|---|
| Latรชncia por agente | LangSmith spans | Identificar gargalos |
| Tokens por request | LangSmith / Langfuse | Controlar custos |
| Taxa de erro | Logs, APM | Alertas |
| Groundedness | Eval em LangSmith | Qualidade RAG |
| Intent do Router | Trace | Validar classificaรงรฃo |
Diagrama
API / Agents / RAG
โ
โ (traces, spans)
โผ
โโโโโโโโโโโโโโโโโโโโโ
โ LangSmith โ
โ (ou Langfuse) โ
โ โ
โ โข Traces โ
โ โข Token usage โ
โ โข Datasets โ
โ โข Evaluations โ
โโโโโโโโโโโโโโโโโโโโโ
Decisรตes arquiteturais
| Decisรฃo | Escolha | Rationale |
|---|---|---|
| FE/BE separados | Sim | Independรชncia, escalabilidade, possรญvel mobile futuro |
| Monorepo | Sim | Partilha de tipos, deploy coordenado |
| API sรญncrona para chat | Sim (streaming) | UX; jobs async para geraรงรฃo longa |
| RAG no backend | Sim | Embeddings e retrieval server-side |
| State em LangGraph | TypedDict | Estado tipado, merge por agente |
| Observabilidade | LangSmith | Tracing nativo LangChain/LangGraph, evals, cost tracking |
Ver TECH_DECISIONS.md para decisรตes tecnolรณgicas detalhadas.
Zona de prรกtica
Sem perguntas. Clica em Editar para adicionar.