import os
import random
import pandas as pd
from groq import Groq
client = Groq()
emails_brutos = [
{"id": 1, "assunto": "Feedback da reunião", "conteudo": "A apresentação foi excelente e fechamos o cronograma."},
{"id": 2, "assunto": "Aviso de Manutenção", "conteudo": "O servidor ficará instável nesta madrugada das 2h às 4h."},
{"id": 3, "assunto": "Parceria Comercial", "conteudo": "Gostaríamos de agendar uma call para apresentar nossa proposta."}
]
def gerar_lista_resumos(lista_de_emails):
lista_resumos = []
for email in lista_de_emails:
resumo_formatado = f"E-mail ID {email['id']} ({email['assunto']}): {email['conteudo']}"
lista_resumos.append(resumo_formatado)
return lista_resumos
resumos_processados = gerar_lista_resumos(emails_brutos)
print("=== 1. ESCRITA E LEITURA DE TXT ===")
with open("resumos_emails.txt", "w", encoding="utf-8") as arquivo_txt:
for resumo in resumos_processados:
arquivo_txt.write(resumo + "\n")
print("Arquivo 'resumos_emails.txt' gerado com sucesso!")
print("\n--- Demonstrando formas de leitura ---")
with open("resumos_emails.txt", "r", encoding="utf-8") as f:
conteudo_completo = f.read()
print(f"-> Exemplo read() (Tamanho do caractere: {len(conteudo_completo)})")
with open("resumos_emails.txt", "r", encoding="utf-8") as f:
primeira_linha = f.readline()
print(f"-> Exemplo readline(): {primeira_linha.strip()}")
lista_linhas_limpas = []
with open("resumos_emails.txt", "r", encoding="utf-8") as f:
linhas_brutas = f.readlines()
for linha in linhas_brutas:
lista_linhas_limpas.append(linha.strip())
print(f"-> Exemplo readlines() + strip (Total de itens na lista: {len(lista_linhas_limpas)})")
print("-" * 50)
print("=== 2. CRIAÇÃO E MANIPULAÇÃO DE CSV ===")
with open("dados_manuais.csv", "w", encoding="utf-8") as csv_manual:
csv_manual.write("id,assunto,conteudo\n")
for email in emails_brutos:
linha_csv = f"{email['id']},{email['assunto']},{email['conteudo']}\n"
csv_manual.write(linha_csv)
print("Arquivo 'dados_manuais.csv' criado manualmente!")
df_emails = pd.DataFrame(emails_brutos)
df_emails.to_csv("dados_pandas.csv", index=False, encoding="utf-8")
print("Arquivo 'dados_pandas.csv' exportado via Pandas com encoding UTF-8!")
print("-" * 50)
print("=== 3. DESAFIO COMPLETO: PERGUNTAS, RESPOSTAS E LLM ===")
perguntas_iniciais = [
"Qual é a função principal da biblioteca Pandas no Python?",
"Por que usamos a cláusula 'with open' ao manipular arquivos?",
"O que significa o encoding UTF-8 ao salvar um DataFrame?"
]
with open("perguntas_desafio.txt", "w", encoding="utf-8") as f_perguntas:
for pergunta in perguntas_iniciais:
f_perguntas.write(pergunta + "\n")
lista_perguntas_lidas = []
with open("perguntas_desafio.txt", "r", encoding="utf-8") as f_leitura:
for linha in f_leitura:
lista_perguntas_lidas.append(linha.strip())
lista_dados_finais = []
print("Iniciando chamadas à API do Groq para responder as perguntas...")
for idx, pergunta in enumerate(lista_perguntas_lidas, start=1):
try:
completion = client.chat.completions.create(
model="llama3-8b-8192",
messages=[
{
"role": "system",
"content": "Você é um professor de programação direto ao ponto. Responda à pergunta do usuário de forma extremamente sucinta, em no máximo 15 palavras."
},
{
"role": "user",
"content": pergunta
}
],
temperature=0.3,
max_tokens=40
)
resposta_sucinta = completion.choices[0].message.content.strip()
except Exception as e:
resposta_sucinta = f"Erro ao obter resposta da LLM: {e}"
print(f"Perguntas respondidas: {idx}/{len(lista_perguntas_lidas)}")
dicionario_qa = {
"pergunta": pergunta,
"resposta": resposta_sucinta
}
lista_dados_finais.append(dicionario_qa)
df_resultado_final = pd.DataFrame(lista_dados_finais)
df_resultado_final.to_csv("resultado_desafio_llm.csv", index=False, encoding="utf-8")
print("\nDesafio Concluído!")
print("Dicionários estruturados gerados:")
print(lista_dados_finais)
print("\nArquivo final 'resultado_desafio_llm.csv' salvo com sucesso!")