import os
from google.colab import userdata
import google.generativeai as genai
from google.api_core.exceptions import TooManyRequests
import time
import pandas as pd
os.environ['GOOGLE_API_KEY'] = userdata.get('GEMINI_API_KEY')
model = genai.GenerativeModel('gemini-2.5-flash')
chat = model.start_chat(history=[])
# Lista para armazenar os resumos dos e-mails
resumo_emails = []
#agente que resume mensagens de e-mail com exponential backoff
def resume_mensagens_emails(mensagens):
print("Resumo das mensagens recebidas:")
max_retries = 5
initial_delay = 5 # seconds
for i, mensagem in enumerate(mensagens):
retries = 0
while retries < max_retries:
try:
resposta = chat.send_message(f"resuma essa mensagem mencionando em poucas palavras o que ela quis dizer: {mensagem}")
print(f"Mensagem {i+1}: {resposta.text}")
resumo_emails.append(resposta.text)
break # Sai do loop de retry se a chamada for bem-sucedida
except TooManyRequests as e:
retries += 1
wait_time = initial_delay * (2 ** (retries - 1)) # Exponential backoff
print(f"\nERRO: Limite de requisições excedido. Tentando novamente em {wait_time} segundos. (Mensagem {i+1} de {len(mensagens)})\n")
print(f"Detalhes do erro: {e}")
time.sleep(wait_time)
except Exception as e:
print(f"\nERRO inesperado ao processar a mensagem '{mensagem}'. Pulando para a próxima. Detalhes: {e}\n")
break # Sai do loop de retry para outros erros
else:
print(f"Não foi possível processar a mensagem '{mensagem}' após {max_retries} tentativas.\n")
mensagens_para_resumir = [
"Olá, gostaria de confirmar o recebimento da documentação enviada ontem.",
"Bom dia, segue em anexo o relatório solicitado para análise.",
"A reunião foi reagendada para sexta-feira às 14h.",
"Obrigado pelo contato. Retornaremos com mais informações em breve.",
"Informamos que seu cadastro foi atualizado com sucesso.",
"Estamos entrando em contato para lembrar do vencimento da sua fatura.",
"Seu pedido foi processado e será enviado nos próximos dias.",
"Parabéns! Sua inscrição foi aprovada com sucesso.",
"Gostaríamos de agendar uma demonstração do produto para sua equipe.",
"Segue a proposta comercial conforme solicitado."
]
resumo = resume_mensagens_emails(mensagens_para_resumir)
# Implemente o with open com modo 'W' para criar e sobrescrever um arquivo .txt com os resumos.
# Use write ou write lines com '\n' para separar cada entrada no arquivo.
with open("resumos.txt", "w", encoding="utf-8") as arquivo:
for resumo in resumo_emails:
arquivo.write(resumo + '\n')
print("Resumos dos emails salvos em 'resumos.txt'.")
# Abra o arquivo em modo 'R' e leia suas linhas, salvando em uma nova lista com strip para remover quebras de linha.
# Explore os métodos read, readline e readlines para diferentes formas de leitura em Python.
resumos_lidos = []
with open("resumos.txt", "r", encoding="utf-8") as arquivo:
for linha in arquivo.readlines():
resumos_lidos.append(linha.strip())
print("\nConteúdo de 'resumos.txt' lido:")
for index, resumo in enumerate(resumos_lidos):
print(f"Resumo {index+1}: {resumo}")
# Importe o Pandas utilizando o alias pd para manipulação de dados.
# (Já importado no início do bloco)
# Construa um arquivo .csv manualmente, escrevendo o cabeçalho e as linhas com as chaves de cada dicionário.
# Este exemplo demonstra a criação manual para um único registro.
dados_manuais = {
'id': '001',
'nome': 'Alice',
'idade': 30,
'cidade': 'São Paulo'
}
nome_arquivo_manual = 'dados_manuais_criados.csv'
with open(nome_arquivo_manual, 'w', encoding='utf-8') as arquivo:
header = ';'.join(dados_manuais.keys())
arquivo.write(header + '\n')
values = ';'.join(str(value) for value in dados_manuais.values())
arquivo.write(values + '\n')
print(f"\nArquivo '{nome_arquivo_manual}' criado com sucesso!")
# Salvando com o pandas (para múltiplos registros)
# Crie um DataFrame com a lista de dicionários e utilize o método to_csv para salvar o CSV com encoding UTF-8.
lista_de_dicionarios = [
{'nome': 'Alice', 'idade': 25, 'cidade': 'São Paulo'},
{'nome': 'Bob', 'idade': 30, 'cidade': 'Nova York'},
{'nome': 'Charlie', 'idade': 35, 'cidade': 'Londres'}
]
df_pandas = pd.DataFrame(lista_de_dicionarios)
df_pandas.to_csv('dados_pandas.csv', index=False, sep=';', encoding='utf-8')
print(f"Arquivo 'dados_pandas.csv' criado com sucesso usando pandas!")
continua no comentário...