Skip to main content
Glama
README.md5.21 kB
# Projeto de RAG com Arquitetura MCP Aplicação de Busca Aumentada por Geração (RAG) para consulta de documentos, reestruturada com a arquitetura **Memory, Controller, Policy (MCP)** para maior clareza, manutenibilidade e escalabilidade. ## Relatório de Melhorias: Da Arquitetura Inicial para MCP ### 1. Estado Inicial do Projeto O projeto inicial já era funcional e implementava um fluxo RAG básico. No entanto, a arquitetura apresentava os seguintes desafios: - **Alto Acoplamento:** A lógica de negócio, as chamadas à API do Pinecone e a formatação de prompts para o LLM estavam misturadas nos mesmos arquivos de rota da API (ex: `llm_router.py`). - **Dificuldade de Manutenção:** Qualquer alteração, como a troca do modelo de embedding ou a adição de uma nova regra de negócio, exigiria modificar múltiplos arquivos e funções interligadas. - **Baixa Escalabilidade:** Adicionar novos fluxos, como um histórico de conversas ou regras de acesso mais complexas, seria complicado e tornaria o código progressivamente mais confuso. ### 2. Solução Implementada (Arquitetura MCP) Para resolver esses desafios, o projeto foi refatorado para adotar o padrão de arquitetura **Memory, Controller, Policy (MCP)**, que separa claramente as responsabilidades do sistema. **Componentes da Arquitetura MCP:** - **`Memory` (Memória):** - **Responsabilidade:** Gerenciar o estado e o conhecimento de longo prazo do sistema. - **Implementação:** A pasta `memory/` e o arquivo `pinecone_memory.py` agora centralizam toda a interação com o banco de dados vetorial (Pinecone). Qualquer operação de busca ou salvamento de documentos passa por esta camada. - **`Policy` (Política):** - **Responsabilidade:** Aplicar regras de negócio, validações e restrições. - **Implementação:** A pasta `policy/` e o arquivo `policy.py` contêm a lógica para validar perguntas, filtrar resultados com base em score de relevância, ou aplicar quaisquer outras regras de negócio (ex: anonimização de dados, controle de acesso). - **`Controller` (Controlador):** - **Responsabilidade:** Orquestrar todo o fluxo de uma requisição. Ele atua como o "cérebro" da operação. - **Implementação:** A pasta `controller/` e o arquivo `controller.py` recebem a requisição, utilizam a `Memory` para buscar o contexto, aplicam as regras da `Policy` e, finalmente, montam o prompt e chamam o LLM (Gemini) para gerar a resposta. ### 3. Principais Vantagens da Nova Arquitetura 1. **Separação de Responsabilidades:** Cada componente tem um único trabalho, tornando o código mais limpo e fácil de entender. 2. **Facilidade de Manutenção:** Precisa trocar o Pinecone por outro banco vetorial? Modifique apenas a camada de `Memory`. Quer adicionar novas regras de negócio? Trabalhe apenas na camada de `Policy`. 3. **Escalabilidade:** É simples adicionar novas funcionalidades. Por exemplo, para implementar um histórico de conversas, basta expandir a camada de `Memory` e ajustar o `Controller` para usá-lo. 4. **Testabilidade:** Cada camada (Memory, Controller, Policy) pode ser testada de forma isolada, garantindo maior qualidade e confiabilidade do código. ## Diagrama da Nova Arquitetura ```mermaid graph TD subgraph "API Layer" A[FastAPI: /mcp/ask] end subgraph "Application Core (MCP)" B[Controller] C[Policy] D[Memory] end subgraph "External Services" E[Pinecone DB] F[Gemini LLM] end A -- Requisição --> B B -- Aplica Regras --> C B -- Busca Contexto --> D D <--> E B -- Gera Resposta --> F F -- Resposta --> B B -- Resposta Final --> A ``` ## Como Configurar e Rodar o Projeto ### Pré-requisitos - Python 3.9+ - Conta no Pinecone - Chave de API da Google (Gemini) ### 1. Crie o Ambiente Virtual ```bash python -m venv venv ``` ### 2. Ative o Ambiente Virtual - **Windows (PowerShell):** ```powershell .\venv\Scripts\activate ``` - **Linux/macOS:** ```bash source venv/bin/activate ``` ### 3. Instale as Dependências ```bash pip install -r requirements.txt ``` ### 4. Configure as Variáveis de Ambiente - Renomeie o arquivo `.env.example` para `.env`. - Abra o arquivo `.env` e preencha com suas chaves de API: ``` PINECONE_API_KEY="SUA_CHAVE_PINECONE" PINECONE_HOST="SEU_HOST_PINECONE" PINECONE_INDEX_NAME="brito-ai" GEMINI_API_KEY="SUA_CHAVE_GEMINI" ``` ### 5. Rodar o Back-End ```bash uvicorn api_mcp:app --reload --host 0.0.0.0 --port 8000 ``` ### 6. Rodar o Front-End ```bash cd frontend npm run dev ``` ### 7. Rode o Servidor da API ```bash uvicorn api_mcp:app --reload ``` O servidor estará disponível em `http://127.0.0.1:8000/docs`. ## Como Usar a API 1. Acesse a documentação interativa no seu navegador: **[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)**. 2. Encontre o endpoint `POST /mcp/ask`. 3. Clique em "Try it out". 4. Preencha o corpo da requisição com sua pergunta. Exemplo: ```json { "pergunta": "Quais são as principais cláusulas do contrato de aluguel?", "max_results": 3 } ``` 5. Clique em "Execute" para ver a resposta gerada pelo sistema.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MatheusgVentura/Project-One'

If you have feedback or need assistance with the MCP directory API, please join our Discord server