Este projeto é um chatbot para WhatsApp utilizando:
- EvolutionAPI para integração com o WhatsApp
- FastAPI para a API
- LangChain para gestão da conversa com IA
- Modelos da OpenAI
- Docker e Docker Compose para facilitar o deploy
- Clone o repositório:
git clone https://github.com/pycodebr/whatsapp_ai_bot.git
cd whatsapp_ai_bot- Crie seu
.enva partir do.env.example
Copie o arquivo de exemplo e edite com suas chaves:
cp .env.example .envEdite o .env e adicione os seguintes valores:
OPENAI_API_KEY(sua chave da OpenAI)AUTHENTICATION_API_KEY(chave de autenticação da EvolutionAPI)EVOLUTION_INSTANCE_NAME(nome da instância no EvolutionAPI)
EVOLUTION_INSTANCE_NAME deve ser exatamente o mesmo nome da instância que será criada no painel da EvolutionAPI em:
É por meio desse painel que você adiciona e conecta uma nova instância do WhatsApp e define seu nome.
- Adicione documentos para RAG (Busca por documentos):
Coloque os documentos que deseja usar para busca com RAG (Retrieval-Augmented Generation) na pasta:
rag_files/
Arquivos nessa pasta serão automaticamente vetorizados e utilizados nas respostas com IA.
- Ajuste os prompts no
.env:
Antes de subir os containers, personalize os seguintes prompts conforme o contexto da sua aplicação:
AI_CONTEXTUALIZE_PROMPT(prompt usado para gerar contexto com base nas mensagens do usuário)AI_SYSTEM_PROMPT(prompt que define o comportamento e papel do assistente)
Essas variáveis são fundamentais para que o chatbot responda de forma adequada ao seu caso de uso.
- Suba os containers com Docker Compose:
docker-compose up --build- Acesse o painel da EvolutionAPI:
O painel da EvolutionAPI estará disponível em: http://localhost:8080/manager
Utilize o painel para adicionar e gerenciar suas instâncias.
- Conecte a instância do WhatsApp e configure o webhook:
Após conectar sua instância ao WhatsApp, acesse as configurações da instância no painel da EvolutionAPI e:
- Adicione o seguinte webhook:
http://bot:8000/webhook
- Habilite o evento
MESSAGES_UPSERT
Fique à vontade para abrir issues ou contribuir com o projeto.