Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

[Projeto] Desafio: 7 days of code | Aprendizagem: personalizando sua rotina de estudos com ChatGPT

7 DAYS OF CODE - IA & Prompt Engineering (Python)

Projeto Final: Sistema de Análise de Feedback com IA


ESTRUTURA (7 DIAS)

DIA 1: Fundamentos de Prompts
DIA 2: Técnicas Avançadas
DIA 3: Integração OpenAI API
DIA 4: Pipeline Multi-Etapas
DIA 5: Processamento em Batch
DIA 6: MVP Completo
DIA 7: Deploy & Documentação


SETUP INICIAL

mkdir 7-dias-prompt && cd 7-dias-prompt
python -m venv venv
source venv/bin/activate
pip install openai python-dotenv

Crie .env:

OPENAI_API_KEY=sua_chave

DIA 1: FUNDAMENTOS

Um bom prompt tem 4 elementos:

  1. ROLE - Quem é a IA?
  2. INSTRUÇÃO - O que fazer?
  3. CONTEXTO - Que dados?
  4. FORMATO - Como responder?

Desafio: Analise 5 prompts ruins e reescreva.

# dia1.py
prompts_ruins = {
    "ruim": "Classifique feedback",
    "bom": """Você é especialista em análise de feedback.
Classifique em: POSITIVO, NEGATIVO ou NEUTRO.
Feedback: "{texto}"
Responda apenas com a categoria."""
}

DIA 2: TÉCNICAS

  • Chain of Thought: "Pense passo a passo"
  • Few-Shot: "Aqui estão exemplos..."
  • Role Playing: "Você é um gerente..."
  • Estrutura: "Retorne em JSON"

Crie 5 prompts usando cada técnica.


DIA 3: OPENAI API

from openai import OpenAI
import os
from dotenv import load_dotenv

load_dotenv()
client = OpenAI()

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Seu prompt aqui"}],
    temperature=0.7,
    max_tokens=200
)

print(response.choices[0].message.content)

Desafio: Criar classe AnalisadorFeedback com 3 métodos.


DIA 4: PIPELINE

Crie um fluxo: Limpeza → Validação → IA → Ação → Armazenar

class Pipeline:
    def limpar(self, texto):
        return texto.strip().lower()
    
    def validar(self, texto):
        return 5 < len(texto) < 1000
    
    def analisar(self, texto):
        # Chamada IA
        pass
    
    def processar(self, texto):
        if not self.validar(self.limpar(texto)):
            return None
        return self.analisar(texto)

DIA 5: BATCH & INSIGHTS

Processe múltiplos feedbacks de uma CSV.

import csv
from collections import Counter

def processar_csv(arquivo):
    feedbacks = []
    with open(arquivo) as f:
        for linha in csv.DictReader(f):
            resultado = analisar(linha['feedback'])
            feedbacks.append(resultado)
    
    # Gerar relatório
    sentimentos = [f['sentimento'] for f in feedbacks]
    print(Counter(sentimentos))

DIA 6: MVP

Integre tudo em uma classe completa:

class AssistenteFeedback:
    def __init__(self):
        self.feedbacks = []
    
    def processar(self, feedback):
        analise = self._analisar(feedback)
        resposta = self._responder(feedback, analise)
        self.feedbacks.append({
            "feedback": feedback,
            "analise": analise,
            "resposta": resposta
        })
        return self.feedbacks[-1]
    
    def relatorio(self):
        return {
            "total": len(self.feedbacks),
            "score_medio": sum(
                f['analise']['score'] 
                for f in self.feedbacks
            ) / len(self.feedbacks)
        }

DIA 7: DEPLOY

Tarefas:

  1. Criar README.md explicando projeto
  2. Exportar resultados em CSV
  3. Fazer upload no GitHub
  4. Postar link no fórum 7DaysOfCode

README mínimo:


# Assistente de Feedback IA

Análise inteligente de feedback usando OpenAI.

## Setup
pip install -r requirements.txt

## Uso
python dia6.py

## Resultados
Veja resultados_final.csv

CHECKLIST

  • Dia 1: 5 prompts analisados
  • Dia 2: 5 técnicas praticadas
  • Dia 3: API funcionando
  • Dia 4: Pipeline completo
  • Dia 5: Relatório gerado
  • Dia 6: MVP testado
  • Dia 7: GitHub + Documentação

1 resposta
solução!

Olá, Estudante. Como vai?

Parabéns pela estruturação e planejamento do seu desafio 7 Days of Code! O escopo do projeto está excelente, cobrindo desde a engenharia de prompt mais básica até a construção de um pipeline estruturado com integração de API, tratamento de arquivos e organização de código orientada a objetos em Python.

Para agregar ainda mais valor ao seu projeto e ajudar você a gabaritar esse checklist, separei algumas boas práticas e complementos técnicos para cada fase do seu roadmap:


Dicas de Boas Práticas para o seu Pipeline

  • Gestão de Dependências (Dia 1 e 7): Além de instalar os pacotes, lembre-se de gerar o arquivo de dependências de forma automática dentro do seu ambiente virtual com o comando pip freeze > requirements.txt. Isso garante que qualquer pessoa que baixe seu projeto no GitHub consiga rodar o MVP sem problemas de versão.
  • Segurança e Tratamento de Erros (Dia 3): Ao lidar com chamadas de API externas, a rede pode falhar ou o limite de requisições pode ser atingido. É uma excelente prática envelopar a chamada do client.chat.completions.create dentro de um bloco de tratamento de exceções. Veja este exemplo:
try:
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.7
    )
    return response.choices[0].message.content
except Exception as e:
    print(f"Erro na comunicação com a API: {e}")
    return None
  • Garantia do Formato JSON (Dia 2 e 6): Para o seu MVP do Dia 6 conseguir calcular o score_medio lendo um campo de dicionário (f['analise']['score']), a resposta da IA precisa ser um JSON válido. Na chamada da API (Dia 3), além de pedir o JSON no prompt, você pode forçar o formato passando o parâmetro response_format={"type": "json_object"}. Isso evita erros de conversão de texto para dicionário em Python.

Próximos Passos Sugeridos

Quando finalizar o Dia 7, como desafio extra para o seu portfólio, você pode substituir o script de terminal por uma interface visual simples utilizando a biblioteca Streamlit. Com pouquíssimas linhas de código, você transforma seu arquivo dia6.py em uma aplicação web para carregar o CSV de feedbacks e exibir os gráficos do relatório na tela.

Seu cronograma está muito bem desenhado e focado em engenharia de software real aplicada à Inteligência Artificial. Continue com esse foco e consistência nos commits diários.

Espero que possa ter lhe ajudado!