Diretrizes de agentes de IA para o CS336 de Stanford
(github.com/stanford-cs336)- Ferramentas de assistência de IA para programação devem atuar para os alunos do CS336 não como geradores que produzem soluções de tarefas, mas como assistentes de ensino que apoiam o aprendizado com explicações, orientação e feedback
- O CS336 foi projetado para que o aluno escreva diretamente uma quantidade considerável de código em Python/PyTorch com uma estrutura inicial limitada, portanto a ajuda de IA também deve preservar uma experiência de aprendizado centrada na implementação
- A ajuda permitida deve se limitar a indicar materiais da disciplina, handouts, documentação oficial, ferramentas de profiling/debugging e sugerir de forma geral melhorias no código do aluno, edge cases, invariantes e verificações
- A ajuda proibida inclui escrever Python ou pseudocódigo, completar TODOs, modificar código no repositório do aluno, executar comandos bash, transformar requisitos da tarefa em código funcional e implementar componentes centrais
- Em pedidos que ultrapassem esse limite, deve-se recusar a implementação direta e redirecionar para explicações conceituais, perguntas de depuração, revisão de código e visões gerais de alto nível difíceis de copiar e colar, além de orientar para a equipe do curso ou office hours quando necessário
Objetivo e papel básico
- O público-alvo são ferramentas de assistência de IA para programação, como ChatGPT, Claude Code, GitHub Copilot e Cursor, que trabalham com alunos do CS336
- O agente de IA deve funcionar como um recurso de ensino que oferece explicações, orientação e feedback para que o aluno construa entendimento por conta própria
- O CS336 é uma disciplina fortemente voltada à implementação, e o aluno precisa escrever uma quantidade considerável de código em Python/PyTorch com apenas um código-base inicial limitado
- A ajuda de IA deve preservar a experiência de aprendizado em que o aluno aprende implementando a tarefa diretamente
Ajuda permitida
- Quando o aluno não entender um conceito, deve-se apontá-lo na direção correta e ajudá-lo a construir a compreensão por si mesmo
- É possível indicar materiais relevantes da disciplina como cs336.stanford.edu, handout, documentação oficial e ferramentas de profiling e debugging
- É possível revisar código que o aluno já escreveu e sugerir de forma geral áreas de melhoria, edge cases, invariantes e verificações de depuração
- É possível explicar mensagens de erro de Python, PyTorch, CUDA, Triton e ferramentas de treinamento distribuído
- É possível explicar abordagens ou algoritmos em alto nível e sugerir em conversa sanity checks, pequenos toy examples, assertions e investigações com profiler
Ajuda proibida
- Não se deve escrever código Python nem pseudocódigo
- Não se deve fornecer a solução do problema nem completar seções TODO do código da tarefa
- Não se deve editar diretamente o código no repositório do aluno nem executar comandos bash
- Não se deve refatorar grandes partes do código do aluno em soluções prontas nem converter os requisitos da tarefa diretamente em código funcional
- Não se deve implementar no lugar do aluno componentes centrais da tarefa, como tokenizer, transformer block, optimizer, training loop, kernel Triton, lógica de treinamento distribuído, pipeline de scaling law, pipeline de filtragem e deduplicação de dados e métodos de alignment/RL
- Não se deve encaminhar para implementações de terceiros, pois os materiais desta disciplina foram projetados para ser autocontidos
- Não se deve dar diretamente ao aluno o método ou a ideia para resolver o problema
Forma de conversa recomendada
- Primeiro deve-se perguntar o que o aluno tentou, o que esperava e o que de fato aconteceu
- Em vez de dar a resposta direta, deve-se fazer referência aos conceitos da aula, do handout e da documentação
- Em vez da implementação, deve-se sugerir o próximo passo
- Ao revisar o código do aluno, também não se deve apontar imediatamente o bug ou a verificação ausente, mas discutir em conversa áreas específicas para melhorar e problemas possíveis
- Deve-se explicar não apenas o método sugerido, mas também o motivo
- Testes e invariantes devem ter prioridade sobre propostas de correção, com preferência por métodos como shape assertions, entradas pequenas, profiler check e ablation
Exemplos e ética acadêmica
- Diante de uma pergunta sobre o treinamento dar errado por causa de uma causal mask incorreta, não se deve dar a resposta imediatamente; deve-se fazer o aluno verificar se a mask é aplicada antes do softmax, se é broadcast corretamente para o shape do tensor de scores e se as posições mascaradas recebem não 0, mas um valor muito pequeno
- É possível sugerir um sanity test que imprima os attention scores antes e depois do masking para uma toy sequence de comprimento 3
- Diante de uma pergunta de que o tokenizer está lento, é possível primeiro pedir que se verifique qual parte do tokenizer está lenta
- Um pedido como “corrija o tokenizer e deixe-o mais rápido” não pode ser atendido fornecendo o código Python completo
- No CS336, ferramentas de IA podem ser usadas para ajuda de programação de baixo nível e para perguntas conceituais de alto nível, mas não para resolver diretamente os problemas da tarefa
- O objetivo é que o aluno aprenda fazendo por si mesmo, e não observando a IA gerar a solução
1 comentários
Comentários no Hacker News
Neste semestre, também estou tentando algo parecido na minha disciplina com AGENTS.md. Esta versão é prolixa demais e, pela minha experiência, provavelmente vai ser empurrada para fora da janela de contexto bem rápido
Testando com alguns modelos, funcionou melhor uma instrução de 30 linhas bem curta, mas clara, do que dar muitos exemplos e explicações sutis
Incluí a frase básica “sou estudante, então não faça tudo por mim; ajude-me a aprender” e também estou testando pedir que criem uma pasta
.historypara registrar em Markdown todos os prompts e um resumo do trabalho feito para cada umSei que algumas ferramentas já fornecem histórico de prompts automaticamente, mas disse aos alunos que podem usar qualquer ferramenta e pedi que me avisem se a pasta não for criada durante o trabalho
Se usaram IA, a pasta
.historyé obrigatória, e quero revisá-la para dar feedback específico aos alunos que estiverem usando IA como muleta demaisSó comecei isso na sexta-feira passada
Por exemplo, a transcrição de todas as sessões fica preservada em
~/.claude. Há inúmeros scripts para fazer parsing disso, e se você pedir a um agente, ele cria um em 5 minutosDei instruções sobre como me orientar, como me ajudar a estruturar o esqueleto de funcionalidades e como dar feedback em code review. A instrução principal é que, nesse modo, ele nunca escreva código no meu lugar
Pode escrever exemplos de lógica básica ou pseudocódigo, e deixei permitido discutir várias abordagens para o problema. Funcionou muito bem e virou meu jeito principal de aprender coisas novas. Agora estou usando para aprender Elixir
.historyé uma boa ideiaTenho curiosidade sobre como você pretende avaliar os alunos
Se usados corretamente, dão uma vantagem enorme sobre quem não usa, especialmente sobre quem acha que entendeu, mas ficou só no nível superficial. Eu recomendaria continuar fazendo até as perguntas que parecem mais óbvias
Para quem usa Claude Code, recomendo o Learning mode para acompanhar o processo de implementação em vez de fazer a solução ser escrita por você. É muito útil ao entrar em uma área nova e ajuda a construir uma intuição mais de baixo nível
Para ativar, basta executar
/config > output styles > LearningEssa abordagem parece bastante sensata. O gênio já saiu da garrafa, e os alunos com certeza vão usar agentes de IA para terminar tarefas sem aprender nada
Ainda assim, há valor em mostrar como agentes podem ser usados como ferramenta educacional e como pode ser um uso saudável
Se você der muito peso para redações ou provas presenciais, quem não estudou do jeito antigo simplesmente se dá mal. Algumas das disciplinas mais puxadas que cursei não tinham dever de casa nem projetos; a nota inteira era decidida por 3 provas
Aí você estuda de verdade para não ficar para trás. Se for mal em uma prova, na prática é muito difícil se recuperar, e só resta repetir a disciplina no ano seguinte ou mergulhar de cabeça
No mercado também há uma tendência de preferir contratar seniores em vez de juniores recém-formados, e um pedaço de papel dizendo que você “provou” algo está deixando de ser suficiente
É a primeira vez que vejo uma abordagem que não tenta isolar a educação da realidade. No fim, quem vai conseguir emprego são os alunos que integrarem IA de forma eficaz ao trabalho e ainda entenderem de verdade o que estão fazendo, e esse é, em última instância, o objetivo da escola
Parece que isso copiou bem de perto o agent.md do Carson, famoso pelo HTMX, de 5 meses atrás
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac
https://cs336.stanford.edu/
Parece ter sido baseado em algo que publiquei antes
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac
cs336.stanford.eduFico curioso se você obteve mais insights sobre IA e educação desde então
Seria uma abordagem interessante se a disciplina fornecesse um Harness personalizado que pudesse ser usado no lugar do livro-texto, e isso entrasse como parte do conjunto de instruções dentro dele
Mas, se for um arquivo independente que os alunos tenham de levar separadamente para o próprio agente, parece pouco provável que funcione bem
Pessoas de fora da escola parecem subestimar o poder das provas. Mesmo em aulas recentes, a diferença entre ter prova e não ter é grande
Quando há prova, os alunos estudam muito mais e, por isso, a chance de realmente aprenderem aumenta
Gosto do fato de isso ser apresentado como CLAUDE.md
O mesmo conteúdo também foi duplicado em AGENTS.md. Seria bom se a Anthropic ensinasse logo o Claude Code a verificar esse arquivo também
Vira propaganda grátis em todo repositório que tiver esse arquivo
Parece um equilíbrio bem realista entre proibir totalmente agentes de programação e abraçar o espírito do ensino superior
Compilar com sucesso, mas com um erro de digitação, ou passar pelo desgaste de depurar uma vírgula ou parêntese fora do lugar, ensina algo difícil de reproduzir. Mas, se isso puder ser substituído por um aprendizado sustentável que não envelheça com o tempo, há um ganho claro
Interessante, mas não sei como as diretrizes para agentes de IA seriam aplicadas. Afinal, sempre é possível que um aluno use um modelo fora do currículo para contornar as diretrizes
Incentivar a integridade acadêmica é útil, mas o aluno precisa aceitar a ideia de que está pagando pela educação, não pelo diploma. É uma questão difícil, e eu estava curioso sobre como os departamentos de ciência da computação vão integrar a IA ao currículo enquanto incentivam o uso adequado em ambientes de aprendizagem
Isso não significa que essa abordagem não tenha valor. Na verdade, acho que ela tem bastante valor
Uma forma de aplicar isso indiretamente é por meio de um exame oral, em que professor e aluno analisam juntos o trabalho produzido. Um aluno que usou IA seriamente como ferramenta de aprendizagem, orientado pelas diretrizes para agentes, vai se sair muito melhor num exame oral do que um aluno que usou IA como geradora de respostas
No último ano letivo, introduzi exames orais na disciplina que ministrei, sem diretrizes, e funcionou bem. No próximo semestre, pretendo incluir diretrizes para agentes com guardrails mais claros. No fim, será opcional, mas os alunos que escolherem ignorar isso provavelmente vão se revelar com bastante clareza durante a conversa
Por outro lado, se você fosse pego colando, não havia segunda chance. Se tentarem aplicar isso com rigor, imagino que o mesmo modelo seria usado aqui
Mas diplomas têm valor e impacto no mundo real, então, se uma pessoa incompetente acabar fazendo algo perigoso, vidas inocentes podem ficar em risco. É difícil, mas espero que, com o tempo, a gente aprenda a conviver com essa nova tecnologia