O 'Disaster Response Coordinator' é um sistema interativo baseado em inteligência artificial para coordenação e suporte em situações de desastre. Utiliza a API do Gemini para facilitar a comunicação entre vítimas e serviços de emergência, integrando-se ao Sistema Integrado de Informações sobre Desastres v3. Um diferencial significativo deste sistema é que o diálogo acontece por meio do WhatsApp, uma plataforma amplamente utilizada, tornando o pedido por ajuda muito mais acessível. Essa integração garante que mais pessoas possam alcançar assistência de forma rápida e eficiente em momentos críticos.
Frameworks e APIs:
- .NET 8, .NET Aspire, Blazor
- Redis, Google Places, Google Geo, ViaCep
- WhatsApp Cloud API, Gemini, Paraquemdoar.com.br
Pré-requisitos:
- Instale o .NET 8 e Docker. Verifique com
dotnet --version
. - Configure o Aspire no seu ambiente .NET.
Iniciar o Projeto:
- Atualize
appsettings.json
no diretório API com as chaves necessárias. - Execute
AppHost
para iniciar Redis, backend e frontend.
Interações e Interfaces:
- Chat de Testes: Interface de usuário otimizada para interação via browser para execução de testes sem configuração do Whatsapp.
- Contexto Persistente: Redis com
IChatCacheService
para manter o estado das conversas.
Integrações Externas:
- Informações sobre Desastres: Integração com S2iD v3 para dados em tempo real.
- Localização: Uso de Google Places e Google Geo para identificar hospitais e locais seguros.
- Logística: Consulta de endereços pelo CEP com ViaCep.
O ChatService
é o coração da interação do usuário no "Disaster Response Coordinator". Este serviço gerencia a comunicação entre os usuários e o sistema, utilizando várias APIs e serviços para fornecer respostas precisas e oportunas durante emergências.
O ChatService
implementa a interface IChatService
e realiza múltiplas funções críticas:
- StartChat: Inicia uma nova conversa ou retoma uma existente usando um identificador único (GUID). Configura o diálogo inicial com o usuário e prepara o sistema para responder a consultas baseadas em localização e emergência.
- GetCurrentAddress: Localiza um endereço via CEP utilizando o serviço
ViaCep
. - GetAvailableShelters: Encontra hospitais e abrigos próximos baseando-se nas coordenadas obtidas pelo serviço
IGeocodingService
. - GetDonationPlaces: Procura locais seguros para fazer doações com base em palavras-chave através do serviço
IBenfeitoriaService
.
- GetDesasters: Analisa o risco de desastres em uma localidade específica combinando informações do usuário com dados de desastres obtidos pelo serviço
IS2iDService
.
- Utiliza
IDistributedCache
para armazenar informações que são frequentemente acessadas, como códigos de desastres (Cobrades
), reduzindo a carga sobre as APIs externas e acelerando a resposta do sistema.
- GeminiClient: Utilizado para construir e gerenciar conversas AI-driven.
- Google Places e Google Geo: Para a identificação precisa de locais específicos como hospitais e outros pontos de interesse.
O método SendMessage
demonstra a interação com o usuário:
- Recebe uma mensagem de um usuário e um GUID opcional.
- Inicia ou continua a conversa.
- Processa a mensagem através do
GeminiClient
usando opções de conclusão definidas. - Salva a conversa atualizada no cache para garantir persistência e contexto.
- Cobrades: Dados sobre categorias de desastres são cacheados e atualizados periodicamente para garantir a eficiência e a relevância das informações fornecidas aos usuários em situações de emergência.
- Clone o repositório.
- Crie uma branch para sua feature.
- Faça alterações.
- Envie um pull request.
Agradecemos seu apoio ao "Disaster Response Coordinator". Juntos, fazemos a diferença!