Banrisul

1. Visão Geral

O projeto do Banrisul surgiu a partir de duas Provas de Conceito (PoCs) bem-sucedidas. Seu objetivo é aplicar a inteligência artificial para modernizar processos internos, aumentando a eficiência, a qualidade e a escalabilidade. As duas frentes de atuação são a otimização do atendimento no back office e a melhoria da qualidade do SAC.

Objetivos:

  • QnA backoffice: A meta é otimizar o processo de esclarecimento de dúvidas para funcionários em diferentes setores. A solução tem como objetivo gerar respostas assertivas para perguntas com base em documentos internos e informações da internet, reduzindo o esforço das pessoas e o tempo de resposta, que atualmente pode levar até dois dias úteis.

  • Qualidade do SAC: O objetivo é automatizar os processos de extração, sumarização e categorização de conteúdos das gravações de atendimento, além de possibilitar a análise de KPIs de qualidade. Isso favorecerá a tomada de decisões mais embasadas para a melhoria do NPS (Net Promoter Score) e a redução do esforço do atendente em atividades de registro de chamados.

  • ValiDocs: O objetivo é automatizar a validação de documentos a partir de templates.

Público-alvo: O projeto é destinado aos funcionários do Banrisul, visando otimizar as áreas de back office e SAC

Status Atual: O projeto está em andamento, dando continuidade aos resultados positivos

2. Equipe e Responsáveis

3. Tecnologias e Definições

Fluxograma da aplicação:

![[Pasted image 20250815133854.png]]

Arquitetura preliminar cloud:

![[Pasted image 20250815134104.png]]

Frontend:

  • Framework: React
  • Linguagem: JavaScript
  • Gerenciador de Pacotes: npm

Backend:

  • Framework: FastAPI
  • Linguagem: Python
  • IA e LLM: Azure OpenAI

Infraestrutura:

  • Deployment: Kubernetes, AppServices

4. Como Rodar o Projeto

4.1 Analise de áudio

Pré-requisitos

Certifique-se de ter o seguinte instalado:

  • Python 3.12 ou superior
  • FFmpeg (para manipulação de áudio)
  • Docker (opcional, para execução em contêiner)
  • Acesso a um banco de dados PostgreSQL
  • Credenciais para um serviço de transcrição (OpenAI ou Azure) e, opcionalmente, para o Azure Blob Storage.

Configuração e Execução

1. Configuração do Ambiente

Clone o repositório e navegue até a pasta do backend:

  git clone <url_do_repositorio>
cd febraban-2025-analise-audio/backend
  

Crie e ative um ambiente virtual:

  python3 -m venv env-audio
source env-audio/bin/activate  # Linux/macOS
# ou
.\env-audio\Scripts\activate # Windows
  

Instale as dependências:

  pip install -r requirements.txt
  
2. Variáveis de Ambiente

Crie um arquivo .env na pasta backend/ a partir do exemplo backend/.env.example.

  # --- Configurações do Banco de Dados ---
DB_HOST=localhost
DB_PORT=5432
DB_NAME=audio_analysis
DB_USER=postgres
DB_PASSWORD=sua_senha_aqui

# --- Configurações do Armazenamento ---
# Se as credenciais do Azure não forem fornecidas, o sistema usará o armazenamento local na pasta /storage/uploads
STORAGE_ACCOUNT_NAME=seu_storage_account_aqui
STORAGE_ACCOUNT_KEY=sua_storage_key_aqui
BLOB_CONTAINER_NAME=audio-files

# --- Configurações do Serviço de Transcrição ---
# Escolha "openai" ou "azure". Se deixado em branco, usará um mock.
TRANSCRIPTION_SERVICE=openai

# --- Credenciais OpenAI ---
OPENAI_API_KEY=sua_chave_openai_aqui

# --- Credenciais Azure Speech ---
AZURE_SPEECH_KEY=sua_chave_speech_aqui
AZURE_SPEECH_REGION=sua_regiao_speech_aqui
  
3. Banco de Dados

Execute o script de inicialização para criar o banco de dados e as tabelas necessárias:

  # Certifique-se que seu ambiente virtual está ativado
bash scripts/init_db.sh
  
4. Executando a Aplicação

