Skip to content

PatrickEN-dev/IA-Agent-Tech-For-Humans-Back-end

Repository files navigation

Banco Ágil - Sistema Bancário Digital

Sistema de atendimento bancário com interface web e API backend.

Funcionalidades

  • Autenticação por CPF e data de nascimento
  • Consulta de limite de crédito
  • Solicitação de aumento de limite
  • Cotação de moedas
  • Entrevista para atualização de score

Execução

Backend (API)

python app.py

Frontend (Streamlit)

streamlit run src/ui/streamlit_app_agent.py

Endpoints

  • POST /triage/authenticate - Autenticação
  • GET /credit/limit - Consulta limite
  • POST /credit/request_increase - Solicitação de aumento
  • GET /exchange - Cotação de moedas
  • POST /interview/submit - Entrevista financeira

Dados de Teste

CPF Data Nascimento Score
12345678901 15/05/1990 750
98765432100 22/03/1985 600
11122233344 08/11/1992 850
  • Python 3.11+
  • pip (gerenciador de pacotes)

Instalacao

# 1. Clone o repositorio
git clone <url-do-repositorio>
cd IA-Agent-Tech-For-Humans-Back-end

# 2. Crie um ambiente virtual (recomendado)
python -m venv venv

# Windows
.\venv\Scripts\activate

# Linux/Mac
source venv/bin/activate

# 3. Instale as dependencias
pip install -r requirements.txt

# 4. Configure o ambiente
cp .env.example .env
# Edite o .env se necessario (valores padrao funcionam)

Executando a Interface (Streamlit)

# Execute a interface de chat
streamlit run src/ui/streamlit_app.py

A interface estara disponivel em: http://localhost:8501

Executando a API (Backend)

# Execute o servidor FastAPI
python app.py

A API estara disponivel em: http://localhost:8000 Documentacao automatica: http://localhost:8000/docs

Usando Docker

# Build da imagem
docker build -t agente-bancario .

# Executar container
docker run -p 8000:8000 agente-bancario

Testando a Aplicacao

Clientes de Teste

CPF Nome Data Nascimento Score
12345678901 Maria Silva 15/05/1990 750
98765432100 Joao Santos 22/03/1985 600
11122233344 Ana Oliveira 08/11/1992 850
55566677788 Carlos Souza 30/07/1978 450
99988877766 Beatriz Lima 12/01/1995 300

Exemplo de Uso na Interface

  1. Acesse http://localhost:8501
  2. Digite o CPF: 12345678901
  3. Digite a data de nascimento: 15/05/1990
  4. Apos autenticacao, escolha uma opcao:
    • 1 - Consultar limite de credito
    • 2 - Solicitar aumento de limite
    • 3 - Consultar cotacao de moedas
    • 4 - Encerrar atendimento

Executando Testes Automatizados

# Rodar todos os testes
pytest

# Com cobertura de codigo
pytest --cov=src --cov-report=html

# Testes especificos
pytest tests/test_triagem.py -v
pytest tests/test_credito.py -v
pytest tests/test_entrevista.py -v
pytest tests/test_cambio.py -v

Desafios Enfrentados e Solucoes

1. Sincronia entre Streamlit e AsyncIO

Desafio: Streamlit e preciso chamar funcoes async do backend. Solucao: Uso de asyncio.run() para executar coroutines no contexto sincrono do Streamlit.

2. Persistencia Thread-Safe em CSV

Desafio: Multiplas requisicoes podem modificar CSVs simultaneamente. Solucao: Implementacao de FileLock para garantir acesso exclusivo aos arquivos.

3. Deteccao de Intencao sem LLM

Desafio: Sistema precisa funcionar mesmo sem API de LLM. Solucao: Fallback para classificacao baseada em keywords quando LLM indisponivel.

4. Validacao de Dados de Entrada

Desafio: CPF pode vir com ou sem formatacao. Solucao: Normalizacao automatica removendo pontos e tracos.

5. Transicao Suave entre Agentes

Desafio: Usuario nao deve perceber troca de agentes. Solucao: Maquina de estados no Streamlit com transicoes implicitas.

Escolhas Tecnicas e Justificativas

FastAPI

  • Framework moderno e rapido para APIs Python
  • Suporte nativo a async/await
  • Documentacao automatica via OpenAPI
  • Validacao de dados com Pydantic

Streamlit

  • Simplicidade para criar interfaces de chat
  • Gerenciamento de estado de sessao
  • Atualizacao reativa da interface

CSV para Persistencia

  • Simplicidade para MVP
  • Facilidade de inspecao e debug
  • Atende requisitos do desafio (clientes.csv, score_limite.csv)

JWT para Autenticacao

  • Padrao da industria
  • Stateless (nao requer sessao no servidor)
  • Expiracao configuravel

LangChain (Opcional)

  • Facilita integracao com diferentes LLMs
  • Fallback para regras quando indisponivel
  • Configuravel via variavel de ambiente

Estrutura do Projeto

IA-Agent-Tech-For-Humans-Back-end/
├── app.py                          # Ponto de entrada da API
├── requirements.txt                # Dependencias Python
├── pyproject.toml                  # Configuracao do projeto
├── Dockerfile                      # Container Docker
├── .env.example                    # Template de variaveis de ambiente
├── src/
│   ├── main.py                     # Configuracao FastAPI
│   ├── config.py                   # Gerenciamento de configuracoes
│   ├── api/
│   │   └── routes.py               # Endpoints da API
│   ├── agents/
│   │   ├── triagem.py              # Agente de Triagem
│   │   ├── credito.py              # Agente de Credito
│   │   ├── entrevista.py           # Agente de Entrevista
│   │   └── cambio.py               # Agente de Cambio
│   ├── services/
│   │   ├── auth_service.py         # Servico de autenticacao JWT
│   │   ├── csv_service.py          # Persistencia em CSV
│   │   ├── llm_service.py          # Integracao com LLM
│   │   └── score_service.py        # Calculo de score
│   ├── models/
│   │   ├── domain.py               # Modelos de dominio
│   │   └── schemas.py              # Schemas Pydantic
│   ├── utils/
│   │   ├── exceptions.py           # Excecoes customizadas
│   │   └── logging_config.py       # Configuracao de logs
│   ├── ui/
│   │   └── streamlit_app.py        # Interface Streamlit
│   └── data/
│       ├── clientes.csv            # Base de clientes
│       ├── score_limite.csv        # Tabela score x limite
│       └── solicitacoes_aumento_limite.csv  # Solicitacoes registradas
└── tests/
    ├── conftest.py                 # Fixtures de teste
    ├── test_triagem.py             # Testes do agente de triagem
    ├── test_credito.py             # Testes do agente de credito
    ├── test_entrevista.py          # Testes do agente de entrevista
    └── test_cambio.py              # Testes do agente de cambio

Variaveis de Ambiente

Variavel Descricao Padrao
JWT_SECRET_KEY Chave secreta para JWT dev-secret-key...
JWT_EXPIRATION_MINUTES Tempo de expiracao do token 15
USE_LANGCHAIN Ativar deteccao de intencao via LLM false
LLM_PROVIDER Provedor LLM (openai/anthropic) openai
OPENAI_API_KEY Chave API OpenAI -
ANTHROPIC_API_KEY Chave API Anthropic -
EXCHANGE_API_URL URL da API de cambio https://api.exchangerate-api.com/v4/latest
DATA_DIR Diretorio dos arquivos CSV src/data
LOG_LEVEL Nivel de log INFO

Licenca

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages