1
resposta

[Projeto] 05 Etapa 3 - Implementação do Chatbot - implementando a camada de Interface de Linguagem Natural (NLI).

Conceitos e Exemplos Práticos
A. Modelos de Diálogo (DialoGPT e Conversational Pipelines)
Conceito: Diferente de um modelo de classificação (que apenas rotula), modelos de diálogo são treinados em estruturas de Turn-taking (Troca de turnos). Eles entendem que uma frase é uma resposta a uma anterior.

Exemplo Prático: Se o usuário diz "Estou triste", o modelo não apenas extrai a label SAD, mas gera uma resposta empática: "Sinto muito por isso. Que tal uma música para te confortar?"

B. Gerenciamento de Estado (Session State)
Conceito: Em chatbots, é necessário manter uma "memória de curto prazo" para que a conversa não pareça uma sequência de frases isoladas.

Exemplo Prático: Se o usuário pede "algo animado" e depois diz "mais uma", o chatbot precisa saber que "mais uma" se refere a "algo animado" (o último sentimento consultado).

C. Interfaces Reativas com Gradio
Conceito: O Gradio permite criar um front-end para modelos de IA com poucas linhas de Python, facilitando o teste de usabilidade (UX) sem precisar de HTML/JavaScript complexo.
Etapa 3 - Implementação

conceitos
Pipeline Conversational: Uso do pipeline("conversational") do Hugging Face para gerenciar o histórico da conversa automaticamente.
Mapeamento de Intenção (Intent Mapping): Identificar se o usuário quer uma recomendação ou apenas bater papo.
Integração com o Recommender: O chatbot atua como o "controlador", chamando a lógica da Etapa 2.

Código Fonte: Chatbot Playcatch com Gradio:
import gradio as gr
from transformers import pipeline, Conversation
import pandas as pd

1. SETUP DO MODELO CONVERSACIONAL

Usando DialoGPT-medium para respostas mais naturais

chatbot_model = pipeline("conversational", model="microsoft/DialoGPT-medium")

Mock do Recommender da Etapa 2 (Integrar com seu código anterior)

def get_mock_recommendation(mood):
# Simulação de busca no CSV da Etapa 1/2
catalog = {
"feliz": ["Festa em Goiás - Artista X", "Alegria Geral - Banda Y"],
"melancolico": ["Chuva de Saudade - Cantor Z", "Solidão no Campo - Dupla W"]
}
return catalog.get(mood.lower(), ["Música Genérica - Playcatch"])

2. LÓGICA DO CHATBOT

def playcatch_chat(message, history):
"""
message: entrada do usuário
history: lista de tuplas [(user, bot), ...] mantida pelo Gradio
"""

# Lógica Simples de Intenção (Keywords)
# Em produção, usaríamos um classificador de intenção (NLU)
mood = None
if "animado" in message or "feliz" in message:
    mood = "feliz"
elif "triste" in message or "relaxar" in message or "melancolico" in message:
    mood = "melancolico"

if mood:
    recs = get_mock_recommendation(mood)
    response = f"Entendi que você está se sentindo {mood}. Aqui estão algumas sugestões: {', '.join(recs)}. Gostaria de ouvir mais?"
else:
    # Se não detectar humor, usa o modelo de diálogo para responder
    conv = Conversation(message)
    # Adiciona histórico se necessário (opcional para simplicidade)
    result = chatbot_model(conv)
    response = result.generated_responses[-1]

return response

3. INTERFACE GRADIO (ChatInterface)

Big O: O(N) para processar o histórico a cada turno

demo = gr.ChatInterface(
fn=playcatch_chat,
title="Playcatch: Seu Assistente Musical",
description="Diga como você está se sentindo e eu encontro a trilha sonora perfeita.",
examples=["Quero ouvir algo animado", "Estou um pouco triste hoje", "Me indique uma música para relaxar"]
)

if name == "main":
demo.launch()

1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o pipeline conversacional com DialoGPT para gerar respostas naturais em Python, utilizou muito bem a lógica de intenção para mapear sentimentos e recomendar músicas e ainda compreendeu a importância da integração com o Gradio para criar uma interface interativa e acessível ao usuário.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

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!