Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

(30. Python: Inteligência Artificial Aplicada ) lidar com exceções e IA

# ==========================================================
# 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
1 resposta

Olá, Eduardo! Como vai?

Parabéns pela realização das atividades!

Você conseguiu apresentar um código completo, cobrindo desde o tratamento de exceções com diferentes tipos de erros, passando pela manipulação de DataFrames para filtrar resenhas negativas, até a integração com um LLM para classificação e processamento em lote. Esse conteúdo mostra organização, clareza e aplicação prática de conceitos avançados, reforçando a importância de unir programação estruturada com inteligência artificial para gerar análises mais robustas.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Automatizar: criar funções de logging para registrar erros e resultados em arquivos externos.
  • Expandir: incluir métricas adicionais, como intensidade do sentimento ou categorias temáticas.
  • Visualizar: transformar os resultados em gráficos para facilitar a interpretação e apresentação.

Ah uma pergunta: O que você gostaria de priorizar mais agora, evoluir o código para análises mais complexas de dados ou integrar os resultados em aplicações práticas como dashboards e APIs?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!