Com o ambiente virtual ativado e o .env configurado, inicie o servidor:

  uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
  

A API estará disponível em http://localhost:8000/docs.

Execução com Docker

Construa a imagem Docker:

  docker build -t analise-audio-backend .
  

Execute o contêiner:

  docker run -d --name audio-backend-container \
  -p 8000:8000 \
  --env-file ./.env \
  analise-audio-backend
  

A API estará disponível em http://localhost:8000/docs.

Endpoints da API

A documentação interativa completa com todos os endpoints e schemas está disponível na interface do Swagger em http://localhost:8000/docs.

Principais Endpoints
Análise de Áudio
  • POST /audio/upload: Envia um novo arquivo de áudio para ser processado e analisado.
  • GET /audio/: Lista todos os áudios e seus status de análise.
  • GET /audio/{audio_id}: Retorna os detalhes e o resultado da análise de um áudio específico.
Gerenciamento de KPIs
  • POST /kpis/: Cria um novo KPI para ser usado nas análises.
  • GET /kpis/: Lista todos os KPIs cadastrados.
  • GET /kpis/{kpi_id}: Retorna os detalhes de um KPI específico.
  • PUT /kpis/{kpi_id}: Atualiza um KPI existente.
  • DELETE /kpis/{kpi_id}: Deleta um KPI.
Validação (Exemplo)
  • POST /validate/: Endpoint de exemplo para processos de validação.

4.2 Chatbot

Pré-requisitos

Certifique-se de ter instalado:

  • Python 3.11 ou superior
  • Docker (opcional)
  • Acesso a um banco de dados MongoDB (ou Azure Cosmos DB com API do MongoDB)
  • Credenciais para os seguintes serviços da Azure:
    • Azure Blob Storage
    • Azure AI Search
    • Azure OpenAI

Execução Local

Passo 1: Criar ambiente virtual

  # Clone o repositório (se ainda não o fez)
git clone <URL_DO_SEU_REPOSITORIO>
cd Setup-Bot-IA

# Crie e ative o ambiente virtual
python3 -m venv env
source env/bin/activate  # ou .\env\Scripts\activate no Windows
  

Passo 2: Instalar dependências

  pip install -r requirements.txt
  

Passo 3: Criar arquivo .env

Crie um arquivo chamado .env na raiz do projeto, copiando o conteúdo de env-template. Preencha as variáveis com suas credenciais e configurações.

As variáveis essenciais são:

  # Credenciais do Azure OpenAI
AZURE_API_KEY=sua_chave_openai_aqui
AZURE_ENDPOINT=seu_endpoint_openai_aqui
OPEN_AI_DEPLOYMENT_NAME=seu_modelo_de_deploy_aqui

# Credenciais do Azure AI Search
SEARCH_SERVICE_ENDPOINT=seu_endpoint_ai_search_aqui
SEARCH_API_KEY=sua_chave_ai_search_aqui

# Conexão do Azure Blob Storage
BLOB_CONNECTION_STRING="sua_connection_string_aqui"
ACCOUNT_KEY=sua_chave_de_conta_aqui
AZURE_STORAGE_ACCOUNT=seu_nome_de_conta_aqui

# Conexão do MongoDB
MONGODB_CONNECTION_STRING="sua_connection_string_mongodb_aqui"
MONGODB_DB_NAME=seu_banco_de_dados_aqui

# Configurações do Bot
BOT_NAME=nome_do_seu_bot # Será o nome do container e do índice
CONFIG_FILE_CONTAINER=nome_do_container_de_configs
REFERENCE_CONTAINER=nome_do_container_de_referencia
  

Passo 4: Inicializar e rodar o servidor

  # Execute a aplicação com Uvicorn
uvicorn main:app --host 0.0.0.0 --port 5000 --reload
  

Execução com Docker

Passo 1: Construir a imagem Docker

  docker build -t setup-bot-backend .
  

Passo 2: Executar o contêiner

Certifique-se de que seu arquivo .env está preenchido corretamente.

  docker run -d --name bot-backend-container \
  -p 5000:5000 \
  --env-file ./.env \
  setup-bot-backend
  

Endpoints da API

Acesse a documentação interativa do Swagger em http://localhost:5000/docs para explorar e testar todos os endpoints.

