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

(26. Python: Inteligência Artificial Aplicada ) Faça como eu fiz: textos, loops e APIs

# DESAFIOS 1 AO 6

dict_desafio = [
    {"nome": "Maria Silva", "média": 8.9},
    {"nome": "João Santos", "média": 7.5},
    {"nome": "Ana Oliveira", "média": 4.2},
    {"nome": "Pedro Costa", "média": 1.4}
]

n = 0
while n < len(dict_desafio):
    print(dict_desafio[n])
    n += 1

for elemento in dict_desafio:
    print(elemento)

for n in range(5):
    print(n)

for n in range(2, 7, 2):
    print(n)

pessoa = {"nome": "Fabricio", "idade": 19, "altura": 1.87}

for chave, valor in pessoa.items():
    print(f"{chave}: {valor}")

for n in range(11):
    if n % 2 == 0:
        print(n)

# DESAFIOS 7 AO 14

import random

def escreve_texto_corretamente(texto):
    texto = texto.strip().upper().replace("  ", " ")
    return " ".join(texto.split())

textos = [
    "  joÃO   sILVA de   Souza  ",
    "mArIA   aNA   sAntoS   pereIRA",
    "  PeDRO   alvaRes   cabrAl ",
    "  anA   caroLINa   ferreirA",
    "rObertO   carlOS   OliVeIRa"
]

for texto in textos:
    print(escreve_texto_corretamente(texto))

def aloca_alunos_em_salas(nome_do_aluno, lista_de_salas):
    return {
        "nome": nome_do_aluno,
        "sala": random.choice(lista_de_salas)
    }

salas_de_aula = ["Sala 1", "Sala 2", "Sala 3"]

nome_processado = escreve_texto_corretamente(
    "   Eduardo    Cavalcanti   "
)

resultado = aloca_alunos_em_salas(
    nome_processado,
    salas_de_aula
)

print(resultado)

# DESAFIOS 15 AO 19

import os
from google.colab import userdata
from google import genai

os.environ['GOOGLE_API_KEY'] = userdata.get('IA-Aplicada')

client = genai.Client()

email_list = [
    """
    Olá equipe,
    Gostaria de mais informações sobre o curso de Python.
    Quero entender carga horária e certificado.
    Aguardo retorno.
    """,

    """
    Boa tarde,
    Meu pedido atrasou e não recebi atualização.
    Preciso do produto urgentemente.
    Poderiam verificar?
    """,

    """
    Olá,
    Não consigo acessar minha conta na plataforma.
    Mesmo redefinindo a senha o erro continua.
    Preciso de ajuda urgente.
    """
]

def resumidor_de_emails(lista_de_emails):

    for numero, email in enumerate(lista_de_emails):

        resposta = client.models.generate_content(
            model="gemini-2.5-flash",
            contents=f"""
            Resuma este e-mail em apenas 1 linha:
            {email}
            """
        )

        print(f"E-mail {numero + 1}: {resposta.text}")
        print("-" * 50)

resumidor_de_emails(email_list)
1 resposta

Olá, Eduardo. Como vai?

Excelente publicação! Você construiu um roteiro de estudos completíssimo, mostrando uma evolução clara e muito bem estruturada. Passar pela lógica de repetição com while e for, evoluir para a manipulação de strings com funções personalizadas e terminar com a integração da API do Gemini para automação de tarefas é o caminho perfeito na Engenharia de Prompt e IA para Dados.

Para agregar ainda mais valor ao seu código e trazer algumas boas práticas de mercado baseadas no que você construiu, preparei alguns complementos técnicos importantes:

1. Limpeza de Strings com Expressões Regulares (Desafios 7 ao 14)

A sua função escreve_texto_corretamente ficou muito criativa! Você usou uma lógica inteligente ao combinar .split() e .join() para eliminar múltiplos espaços em branco.

No dia a dia com Python, quando precisamos lidar com limpezas complexas de textos que vêm de formulários ou e-mails, costumamos usar a biblioteca nativa re (Expressões Regulares). Ela resolve o problema dos espaços duplicados ou triplicados de forma direta e elegante:

import re

def escreve_texto_corretamente_regex(texto):
    # Substitui qualquer sequência de espaços em branco por um único espaço
    texto_limpo = re.sub(r'\s+', ' ', texto)
    return texto_limpo.strip().upper()

2. Otimização no Retorno da Função (Desafios 15 ao 19)

Na sua função resumidor_de_emails, você realiza o print() dos resumos diretamente dentro do loop. Essa abordagem é ótima para visualização rápida no console.

Contudo, uma boa prática de arquitetura de código é fazer com que a função retorne os dados processados (uma lista de resumos, por exemplo) em vez de apenas imprimi-los. Isso permite que você use esses resumos mais tarde para salvá-los em um arquivo TXT ou em uma planilha do Pandas:

def resumidor_de_emails_melhorado(lista_de_emails):
    resumos_gerados = []

    for email in lista_de_emails:
        resposta = client.models.generate_content(
            model="gemini-2.5-flash",
            contents=f"Resuma este e-mail em apenas 1 linha:\n{email}"
        )
        # Armazena apenas o texto limpo na lista
        resumos_gerados.append(resposta.text.strip())
        
    return resumos_generados

3. Ajuste no Prompt para Evitar Respostas Longas

Modelos de linguagem adoram conversar e, às vezes, mesmo pedindo "apenas 1 linha", o modelo pode adicionar caracteres de tópicos (como hifens ou asteriscos) ou começar com "Aqui está o resumo:".

Para blindar o seu prompt contra respostas tagarelas, uma boa prática é usar delimitadores claros e deixar a instrução ainda mais imperativa:

contents=f"""
Você é um assistente focado em síntese de dados.
Instrução: Resuma o e-mail abaixo em uma única frase curta e direta.
Restrição: Não adicione saudações, comentários ou introduções. Vá direto ao ponto.

E-mail:
{email}
"""

Parabéns pelo excelente domínio dos fundamentos do Python e pela implementação impecável da nova biblioteca do Google GenAI! Compartilhar resoluções completas assim ajuda muito os colegas que estão iniciando na trilha.

Espero que possa ter lhe ajudado!