# ==========================================================
# REQUISITOS 1 A 7
# ✔ Identificar ValueError, TypeError e ZeroDivisionError
# ✔ Criar bloco try para operações arriscadas
# ✔ Capturar ValueError
# ✔ Capturar TypeError
# ✔ Capturar erros não previstos
# ✔ Utilizar finally
# ✔ Reproduzir exemplos de tratamento de exceções
# ==========================================================
def exemplo_excecoes(a, b):
try:
numero = int(a)
resultado = numero / b
print(resultado)
except ValueError:
print("Valor inválido.")
except TypeError:
print("Tipo de dado incompatível.")
except ZeroDivisionError:
print("Divisão por zero.")
except Exception as erro:
print("Erro inesperado:", erro)
finally:
print("Operação finalizada.")
# ==========================================================
# REQUISITOS 8 A 11
# ✔ Filtrar DataFrame por análises negativas
# ✔ Extrair coluna de resenhas negativas
# ✔ Unir resenhas com join
# ✔ Armazenar texto unificado
# ==========================================================
import pandas as pd
df = pd.DataFrame({
"resenha": ["Muito ruim", "Excelente", "Aplicativo travando"],
"sentimento": ["negativo", "positivo", "negativo"]
})
negativas = df[df["sentimento"] == "negativo"]
texto_resenhas = " | ".join(negativas["resenha"])
# ==========================================================
# REQUISITOS 12 A 18
# ✔ Preparar prompt
# ✔ Configurar cliente LLM
# ✔ Configurar parâmetros
# ✔ Chamar IA
# ✔ Capturar resposta
# ✔ Extrair categorias
# ✔ Converter resposta em lista com split
# ==========================================================
from openai import OpenAI
cliente = OpenAI(
base_url="http://127.0.0.1:1234/v1",
api_key="lm-studio"
)
prompt = f"""
Classifique as resenhas abaixo.
Responda somente uma palavra por categoria.
{texto_resenhas}
"""
try:
resposta = cliente.chat.completions.create(
model="google/gemma-4-e4b",
messages=[{"role":"user","content":prompt}],
temperature=0.2
)
categorias = resposta.choices[0].message.content.split()
except Exception as erro:
print("Erro ao acessar o LLM:", erro)
# ==========================================================
# REQUISITOS 19 A 25
# ✔ Converter JSON em dicionário
# ✔ Utilizar try/except com LLM
# ✔ Executar modelo local
# ✔ Integrar Python + LLM
# ✔ Processar resenhas em lote
# ✔ Contar avaliações
# ✔ Unir resultados em um texto
# ==========================================================
import json
def processar_lote(lista):
resultados = []
for item in lista:
try:
dados = json.loads(item)
resultados.append(dados)
except json.JSONDecodeError:
print("JSON inválido.")
positivos = sum(r.get("sentimento") == "positivo" for r in resultados)
negativos = sum(r.get("sentimento") == "negativo" for r in resultados)
neutros = sum(r.get("sentimento") == "neutro" for r in resultados)
texto_final = " | ".join(
r.get("review_original", "") for r in resultados
)
return positivos, negativos, neutros, texto_final