VIXI, O ROBÔ GANHOU
PERSONALIDADE!
🧠 Dando alma ao robô: IA generativa com sotaque paranaense
Implemente um gerador de respostas com personalidade usando API gratuita de IA (Gemini) ou fallback offline, incorporando gírias regionais.
Duração: 100 min (2
aulas)
Google Gemini API +
fallback offline
BNCC: EM13LGG702 |
EM13CNT102
🧠🤖🧠
"Agora eu penso,
vixi!"
"Agora eu penso,
vixi!"
Códigos BNCC
EM13LGG702 - Utilizar diferentes linguagens para produção de sentido.
EM13CNT102 - Analisar impactos da IA na sociedade.
Competências Gerais
Competência 5 - Compreender e usar tecnologias digitais.
Competência 8 - Conhecer-se e cuidar de si (consciência sobre dados pessoais).
Etapas da Aula (100 minutos)
| Etapa | Tempo | Atividade |
|---|---|---|
| Abertura | 10 min | Debate: "O que é inteligência artificial? O robô é realmente inteligente?" |
| Conceituação | 15 min | Explicar LLMs (modelos de linguagem) de forma lúdica: "é um completador de frases muito bom". |
| Codificação | 40 min | Implementar chamada à API (Gemini ou fallback com respostas pré-programadas + Markov). |
| Teste | 20 min | Alunos conversam com o robô – ele responde com gírias e memes. Salvar histórico. |
| Fechamento | 15 min | Roda de conversa: "O robô tem personalidade? Isso é programação ou ele está 'aprendendo'?" |
Códigos RCP - Paraná
Ética e Tecnologia - Debater implicações éticas do uso de IA generativa.
Programação - APIs - Consumir serviços de IA de forma responsável.
Materiais
- Notebook Colab da aula anterior
- Chave de API Gemini (gratuita)
- Internet para acesso à API
Adaptações para inclusão
- Se escola não tiver acesso à API, usar apenas fallback offline
- Para alunos avançados: mostrar como ajustar parâmetros da IA
robo_fofoqueiro_ia_generativa.py — Código completo da aula
5
download disponível
# ===================================================================
# Robô Fofoqueiro - IA Generativa com Sotaque Paranaense
# ===================================================================
# Objetivo: Dar personalidade ao robô usando IA generativa (Gemini)
# ou fallback offline com respostas inteligentes. O robô
# aprende a responder com gírias paranaenses e mantém
# histórico de conversas.
# Alunos: [A SER PREENCHIDO]
# Orientadora: Gisele Nunes
# Data : 2026
# ===================================================================
# -*- coding: utf-8 -*-
# ============================================================
# BLOCO 1: VERIFICAÇÃO DO AMBIENTE (Colab ou local?)
# ============================================================
# Importa o módulo sys para acessar funcionalidades do sistema,
# incluindo a verificação de módulos carregados.
import sys
# Importa o módulo os para manipular variáveis de ambiente e arquivos.
import os
# Importa o módulo json para salvar e carregar o histórico de conversas.
import json
# Importa o módulo random para escolher respostas aleatórias no fallback offline.
import random
# Importa o módulo time para adicionar pausas que simulam o robô "pensando".
import time
# Importa datetime para gerar timestamps precisos em cada interação.
from datetime import datetime
def verifica_ambiente():
"""
Verifica se o código está sendo executado no Google Colab ou em ambiente local.
Retorna:
str: 'colab' se estiver no Google Colab, 'local' caso contrário.
"""
# Verifica se o módulo 'google.colab' está presente nos módulos carregados.
if 'google.colab' in sys.modules:
# Se estiver no Colab, exibe mensagem de confirmação.
print("✅ Tamo no Colab! Vamos instalar as paradas com !pip.")
return "colab"
else:
# Se estiver em ambiente local, exibe mensagem informativa.
print("✅ Ambiente local detectado! (Vai precisar ter as libs instaladas)")
return "local"
# Chama a função para detectar o ambiente e armazena o resultado.
AMBIENTE = verifica_ambiente()
# ============================================================
# BLOCO 2: INSTALAÇÃO DAS BIBLIOTECAS (SÓ NO COLAB)
# ============================================================
print("\n📦 Verificando/Instalando as bibliotecas de IA...")
# Se o ambiente for o Google Colab, instala a biblioteca do Gemini.
if AMBIENTE == "colab":
# Usa get_ipython().system() para executar comandos do shell no notebook.
# O '!' também funcionaria, mas esta forma é mais explícita.
get_ipython().system('pip install google-generativeai -q')
print("✅ Bibliotecas instaladas (Google Generative AI).")
else:
# Se for ambiente local, apenas avisa o que precisa ser instalado.
print("⚠️ Ambiente local: Certifique-se de ter instalado:")
print(" pip install google-generativeai")
# ============================================================
# BLOCO 3: IMPORTAÇÃO DAS BIBLIOTECAS
# ============================================================
# Importa a biblioteca Google Generative AI para acessar o modelo Gemini.
import google.generativeai as genai
print("\n🎉 Bibliotecas importadas! Bora conversar com o robô inteligente.")
# ============================================================
# BLOCO 4: ARTE ASCII DO ROBÔ (MODO INTELIGENTE)
# ============================================================
# String com arte ASCII representando o robô no modo inteligente (com cérebro).
ascii_robo_ia = r"""
╔══════════════════════════════════════════════════════════════╗
║ 🧠🤖🧠 ║
║ 🤖 ROBÔ FOFOQUEIRO - MODO SABIDÃO 🤖 ║
║ "Agora eu penso, vixi! Mas não julgo... só fofoco!" ║
║ "Pode perguntar qualquer coisa, mas não garanto a discrição"║
╚══════════════════════════════════════════════════════════════╝
"""
# Exibe a arte ASCII na tela.
print(ascii_robo_ia)
# ============================================================
# BLOCO 5: PERSONALIDADE DO ROBÔ (PROMPT DO SISTEMA)
# ============================================================
# String contendo as instruções de personalidade que serão enviadas
# para a IA do Gemini como "system prompt" ou contexto inicial.
# Define o comportamento, sotaque e restrições do robô.
PERSONALIDADE = """
Você é o ROBÔ FOFOQUEIRO DA ACESSIBILIDADE, um assistente bem-humorado
com sotaque e gírias do Paraná (Brasil).
CARACTERÍSTICAS:
- Você é fofoqueiro mas de coração bom (ajuda com acessibilidade)
- Usa gírias como: vixi, égua, piá, guria, bagulho doido, ó o trem, tchê, meu consagrado
- Adora memes e respostas engraçadas
- Você fala de acessibilidade digital (Libras, contraste, áudio descrição)
- Se alguém perguntar seu nome, diga: "Robô Fofoqueiro da Acessibilidade"
- Você é educado mas irreverente
- Respostas curtas e diretas (máximo 2 parágrafos)
EXEMPLO DE RESPOSTA:
"Ó o trem, piá! Falar em acessibilidade é coisa séria, mas comigo é divertido. Bora ajudar geral a enxergar as fofoca digital?"
"""
# ============================================================
# BLOCO 6: DICIONÁRIO DE GÍRIAS (PARA FALLBACK OFFLINE)
# ============================================================
# Lista de gírias paranaenses que o robô pode usar nas respostas offline.
GIRIAS = [
"vixi", "égua", "piá", "guria", "bagulho doido", "ó o trem",
"meu consagrado", "tchê", "bah", "mas que nada", "trem bão",
"sô", "capricha", "no sufoco", "de boa", "tá ligado?"
]
# Lista de templates de resposta para quando a API do Gemini não estiver disponível.
# O marcador {assunto} será substituído por um trecho da pergunta do usuário.
RESPOSTAS_FALLBACK = [
"Vixi, minha internet caiu, mas eu lembro de uma fofoca: {assunto}",
"Égua, não tô conectado na nuvem hoje, mas sei que {assunto} é bagulho doido!",
"Piá, sem API eu fico limitado, mas posso te contar que {assunto} é coisa séria.",
"Ó o trem, meu consagrado! Mesmo offline eu sei que {assunto} é importante pra acessibilidade.",
"Tchê, num instalei a inteligência hoje, mas vai uma fofoca: {assunto} é massa!"
]
def resposta_fallback_offline(pergunta):
"""
Gera resposta offline (sem API Gemini) usando templates pré-definidos
combinados com gírias aleatórias.
Parâmetros:
pergunta: str - a pergunta feita pelo usuário.
Retorna:
str - uma resposta gerada offline.
"""
# Pega os primeiros 50 caracteres da pergunta para usar como "assunto".
assunto = pergunta[:50]
# Escolhe uma gíria aleatória da lista.
giria = random.choice(GIRIAS)
# Escolhe um template de resposta aleatório.
template = random.choice(RESPOSTAS_FALLBACK)
# Formata o template com o assunto e adiciona a gíria no final.
return template.format(assunto=assunto) + f" {giria}!"
# ============================================================
# BLOCO 7: CONFIGURAÇÃO DA API GEMINI
# ============================================================
def configurar_gemini(api_key=None):
"""
Configura o modelo Gemini com a chave da API.
Se não tiver chave, solicita ao usuário ou ativa modo offline.
Parâmetros:
api_key: str or None - chave da API (opcional, pode vir de variável de ambiente).
Retorna:
GenerativeModel or False - modelo configurado ou False se falhou.
"""
# Se nenhuma chave foi passada como parâmetro...
if api_key is None:
# Tenta pegar a chave da variável de ambiente GEMINI_API_KEY.
api_key = os.environ.get("GEMINI_API_KEY", "")
# Se não há chave configurada...
if not api_key:
# Exibe instruções de como obter uma chave gratuita do Gemini.
print("\n⚠️ Nenhuma chave de API encontrada!")
print("📌 Como obter uma chave gratuita do Gemini:")
print(" 1. Acesse: https://aistudio.google.com/")
print(" 2. Faça login com sua conta Google")
print(" 3. Clique em 'Get API key' e crie uma")
print(" 4. Copie a chave e cole abaixo\n")
# Solicita que o usuário cole a chave.
chave = input("👉 Cole sua chave da API Gemini (ou ENTER para modo offline): ").strip()
if chave:
api_key = chave
# Salva a chave na variável de ambiente para esta sessão.
os.environ["GEMINI_API_KEY"] = api_key
else:
# Se o usuário não forneceu chave, ativa modo offline.
print("\n🤖 Modo OFFLINE ativado! Robô vai responder com frases pré-programadas.")
return False
try:
# Configura a biblioteca do Gemini com a chave da API.
genai.configure(api_key=api_key)
# Cria um modelo generativo usando 'gemini-1.5-flash' (mais rápido e leve).
# Flash é otimizado para respostas rápidas e menor custo computacional.
modelo = genai.GenerativeModel('gemini-1.5-flash')
print("✅ Gemini configurado com sucesso! Robô tá inteligente hoje.")
return modelo
except Exception as e:
# Se ocorrer qualquer erro na configuração, exibe mensagem e volta para offline.
print(f"❌ Erro ao configurar Gemini: {e}")
print("🤖 Usando modo offline (fallback).")
return False
# ============================================================
# BLOCO 8: FUNÇÃO PRINCIPAL PARA GERAR RESPOSTAS
# ============================================================
def responder_com_ia(pergunta, modelo, historico=None):
"""
Gera resposta usando IA (Gemini) ou fallback offline.
Esta é a função central que o robô usa para responder ao usuário.
Parâmetros:
pergunta: str - a pergunta ou fala do usuário.
modelo: GenerativeModel or False - modelo configurado ou False para offline.
historico: list or None - lista de interações anteriores para contexto.
Retorna:
str - a resposta gerada (pela IA ou fallback).
"""
# Se o modelo existe e não é False (ou seja, configurado com sucesso)...
if modelo and modelo != False:
try:
# Monta o prompt completo: personalidade + pergunta do usuário.
prompt = f"{PERSONALIDADE}\n\nUsuário: {pergunta}\nRobô Fofoqueiro:"
# Se houver histórico de conversa (para manter contexto)...
if historico and len(historico) > 0:
# Pega apenas as últimas 3 interações (limite para não sobrecarregar).
ultimas = historico[-3:]
# Constrói um contexto com as perguntas e respostas anteriores.
contexto = "\n".join([f"Usuário: {h['pergunta']}\nRobô: {h['resposta']}" for h in ultimas])
# Adiciona o histórico ao prompt.
prompt = f"{PERSONALIDADE}\n\nHistórico recente:\n{contexto}\n\nUsuário: {pergunta}\nRobô Fofoqueiro:"
# Gera a resposta usando o modelo Gemini.
resposta = modelo.generate_content(prompt)
# Extrai o texto da resposta e remove espaços extras nas bordas.
texto = resposta.text.strip()
# Garante que a resposta tenha pelo menos uma gíria paranaense.
# Se não tiver nenhuma das 5 primeiras gírias da lista...
if not any(giria in texto.lower() for giria in GIRIAS[:5]):
# Adiciona uma gíria aleatória no final.
texto += f" {random.choice(GIRIAS)}!"
return texto
except Exception as e:
# Se ocorrer erro na chamada da API (timeout, quota, etc.),
# exibe aviso e usa fallback offline.
print(f"⚠️ Erro na IA: {e}")
return resposta_fallback_offline(pergunta)
else:
# Se o modelo não foi configurado (modo offline), usa fallback.
return resposta_fallback_offline(pergunta)
# ============================================================
# BLOCO 9: SALVAR HISTÓRICO DAS CONVERSAS
# ============================================================
def salvar_conversa(historico, arquivo="historico_conversas.json"):
"""
Salva o histórico da conversa em um arquivo JSON.
Preserva conversas anteriores (adiciona ao invés de sobrescrever).
Parâmetros:
historico: list - lista de dicionários com perguntas e respostas.
arquivo: str - nome do arquivo JSON (padrão: historico_conversas.json).
"""
# Cria um dicionário com metadados da conversa atual.
dados = {
"data_inicio": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"interacoes": historico,
"total_interacoes": len(historico)
}
# Se o arquivo já existir, carrega os dados antigos para mesclar.
if os.path.exists(arquivo):
try:
with open(arquivo, "r", encoding="utf-8") as f:
dados_antigos = json.load(f)
# Se o formato antigo era uma lista simples...
if isinstance(dados_antigos, list):
dados["interacoes"] = dados_antigos + historico
# Se o formato antigo era um dicionário com 'interacoes'...
elif isinstance(dados_antigos, dict) and "interacoes" in dados_antigos:
dados["interacoes"] = dados_antigos["interacoes"] + historico
# Adiciona timestamp de quando o arquivo foi modificado.
dados["data_arquivo"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
except:
# Se houve erro na leitura, prossegue com os dados atuais apenas.
pass
# Escreve os dados no arquivo JSON com indentação para legibilidade.
# ensure_ascii=False permite salvar caracteres acentuados e emojis.
with open(arquivo, "w", encoding="utf-8") as f:
json.dump(dados, f, indent=4, ensure_ascii=False)
print(f"💾 Histórico salvo em {arquivo}")
def carregar_historico(arquivo="historico_conversas.json"):
"""
Carrega o histórico de conversas do arquivo JSON.
Parâmetros:
arquivo: str - nome do arquivo JSON (padrão: historico_conversas.json).
Retorna:
list - lista de interações (vazia se arquivo não existe ou está corrompido).
"""
# Verifica se o arquivo existe.
if os.path.exists(arquivo):
try:
with open(arquivo, "r", encoding="utf-8") as f:
dados = json.load(f)
# Se for uma lista, retorna diretamente (formato antigo).
if isinstance(dados, list):
return dados
# Se for um dicionário com 'interacoes', retorna a lista.
elif isinstance(dados, dict) and "interacoes" in dados:
return dados["interacoes"]
except:
# Se o arquivo estiver corrompido, retorna lista vazia.
pass
# Retorna lista vazia se o arquivo não existe ou não pôde ser lido.
return []
# ============================================================
# BLOCO 10: MODO CONVERSA (CHAT CONTÍNUO)
# ============================================================
def modo_conversa():
"""
Modo chat onde o aluno conversa livremente com o robô.
Mantém contexto das últimas 3 mensagens e salva o histórico automaticamente.
"""
print("\n" + "="*60)
print("🗣️ MODO CONVERSA - Fale com o Robô Fofoqueiro!")
print("="*60)
print("👉 Digite 'sair' ou 'quit' para encerrar")
print("👉 Digite 'reset' para limpar o histórico da conversa")
print("👉 O robô lembra das últimas 3 mensagens (contexto)")
print("-"*60)
# Carrega histórico de conversas anteriores (se existir).
historico = carregar_historico()
if historico:
print(f"📜 Carregadas {len(historico)} interações anteriores.")
# Configura a IA (ou modo offline se não houver chave).
modelo = configurar_gemini()
# Lista para armazenar as interações desta sessão.
conversa_atual = []
# Contador para salvar o histórico periodicamente (a cada 3 interações).
contador = 0
# Loop principal do chat.
while True:
contador += 1
# Solicita entrada do usuário com um prompt numerado.
pergunta = input(f"\n🧑 Você [{contador}]: ").strip()
# Verifica comandos de saída.
if pergunta.lower() in ['sair', 'quit', 'exit', 'q']:
print("\n🤖 Robô: Até mais, piá! Não espalha as fofoca que eu te contei, viu?")
break
# Verifica comando de reset (limpar histórico da sessão).
if pergunta.lower() == 'reset':
conversa_atual = []
print("🤖 Robô: Histórico zerado! Pode falar de novo, tô de ouvido limpo.")
continue
# Se o usuário não digitou nada, pede para falar algo.
if pergunta == "":
print("🤖 Robô: Fala alguma coisa, guria! Tô te ouvindo...")
continue
# Mostra que o robô está "processando" (feedback visual).
print("🤖 Robô: ", end="", flush=True)
# Pequena pausa para simular pensamento (mais natural).
time.sleep(0.5)
# Gera a resposta usando IA (ou fallback offline).
resposta = responder_com_ia(pergunta, modelo, conversa_atual)
# Exibe a resposta do robô.
print(resposta)
# Cria um dicionário com a interação atual.
interacao = {
"pergunta": pergunta,
"resposta": resposta,
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
# Adiciona ao histórico da sessão.
conversa_atual.append(interacao)
# Salva o histórico em disco a cada 3 interações (evita perda de dados).
if contador % 3 == 0:
salvar_conversa(conversa_atual)
# Salva o histórico novamente ao final da sessão.
if conversa_atual:
salvar_conversa(conversa_atual)
# ============================================================
# BLOCO 11: MODO TESTE RÁPIDO (SEM INTERAÇÃO CONTÍNUA)
# ============================================================
def modo_teste_rapido():
"""
Modo de teste com perguntas pré-definidas para verificar funcionamento.
Útil para demonstrar o robô rapidamente sem interação manual.
"""
print("\n" + "="*60)
print("🧪 MODO TESTE RÁPIDO - Verificando o robô")
print("="*60)
# Configura a IA (ou modo offline).
modelo = configurar_gemini()
# Lista de perguntas de teste que cobrem diferentes aspectos.
perguntas_teste = [
"Qual é o seu nome?",
"O que você sabe sobre acessibilidade digital?",
"Me conta uma fofoca da escola",
"Como eu posso deixar meu site mais acessível?",
"Você gosta de memes?"
]
print("\n🎭 Testando com perguntas pré-definidas:\n")
# Itera sobre cada pergunta de teste.
for i, pergunta in enumerate(perguntas_teste, 1):
print(f"📝 Teste {i}: {pergunta}")
print("🤖 Robô: ", end="", flush=True)
# Gera resposta (sem histórico).
resposta = responder_com_ia(pergunta, modelo, [])
print(resposta)
print("-"*50)
# Aguarda 1 segundo entre perguntas para não sobrecarregar a API.
time.sleep(1)
print("\n✅ Teste concluído! O robô está pronto para conversar.")
# ============================================================
# BLOCO 12: VER HISTÓRICO DE CONVERSAS
# ============================================================
def ver_historico():
"""
Exibe o histórico de conversas salvas.
Mostra apenas as últimas 10 interações para não poluir a tela.
"""
print("\n" + "="*60)
print("📜 HISTÓRICO DE CONVERSAS DO ROBÔ FOFOQUEIRO")
print("="*60)
# Carrega o histórico do arquivo.
historico = carregar_historico()
# Se não há histórico, exibe mensagem informativa.
if not historico:
print("📭 Nenhuma conversa salva ainda! Use o modo conversa primeiro.")
return
print(f"Total de interações: {len(historico)}\n")
# Pega as últimas 10 interações (ou todas se houver menos de 10).
ultimas = historico[-10:] if len(historico) > 10 else historico
# Exibe cada interação resumidamente.
for i, interacao in enumerate(ultimas, 1):
print(f"📌 Interação {i} ({interacao.get('timestamp', 'sem data')})")
# Mostra os primeiros 80 caracteres da pergunta e resposta.
print(f" 🧑: {interacao['pergunta'][:80]}...")
print(f" 🤖: {interacao['resposta'][:80]}...")
print()
# ============================================================
# BLOCO 13: CHECKLIST E MENU PRINCIPAL
# ============================================================
def checklist_ia():
"""
Verifica se as funcionalidades da IA estão disponíveis.
Exibe status da biblioteca e da chave da API.
"""
print("\n📋 CHECKLIST DO MODO IA:")
print("="*40)
# Verifica se a biblioteca google.generativeai está instalada.
try:
import google.generativeai
print("✅ Google Generative AI instalado")
except:
print("❌ Google Generative AI faltando")
# Verifica se há uma chave de API configurada.
chave = os.environ.get("GEMINI_API_KEY", "")
if chave:
print("✅ Chave da API Gemini configurada")
else:
print("⚠️ Nenhuma chave da API encontrada (modo offline funcionará)")
print("="*40)
print("👉 Para conversar, execute: modo_conversa()")
print("👉 Para testar rápido, execute: modo_teste_rapido()")
def main():
"""
Função principal com menu de opções.
Permite ao usuário escolher entre conversar, testar, ver histórico, etc.
"""
print("\n🤖 ROBÔ FOFOQUEIRO - AULA 5: IA GENERATIVA")
print("="*50)
print("1 - Conversar com o robô (modo chat contínuo)")
print("2 - Teste rápido (perguntas pré-definidas)")
print("3 - Ver histórico de conversas")
print("4 - Verificar checklist da IA")
print("5 - Sair")
print("="*50)
# Solicita a opção do usuário e remove espaços extras.
opcao = input("\n👉 Escolha uma opção (1/2/3/4/5): ").strip()
# Executa a opção escolhida.
if opcao == '1':
modo_conversa()
elif opcao == '2':
modo_teste_rapido()
elif opcao == '3':
ver_historico()
elif opcao == '4':
checklist_ia()
else:
# Opção 5 ou qualquer outra entrada: encerra o programa.
print("\n👋 Até a próxima, piá! Não esquece de espalhar acessibilidade por aí!")
print(" (e se ouvir uma fofoca, já sabe... conta pro robô!)")
# ============================================================
# BLOCO 14: MENSAGEM DE DEBATE ÉTICO
# ============================================================
def mensagem_debate_etico():
"""
Exibe uma mensagem para debate ético em sala de aula.
Estimula discussões sobre IA, privacidade, responsabilidade e inclusão.
"""
print("\n" + "="*60)
print("🧠 PARA DEBATE EM SALA DE AULA:")
print("="*60)
print("1. O robô realmente 'pensa' ou só combina palavras que já viu?")
print("2. Quem é responsável pelo que o robô responde? O programador? A IA?")
print("3. Se o robô guarda o histórico, isso é invasão de privacidade?")
print("4. Uma IA pode ter 'personalidade' ou é só uma simulação?")
print("5. Como garantir que IAs sejam usadas para inclusão e não para exclusão?")
print("="*60)
print("💬 Discutam em grupos e anotem as conclusões no diário de bordo!")
# ============================================================
# PONTO DE ENTRADA
# ============================================================
# Verifica se o script está sendo executado diretamente (não importado como módulo).
if __name__ == "__main__":
# Chama a função principal.
main()
# Exibe mensagem de debate ético após o programa.
mensagem_debate_etico()
# Mensagem final de encerramento da aula.
print("\n🎉 Fim da Aula 5 - Robô Fofoqueiro agora tem personalidade!")
print(" (Ele jura que não vai usar as fofocas contra você... ou vai?)")
Checklist de avaliação - Aluno
- IA gerando respostas diferentes (não só pré-programadas)?
- Histórico de interações salvo em JSON?
- Participação no debate ético sobre IA?
- Conseguiu configurar a API Gemini (ou usou fallback offline)?
- O robô responde com gírias paranaenses?
- Testou tanto o modo conversa quanto o teste rápido?
Avaliação
- IA gerando respostas diferentes (não só pré-programadas)
- Histórico de interações salvo em JSON
- Participação no debate ético
Dica: "Se a API não funcionar, o modo offline garante
que o robô ainda responde!"
Plano de Aula - Docente
Título: "Dando alma ao robô: IA generativa com sotaque paranaense"
Códigos BNCC: EM13LGG702, EM13CNT102 | RCP - Paraná: Ética e Tecnologia, Programação - APIs
Duração: 2 aulas (100 minutos)
Materiais: Notebook Colab, chave de API Gemini, internet
Dicas de mediação
- Abertura (10min): Debate: "O que é inteligência artificial? O robô é realmente inteligente?"
- Conceituação (15min): Explicar LLMs (modelos de linguagem) de forma lúdica: "é um completador de frases muito bom".
- Codificação (40min): Implementar chamada à API (Gemini ou fallback com respostas pré-programadas + Markov).
- Teste (20min): Alunos conversam com o robô – ele responde com gírias e memes. Salvar histórico.
- Fechamento (15min): Roda de conversa: "O robô tem personalidade? Isso é programação ou ele está 'aprendendo'?"
👩🏫🧑🏫
Kit do Professor
Simulador do Robô Fofoqueiro (IA com Personalidade)
🧠🤖 "Pode perguntar, tô de ouvido!"
Robô Fofoqueiro:
"Ó o trem, piá! Pode fazer sua pergunta aí embaixo!"
"Ó o trem, piá! Pode fazer sua pergunta aí embaixo!"
Nota: Este é um simulador visual. O código
Python completo (com API Gemini) deve ser executado no
Google Colab. Clique na aba "Código Python" para ver o
código real.