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).
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.
- 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.
- 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
.
- 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 oPromptTemplate
pré-definido. - Registra logs e respostas em CSV para futuras análises (ex: geração de FAQ).
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 |
. ├── 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)
- POST
/chat
- Requisição:
{ "message": "O que é a EstudaMais.tech?" }
- Resposta:
{ "answer": "A EstudaMais.tech é uma..." }
- Requisição:
- Python 3.11+
- Chave de API da OpenAI (no arquivo
.env
) - Documentos
.md
em./docs
- Dependências:
pip install -r requirements.txt
- 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)? 😊"
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.
-
Clone o repositório:
git clone https://github.com/estudamais-tech/luiza-AI-2.0 cd luiza-AI-2.0
-
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)
- Crie um arquivo chamado
-
Suba o ambiente com Docker Compose:
docker-compose up --build
- O Docker irá instalar todas as dependências automaticamente.
- A API estará disponível em: http://localhost:8000
- Acesse a documentação interativa em: http://localhost:8000/docs
-
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
- O indexador pode rodar automaticamente no container, mas se precisar rodar manualmente:
-
Clone o repositório:
git clone https://github.com/estudamais-tech/luiza-AI-2.0 cd luiza-AI-2.0
-
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)
- Crie um arquivo chamado
-
Instale as dependências:
pip install -r requirements.txt
-
Indexe os documentos:
python index_documents.py
-
Inicie a API localmente:
uvicorn luiza_fast_api:app --reload
- Acesse a documentação interativa em: http://localhost:8000/docs
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.
Você pode testar a API com ferramentas como:
- Acesse: http://localhost:8000/docs
- Use a rota
POST /chat
(ou similar) - Envie um JSON como:
{
"question": "O que é a Estudamais.tech?"
}
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.