Skip to content

estudamais-tech/luiza-AI-2.0

Repository files navigation

CI/CD — Luiza AI Backend

Python FastAPI Docker Docker-Compose LangChain ChatGPT

Docker stats Docker Image Size Docker Pulls OpenAI API LangChain ChromaDB FastAPI

Luiza — IA Assistente da EstudaMais.tech


Luiza é uma assistente virtual inteligente que utiliza RAG (Retrieval-Augmented Generation) com LangChain e OpenAI para responder perguntas baseadas em documentos internos da EstudaMais.tech. Seu objetivo é oferecer suporte contextualizado sobre a plataforma, produtos e iniciativas como o GitHub Student Pack (GHSP).

📌 O que é este projeto?

Este projeto implementa um sistema de perguntas e respostas com base em contexto interno (arquivos .md), acessível via API FastAPI. As respostas são geradas utilizando LLM da OpenAI, com suporte à busca vetorial em uma base indexada com ChromaDB.


✅ Funcionalidades

  • Carregamento e indexação automática de documentos Markdown na pasta /docs.
  • Fragmentação dos documentos e geração de embeddings com OpenAI.
  • Armazenamento persistente em ChromaDB.
  • RAG com busca por similaridade vetorial (com e sem filtro por tema).
  • API FastAPI com endpoint /chat.
  • Respostas geradas via LLMChain (LangChain).
  • Log de interações e fallback para perguntas fora do escopo.

🚀 Como funciona?

1. Indexação (index_documents.py)

  • Lê os arquivos Markdown da pasta ./docs.
  • Divide o conteúdo em pequenos blocos (chunks).
  • Gera embeddings usando text-embedding-ada-002.
  • Persiste os vetores no diretório ./chroma_db.

2. API (luizaFastAPI.py)

  • Endpoint /chat recebe uma mensagem do usuário.
  • Busca os documentos mais relevantes no banco vetorial.
  • Constrói o contexto com os chunks recuperados.
  • Gera a resposta com um modelo LLM (gpt-4.1-nano) e o PromptTemplate pré-definido.
  • Registra logs e respostas em CSV para futuras análises (ex: geração de FAQ).

🧰 Tecnologias e Ferramentas Utilizadas

Tecnologia/Ferramenta Uso Principal
FastAPI Criação da API HTTP
LangChain Construção do pipeline RAG (retrieval + geração)
OpenAI API Geração de embeddings e respostas
ChromaDB Armazenamento e busca vetorial
Markdown Fonte de contexto em /docs/*.md
python-dotenv Carregamento seguro da API Key
logging + CSV Log de erros e interações do usuário
Pydantic Validação de requisições FastAPI

📁 Estrutura do Projeto

. ├── docs/ # Arquivos Markdown usados como fonte de conhecimento ├── chroma_db/ # Diretório onde o banco vetorial Chroma é persistido ├── logs/ # Logs de erros e CSV com perguntas e respostas │ └── conversas.csv ├── index_documents.py # Script para indexar os documentos ├── loader.py # Função auxiliar para carregar os .md ├── luizaFastAPI.py # API principal da assistente ├── logger.py # Logger com suporte a CSV e arquivos rotativos └── .env # Contém a OPENAI_API_KEY (não versionado)


📡 Endpoint da API

  • POST /chat
    • Requisição:
      { "message": "O que é a EstudaMais.tech?" }
    • Resposta:
      { "answer": "A EstudaMais.tech é uma..." }

🔒 Requisitos

  • Python 3.11+
  • Chave de API da OpenAI (no arquivo .env)
  • Documentos .md em ./docs
  • Dependências:
    pip install -r requirements.txt

🎯 Resultado Esperado

  • O sistema responde perguntas com base apenas nos arquivos internos fornecidos.
  • Caso a pergunta esteja fora do escopo, Luiza responde de forma gentil e clara com uma mensagem padrão.

Exemplo de resposta fora do escopo: "Não tenho essa informação no momento. Deseja perguntar algo relacionado à EstudaMais.tech ou ao GitHub Student Pack (GHSP)? 😊"


🏃‍♂️ Como rodar localmente

A forma recomendada de rodar o projeto é via Docker, pois garante maior compatibilidade e facilidade de configuração. No entanto, também é possível rodar localmente sem Docker, caso prefira.

🔹 Opção 1: Usando Docker (Recomendado)

  1. Clone o repositório:

    git clone https://github.com/estudamais-tech/luiza-AI-2.0
    cd luiza-AI-2.0
  2. Crie o arquivo .env:

    • Crie um arquivo chamado .env na raiz do projeto.
    • Adicione sua chave da OpenAI:
      OPENAI_API_KEY=coloque_sua_chave_aqui (começa com sk-XXXXXXXXXXXXXXXX)
  3. Suba o ambiente com Docker Compose:

    docker-compose up --build
  4. Indexe os documentos (caso necessário):

    • O indexador pode rodar automaticamente no container, mas se precisar rodar manualmente:
      docker-compose exec app python index_documents.py

🔹 Opção 2: Rodando localmente (sem Docker)

  1. Clone o repositório:

    git clone https://github.com/estudamais-tech/luiza-AI-2.0
    cd luiza-AI-2.0
  2. Crie o arquivo .env:

    • Crie um arquivo chamado .env na raiz do projeto.
    • Adicione sua chave da OpenAI:
      OPENAI_API_KEY=coloque_sua_chave_aqui (começa com sk-XXXXXXXXXXXXXXXX)
  3. Instale as dependências:

    pip install -r requirements.txt
  4. Indexe os documentos:

    python index_documents.py
  5. Inicie a API localmente:

    uvicorn luiza_fast_api:app --reload

Observação:

  • Certifique-se de que os arquivos .md estejam na pasta /docs.
  • O arquivo .env não é versionado. Cada usuário deve criar o seu manualmente com sua própria chave da OpenAI.

📬 Como enviar perguntas para a Luiza (testes)

Você pode testar a API com ferramentas como:

Usando Swagger UI (recomendado)

{
  "question": "O que é a Estudamais.tech?"
}

🛠️ Contribuição

Contribuições são bem-vindas! Verifique se os arquivos .md foram adicionados à pasta /docs com nomes padronizados (01-visao-geral.md, 02-plataforma.md, etc) para melhor organização por tema.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published