Este projeto implementa um agente de chat interativo para fornecer assistência e informações relacionadas a situações de desastre. A interface do usuário é construída com Streamlit, e o agente backend utiliza LangGraph e modelos de linguagem da OpenAI (via Azure) para processar as consultas dos usuários, buscar informações e fornecer respostas relevantes.
- Antônio Libarato RM558014
- Renan de França Gonçalves RM558413
- Thiago Almança RM558108
O "Disaster Response Agent" é projetado para:
- Entender a Situação do Usuário: Classifica o perfil do usuário (por exemplo, vítima, morador preocupado, familiar) para adaptar a comunicação.
- Buscar Informações:
- Consulta uma base de conhecimento interna para informações já processadas.
- Realiza buscas na internet (usando Tavily Search) para obter dados atualizados ou informações não presentes na base interna.
- Adiciona novas informações encontradas na internet à base de conhecimento interna para uso futuro.
- Interagir com o Usuário: Fornece respostas e orientações através de uma interface de chat amigável.
- Mostrar Transparência: Exibe o processo de pensamento do agente, incluindo as ferramentas que pretende usar e os resultados parciais.
- Interface de Chat Interativa: Desenvolvida com Streamlit para fácil interação.
- Histórico de Conversa: Mantém o histórico da conversa para cada sessão do usuário.
- Classificação de Perfil de Usuário: O agente tenta identificar o tipo de usuário para personalizar a assistência.
- Busca em Base de Conhecimento Interna: Prioriza a busca por informações já existentes e processadas.
- Busca na Internet em Tempo Real: Utiliza Tavily Search para informações atuais ou não encontradas internamente.
- Aprendizado Contínuo (Simples): Resultados de buscas na internet são adicionados à base de conhecimento interna.
- Streaming de Respostas: As respostas e o status do agente são atualizados em tempo real na interface.
- Integração com LLM (Azure OpenAI): Utiliza modelos de linguagem avançados para compreensão e geração de texto.
- Uso de Ferramentas (Tools): O agente pode decidir usar ferramentas como busca interna ou busca na web.
- Python 3.x
- Streamlit: Para a interface web interativa.
- LangGraph: Para construir o fluxo lógico do agente.
- LangChain: Para componentes de LLM, ferramentas, prompts e gerenciamento de estado.
- Langchain-OpenAI: Para integração com os modelos da OpenAI (especificamente Azure OpenAI).
- Langchain-Community: Para ferramentas como
TavilySearchResultse embeddingsHuggingFaceEmbeddings. - Tavily Search API: Para busca na internet.
- Sentence-Transformers: Para gerar embeddings localmente (modelo
all-MiniLM-L6-v2). - Dotenv: Para gerenciamento de variáveis de ambiente.
- Python 3.8 ou superior.
- Acesso a um endpoint do Azure OpenAI e uma chave de API.
- Uma chave de API da Tavily Search.
-
Clone o Repositório (Opcional): Se você baixou os arquivos, pule esta etapa. Caso contrário:
git clone <url-do-seu-repositorio> cd <nome-do-repositorio>
-
Crie um Ambiente Virtual (Recomendado):
python -m venv venv source venv/bin/activate # No Windows: venv\Scripts\activate
-
Instale as Dependências: Certifique-se de que o arquivo
angent.py(ou umrequirements.txtse você criar um) esteja no mesmo diretório ou instale as bibliotecas manualmente:pip install -U streamlit langgraph langchain langchain_openai langchain_community tavily-python python-dotenv sentence-transformers
-
Configure as Variáveis de Ambiente: Crie um arquivo chamado
.envna raiz do projeto com o seguinte conteúdo, substituindo pelos seus valores:TAVILY_API_KEY="sua_chave_tavily_aqui" AZURE_OPENAI_ENDPOINT="seu_endpoint_azure_openai_aqui" AZURE_OPENAI_CHAT_DEPLOYMENT_NAME="nome_do_seu_deployment_chat_aqui" OPENAI_API_VERSION="2024-02-15-preview" # Ou a versão que você está usando # OPENAI_API_KEY="sua_chave_openai_aqui" # Se não estiver usando Azure, descomente e configure
Nota: O código em
angent.pyestá configurado para usarAzureChatOpenAI. Se você pretende usar a API padrão da OpenAI, precisará ajustar a inicialização dollmClientemangent.py.
Após a configuração e instalação das dependências, execute o aplicativo Streamlit:
streamlit run app_streamlit.py