This entry is parte 19 de 24 in the series Python + IA: Fundamentos e Projetos Práticos
Python + IA: Fundamentos e Projetos Práticos
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
AutoTokenizereAutoModelForCausalLM: 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
.txtcom 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}”)
“`