Este projeto é um Monorepo que abriga o código-fonte de um chatbot desenvolvido para auxiliar voluntárias que estão passando pelo treinamento no "Mapa do Acolhimento". O chatbot, denominado "IAna", tem o objetivo de responder dúvidas e fornecer suporte durante o treinamento das voluntárias.
No contexto do projeto, as voluntárias estão passando por um processo de capacitação que abrange vários módulos. Neste primeiro estágio de implementação, o chatbot "IAna" está focado na resposta a perguntas relacionadas ao módulo de "Serviços Públicos" da capacitação.
O projeto é composto por três principais componentes:
-
Chat: Este é o módulo principal do chatbot, onde as voluntárias podem fazer perguntas e receber respostas relacionadas ao módulo de "Serviços Públicos".
-
Questionário: O chatbot também é capaz de apresentar um questionário interativo para as voluntárias. O questionário contém perguntas destinadas a ajudar as voluntárias a melhorar suas respostas e conhecimento sobre o módulo.
-
Feedback: Após a interação com o chatbot, as voluntárias têm a oportunidade de fornecer feedback sobre sua experiência. Isso é feito atribuindo uma nota de 0 a 5 e inclui comentários que ao final são salvos no banco de dados.
O objetivo principal deste projeto é criar uma ferramenta de suporte para as voluntárias em treinamento, proporcionando-lhes respostas eficazes às suas perguntas, oportunidades de aprendizado por meio do questionário e a possibilidade de avaliar a experiência com o chatbot.
O projeto está organizado da seguinte forma:
ui/
: Contém o código da interface do usuário desenvolvida com Next.js.api/
: Contém o código da API Serverless que utiliza Lambdas na AWS.
Para instalar as dependências do projeto, utilize o PNPM. Certifique-se de que você tenha o PNPM instalado em seu sistema. Você pode instalá-lo com o seguinte comando:
npm install -g pnpm
Depois de ter o PNPM instalado, navegue até a raiz do projeto e execute o seguinte comando para instalar as dependências:
pnpm install
Para executar o código localmente, você precisará configurar um arquivo .env
tanto no pacote da API quanto no pacote da UI. Certifique-se de que o arquivo .env
contenha as variáveis de ambiente necessárias. Aqui estão as instruções para rodar localmente:
-
Certifique-se que ambos os pacotes (
ui
eapi
) possuem seus respectivos arquivos.env
-
Execute o seguinte comando para iniciar o projeto localmente:
pnpm run dev
- Execute o seguinte comando para iniciar a UI localmente:
pnpm --filter ui run dev
A UI estará disponível em:
http://localhost:3000
para acessar o chat principal.http://localhost:3000/assessment
para acessar o questionário.http://localhost:3000/feedback
para acessar o chat de feedback.
Na UI, fizemos algumas personalizações no roteamento para mapear os endpoints da API. Os endpoints são acessados nas seguintes rotas:
http://localhost:3000/api/chat
http://localhost:3000/api/chat/assessment
http://localhost:3000/api/chat/feedback
- Execute o seguinte comando para iniciar a API localmente:
pnpm --filter api run dev
A API estará disponível em:
http://localhost:5000/dev
com as respectivas rotas configuradas no arquivoserverless.yml
.
Para atualizar o índice da "IAna", siga estas etapas. Este processo permite que você atualize o conteúdo que o chatbot "IAna" utiliza para fornecer respostas aos usuários.
Nota: A atualização do índice da "IAna" envolve a geração de novos índices com base nos dados contidos na pasta /data
e a posterior cópia desses índices para um Bucket S3 na AWS. A partir desse Bucket, o chatbot "IAna" acessa os índices para responder a perguntas dos usuários.
Dentro do pacote da API, temos um arquivo chamado handler.ts
. Neste arquivo, você encontrará uma função chamada content
. Esta função é responsável por gerar um novo índice com base nos dados contidos na pasta /data
. A pasta /data
deve ser criada e preenchida com o conteúdo desejado que você deseja incluir no índice.
Para gerar o novo índice, siga estas etapas:
-
Certifique-se de que a pasta
/data
contenha os dados que você deseja incluir no novo índice. -
Descomente o código relacionado à função
content
no arquivoserverless.yml
dentro do pacote da API. Isso permitirá que você execute a função localmente. -
Execute a função
content
para gerar o novo índice. O novo índice será gerado e armazenado na pasta/storage
dentro do pacote da API.
Após a geração do novo índice na pasta /storage
, você precisará copiá-lo manualmente para o Bucket S3 da Amazon. Os índices gerados vivem no Bucket S3 dentro da pasta vector_index
. Certifique-se de que os novos índices sejam copiados para essa localização no Bucket S3. Os novos index devem ser trocados pelos anteriores, portanto, você deve apagar os index antigos - NÃO deixe o bucket com mais de um index simultaneamente.
O chatbot "IAna" está configurado para acessar os índices no Bucket S3 da Amazon. Com os novos índices copiados para o Bucket S3, o chatbot será capaz de fornecer respostas atualizadas com base no novo conteúdo.
Lembre-se de que este processo é manual e não é necessário implantar a função content
na AWS, pois não é uma operação frequente.
O projeto está configurado com o GitHub Actions para automatizar a integração contínua e a implantação. A pipeline de integração inclui testes e build. Após a aprovação dos testes, a implantação é acionada para ambas as partes do projeto.
- A UI é implantada na plataforma Vercel.
- A API é implantada na AWS Serverless com o uso de Lambdas.