Projeto Final da disciplina Python Programming for Data Engineers. O relatório em streamlit está disponível aqui https://appcotai.streamlit.app .
Os requisitos do projeto foram propostos pelo professor Eduardo Miranda.
- Coleta taxas de câmbio da API https://www.exchangerate-api.com/.
- Processar, validar e armazenar os dados em diferentes camadas (raw, silver, gold).
- Integra uma LLM (ex.: ChatGPT) para gerar resumos e insights em linguagem natural, voltados a usuários de negócio.
- Python 3.10.12
- Clone o repositório
git clone https://github.com/devmedeiros/cotai.git- Instale as dependências
pip install -r requirements.txt1. Exchange Rate API
- Acesse https://www.exchangerate-api.com/
- Faça o cadastro gratuito
- Copie sua API key do dashboard
2. Google Gemini API
- Acesse https://ai.google.dev/
- Crie uma conta Google se necessário
- Gere uma API key no Google AI Studio
- Copie sua API key
3. Arquivo .env
Crie um arquivo .env na raiz do projeto com as seguintes variáveis:
API_KEY="CHAVE_DE_API"
GEMINI_API_KEY="API_DO_GEMINI"Na qual API_KEY é sua chave do Exchange Rate API e a GEMINI_API_KEY é a sua chave do Gemini.
Pipeline ETL
Execute o processo completo de ETL com análise do Gemini:
python cotai/pipeline.pyDashboard Streamlit
Para visualizar o relatório interativo:
streamlit run app/main.py- Coletar dados da API https://www.exchangerate-api.com/.
- Salvar resposta JSON bruta em
/raw/com nome dos arquivos padronizados emYYYY-MM-DD.
💡 Configuração via .env ou YAML, nunca hardcode de chaves/API.
- Normalizar os dados (moeda, taxa, base_currency, timestamp).
- Garantir qualidade (nenhuma taxa negativa ou nula).
- Armazenar em
/silver/.
- Gravar dados finais em formato Parquet em
/gold/. - (Opcional) Carregar também em banco relacional (Postgres/MySQL).
Usar o ChatGPT para interpretar as cotações e gerar um resumo em linguagem natural, como:
- “O Euro está 5% mais valorizado em relação ao mês passado.”
- “A volatilidade do JPY em relação ao USD está acima da média.”
Criação de Explicações para Usuários de Negócio. Passar o dataset diário para o ChatGPT e pedir uma explicação executiva:
- “Explique em termos simples como está a variação das 5 principais moedas frente ao Real hoje.”
- Testes unitários (ex.: validação de taxas numéricas).
- Logging estruturado durante ingestão e transformação. Usar biblioteca estruturada (logging ou structlog) com níveis (INFO, ERROR).
- (Opcional) Logging do prompt/response do ChatGPT para auditoria.
- Código no GitHub.
- README documentando setup, execução e como configurar chaves da API de câmbio e do LLM escolhido.
- Arquivos finais (
/gold/) contendo:- Dados limpos em Parquet.
- Relatórios/insights da LLM.
- (Opcional) Dashboard simples em Streamlit/Metabase.