A maioria dos endpoints retorna um objeto JSON com a seguinte estrutura:

  {
  "data": "<conteúdo da resposta ou null>",
  "success": true | false,
  "message": "mensagem descritiva da operação"
}
  

Gerenciamento de Documentos do Bot

  • POST /bots/{bot_name}/store_document: Envia um novo documento (.pdf, .docx, etc.) para ser indexado pelo bot.
  • POST /bots/{bot_name}/list_documents/: Lista todos os documentos que o bot já processou.
  • POST /bots/{bot_name}/delete_document/: Deleta um documento do índice e do armazenamento do bot.

Interação com o Bot

  • POST /bots/{user_email}/get_response/{chat_id}: Envia uma pergunta do usuário (user_query) e obtém a resposta do bot.
  • GET /bots/redirect_to_file/{document_name}/{pagina}: Gera um link de acesso temporário para um arquivo fonte usado na resposta.

Gerenciamento de Usuários e Chats

  • POST /bots/: Cria um novo usuário.
  • GET /bots/: Lista todos os usuários.
  • GET /bots/{user_email}: Retorna os dados e chats de um usuário específico.
  • DELETE /bots/{user_email}: Deleta um usuário.
  • POST /bots/{user_email}/add_chat/: Adiciona um novo chat para um usuário.
  • DELETE /bots/{user_email}/delete_chat/{chat_id}: Deleta um chat específico de um usuário.
  • GET /bots/{user_email}/chat_history/{chat_id}: Retorna o histórico de um chat.
  • POST /bots/update_feedback/: Envia um feedback (1 para positivo, -1 para negativo) para uma mensagem específica no histórico.

4.3 ValiDocs

Pré-requisitos

Certifique-se de ter instalado:

  • Python 3.12 ou superior
  • Docker (opcional)
  • Acesso a um banco de dados PostgreSQL
  • Credenciais para Azure Blob Storage

Execução Local

Passo 1: Criar ambiente virtual

  cd backend
python3 -m venv env-backend
source env-backend/bin/activate  # ou .\env-backend\Scripts\activate no Windows
  

Passo 2: Instalar dependências

  pip install -r requirements.txt
  

Passo 3: Criar arquivo .env

  # Configurações do Banco de Dados
DB_USER=seu_usuario_aqui
DB_PASSWORD=sua_senha_aqui
DB_HOST=localhost
DB_PORT=5432
DB_NAME=seu_banco_de_dados_aqui

# Credenciais do Azure
AZURE_STORAGE_CONNECTION_STRING="sua_connection_string_aqui"
AZURE_STORAGE_CONTAINER_NAME="seu_container_name_aqui"
  

Passo 4: Inicializar banco e rodar servidor

  python -m src.utils.migrate_db
uvicorn src.main:app --host 0.0.0.0 --port 8001 --reload
  

Execução com Docker

Passo 1: Construir imagem Docker

  docker build -t validacao-docs-backend .
  

Passo 2: Executar contêiner

  docker run -d --name backend-container \
  -p 8001:8001 \
  --env-file ./.env \
  validacao-docs-backend
  

Endpoints da API (Uso Principal)

Acesse a documentação interativa do Swagger em http://localhost:8001/docs para explorar e testar todos os endpoints.

Validação de Documentos

  • POST /validate/ : Envia um novo documento para análise

Consulta de Resultados

  • GET /documents/ : Lista todas as análises já processadas
  • GET /documents/{document_id} : Retorna os detalhes de uma análise específica

Gerenciamento de Templates (KPIs)

  • POST /templates/ : Cria um novo template de validação
  • GET /templates/ : Lista todos os templates existentes
  • PUT /templates/{template_id} : Atualiza um template
  • DELETE /templates/{template_id} : Deleta um template

Gravação Recapitular: Banrisul Agents 25 de jul. | Reunião | Microsoft Teams

Apresentação https://atos365-my.sharepoint.com/:p:/r/personal/lucas_albini_atos_net/Documents/Relat%C3%B3rio%20Final%20PoC%20IA%20Banrisul.pptx?d=we8cbc020c3334cb9a661e0c0e6718ad4&csf=1&web=1&e=Xw2bm1