Essa é a parte 19 de 24 na série Python + IA: Fundamentos e Projetos Práticos
- Ambiente, Sintaxe Básica e Variáveis em Python — Bootcamp Dia 1
- Como Trabalhar com Listas no Python — Bootcamp Dia 6
- Tuplas e Sets em Python — Estruturas Imutáveis e Conjuntos Inteligentes | Bootcamp Dia 7
- Dicionários em Python: chave e valor, o jeito inteligente de armazenar dados
- Funções em Python: Escreva Menos, Faça Mais
- Tratamento de Erros em Python: programe com segurança
- Leitura e Escrita de Arquivos em Python: salve seus dados no mundo real
- Salvando Dados Estruturados com JSON em Python
- Funções com Múltiplos Retornos em Python: eficiência e organização
- Parâmetros Opcionais e Valores Padrão em Python
- *args e **kwargs em Python: flexibilidade total nas funções
- List Comprehensions em Python: código elegante e eficiente
- Manipulando Arquivos CSV com Python: automatize leitura e escrita de dados
- Começando com Pandas em Python: análise de dados para IA e automações
- Limpeza e Transformação de Dados com Pandas: preparando para IA
- Inteligência Artificial com Python: Fundamentos e Primeira Integração com a OpenAI
- Classificação de Texto com IA: Detectando Temas e Categorias
- Geração de Texto com IA: Criando Respostas Inteligentes com Python
- Chatbot com IA em Python: Construindo um Assistente Inteligente
- Como Detectar Fake News com Python e IA
- Como Criar uma Interface com IA em Python para Detectar Fake News
- Como Avaliar a Qualidade de um Modelo de IA com Python — Além da Acurácia
- Como Balancear Dados e Validar Modelos com Python e IA
- Projeto Final: Criando um Classificador de Fake News com Interface Web em Python (Streamlit)
Hoje você vai criar um chatbot com IA, que responde perguntas ou mantém conversas simples em linguagem natural. Vamos usar o modelo DialoGPT
, da Microsoft, otimizado para diálogos em estilo de bate-papo.
🧠 O que é um Chatbot com IA?
É uma aplicação de Processamento de Linguagem Natural (NLP) que:
- Interage com humanos via texto
- Usa IA para compreender o contexto e gerar respostas
- Pode ser usado para atendimento automático, FAQs, assistentes pessoais e mais
🧰 O que vamos usar
- Python 3.10+
- Biblioteca
transformers
- Modelo pré-treinado:
microsoft/DialoGPT-medium
📦 Instalando os pacotes
pip install transformers
pip install torch
✍️ Código: Criando um chatbot interativo
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Carrega o modelo e tokenizer
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
modelo = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
# Histórico de conversa (tokenizado)
histórico = []
print("🤖 Chatbot IA iniciado. Digite 'sair' para encerrar.\n")
while True:
entrada = input("Você: ")
if entrada.lower() == "sair":
break
# Codifica a entrada e anexa ao histórico
nova_entrada_ids = tokenizer.encode(entrada + tokenizer.eos_token, return_tensors='pt')
histórico.append(nova_entrada_ids)
# Junta histórico para manter contexto
entrada_modelo = torch.cat(histórico, dim=-1)
# Gera resposta
resposta_ids = modelo.generate(
entrada_modelo,
max_length=1000,
pad_token_id=tokenizer.eos_token_id
)
# Decodifica a resposta
resposta = tokenizer.decode(resposta_ids[:, entrada_modelo.shape[-1]:][0], skip_special_tokens=True)
print(f"Bot: {resposta}")
# Adiciona resposta ao histórico
resposta_ids = tokenizer.encode(resposta + tokenizer.eos_token, return_tensors='pt')
histórico.append(resposta_ids)
🧠 Explicando
AutoTokenizer
eAutoModelForCausalLM
: carregam automaticamente o modelo de linguagem- Histórico de conversa: é mantido para dar contexto ao bot
generate()
: o modelo prevê a próxima frase com base no histórico
🎯 Desafio do Dia
Transforme esse chatbot em:
- Um script de terminal que reinicia o histórico se o usuário digitar
"reset"
- Um modo “curto” onde o bot sempre responde com no máximo 1 frase
- Bônus: salve o log da conversa em um arquivo
.txt
com timestamp
Uma resposta
Aquela ajudinha marota pra evoluir? Desafio com OpenAI:
“`
import openai
# Define sua chave da API (deixe segura em produção)
openai.api_key = “SUA_CHAVE”
from openai import OpenAI
client = OpenAI(api_key=openai.api_key)
print(“🤖 Chatbot GPT-3.5 iniciado. Digite ‘sair’ para encerrar.\n”)
while True:
entrada = input(“Você: “)
if entrada.lower() == “sair”:
print(“🤖 Bot: Até logo!”)
break
resposta = client.chat.completions.create(
model=”gpt-3.5-turbo”,
messages=[
{“role”: “system”, “content”: “Você é um assistente útil e sempre responde em português.”},
{“role”: “user”, “content”: entrada}
]
)
print(f”🤖 Bot: {resposta.choices[0].message.content}”)
“`