📖 Visão Geral
Aprenda a criar agentes autônomos de IA capazes de executar tarefas complexas em educação. Domine frameworks como LangChain Agents, AutoGPT e CrewAI para construir tutores personalizados, geradores de conteúdo e assistentes de pesquisa que agem com mínima supervisão humana.
Ao final deste módulo, você será capaz de:
- Entender arquitetura de agentes (ReAct, Plan-and-Execute)
- Implementar agente com ferramentas customizadas
- Criar tutor socrático que faz perguntas ao invés de dar respostas
- Construir gerador de conteúdo multi-step (pesquisa + síntese + validação)
- Orquestrar múltiplos agentes (multi-agent systems)
📚 Conteúdo Detalhado
🤖 O que são Agentes de IA?
### Definição:
Agente = LLM + Ferramentas + Loop de Raciocínio
Diferença de Chatbot:
Chatbot:
``
User: "Qual a capital da França?"
LLM: "A capital da França é Paris."
[1 turno, resposta direta]
`
Agente:
`
User: "Me dê informações atualizadas sobre Paris"
Agent (interno):
1. Thought: "Preciso buscar informações recentes"
2. Action: google_search("Paris novidades 2025")
3. Observation: [Resultados da busca]
4. Thought: "Preciso sintetizar em tópicos"
5. Action: None (raciocínio suficiente)
6. Final Answer: "Aqui estão 5 novidades sobre Paris..."
[Multi-step, usa ferramentas, raciocínio iterativo]
``
---
📌 🧩 Arquitetura de Agentes
### Componente 1: Brain (LLM) Função: Raciocínio e decisão Modelos Recomendados:
- GPT-4: Melhor raciocínio, mais caro
- GPT-3.5: Bom custo-benefício
- Claude 3: Forte em reasoning chains
- LLaMA 3 70B: Open-source, mas requer infra
python
tools = [
Tool(
name="Buscar_Biblioteca",
func=buscar_em_pdfs,
description="Busca informação em materiais do curso"
),
Tool(
name="Gerar_Quiz",
func=gerar_questoes,
description="Cria questões de múltipla escolha sobre tópico"
),
Tool(
name="Avaliar_Resposta",
func=corrigir_resposta,
description="Avalia resposta do aluno (0-10)"
),
Tool(
name="Recomendar_Material",
func=recomendar_recurso,
description="Sugere material baseado em dificuldades"
)
]
`
Anatomia de uma Tool:
- Nome: Identificador único
- Função: Código Python que executa
- Descrição: Como LLM entende quando usar (crítico!)
---
### Componente 3: Memory (Memória)
Função: Lembrar interações passadas
Tipos:
Short-term (Conversa Atual):
`python
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context(
{"input": "Olá"},
{"output": "Olá! Como posso ajudar?"}
)
`
Long-term (Entre Sessões):
`python
from langchain.memory import VectorStoreRetrieverMemory
# Armazena em vector DB, busca por similaridade
memory = VectorStoreRetrieverMemory(retriever=vectordb.as_retriever())
`
---
### Componente 4: Agent Loop (Ciclo de Raciocínio)
Framework: ReAct (Reasoning + Acting)
`
Loop até responder:
1. REASON: "Que informação preciso?"
2. ACT: Usar ferramenta
3. OBSERVE: Ver resultado
4. [Repetir ou finalizar]
`
Exemplo Real:
`
User: "Crie quiz sobre fotossíntese para 8º ano"
Iteration 1:
├─ Thought: "Preciso saber o que alunos já aprenderam"
├─ Action: Buscar_Biblioteca(tópico="fotossíntese", série="8º ano")
└─ Observation: "Alunos já viram cloroplastos, mas não Calvin cycle"
Iteration 2:
├─ Thought: "Vou criar questões focadas no nível deles"
├─ Action: Gerar_Quiz(tópico="fotossíntese", nível="intermediário", n=5)
└─ Observation: [5 questões geradas]
Iteration 3:
├─ Thought: "Questões estão boas, posso responder"
├─ Action: None
└─ Final Answer: "Aqui está seu quiz: [QUESTÕES]"
``
---
🛠️ Implementação: Tutor Socrático
### Objetivo:
Criar agente que ensina fazendo perguntas (método socrático), não dando respostas diretas.
### Código (LangChain):
``python
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory
# Ferramentas
def avaliar_compreensao(resposta_aluno: str) -> str:
"""Avalia se aluno entendeu conceito baseado na resposta"""
prompt = f"""
Resposta do aluno: {resposta_aluno}
Analise:
1. Aluno demonstrou compreensão? (Sim/Parcial/Não)
2. Conceitos corretos mencionados
3. Misconceptions identificadas
Formato: JSON
"""
# [Chamar LLM para analisar]
return resultado
def gerar_pergunta_socratica(topico: str, nivel_dificuldade: str) -> str:
"""Gera pergunta que leva aluno a descobrir resposta"""
prompt = f"""
Tópico: {topico}
Nível: {nivel_dificuldade}
Crie pergunta socrática que:
- Não dá resposta direta
- Faz aluno pensar e conectar conceitos
- Usa analogias ou contra-exemplos
Exemplo ruim: "O que é fotossíntese?"
Exemplo bom: "Se plantas precisam de luz solar, como sobrevivem em florestas densas?"
"""
# [Chamar LLM]
return pergunta
tools = [
Tool(
name="Avaliar_Compreensao",
func=avaliar_compreensao,
description="Usa isto quando aluno responder uma pergunta. Retorna análise de compreensão."
),
Tool(
name="Gerar_Pergunta",
func=gerar_pergunta_socratica,
description="Usa isto para criar próxima pergunta baseada em tópico e nível."
)
]
# System Prompt
system_prompt = """
Você é um tutor socrático de biologia.
Regras:
1. NUNCA dê respostas diretas
2. SEMPRE faça perguntas que levem aluno a descobrir
3. Use analogias e exemplos do cotidiano
4. Se aluno errar, faça pergunta mais simples
5. Se acertar, aprofunde com pergunta mais complexa
6. Seja encorajador e paciente
Ferramentas disponíveis: {tools}
Formato de resposta:
Thought: [Seu raciocínio]
Action: [Ferramenta a usar]
Action Input: [Input da ferramenta]
Observation: [Resultado da ferramenta]
... (repita Thought/Action/Observation até ter resposta)
Final Answer: [Sua pergunta para o aluno]
"""
# Inicializar agente
llm = OpenAI(temperature=0.7, model="gpt-4")
memory = ConversationBufferMemory(memory_key="chat_history")
agent = initialize_agent(
tools=tools,
llm=llm,
agent="conversational-react-description",
memory=memory,
verbose=True, # Ver raciocínio interno
system_message=system_prompt
)
# Usar
response = agent.run("Quero entender fotossíntese")
print(response)
`
Output Esperado:
`
Thought: Aluno quer entender fotossíntese. Vou começar descobrindo conhecimento prévio.
Action: Gerar_Pergunta
Action Input: {"topico": "fotossíntese", "nivel_dificuldade": "iniciante"}
Observation: "Você já viu plantas em lugares diferentes (sombra vs sol). O que você nota de diferente nelas?"
Final Answer: Ótimo! Vamos explorar fotossíntese juntos. Para começar: você já percebeu que plantas crescem em lugares diferentes - algumas no sol, outras na sombra. O que você acha que muda em plantas que ficam em locais muito ensolarados comparado às que ficam na sombra?
``
---
🎓 Caso 2: Gerador de Conteúdo Multi-Step
### Objetivo:
Agente que cria aula completa:
1. Pesquisa tópico
2. Estrutura conteúdo
3. Gera materiais (slides, quiz, atividades)
4. Valida qualidade
### Arquitetura Plan-and-Execute:
``python
from langchain.agents import create_plan_and_execute_agent
from langchain.tools import Tool
# Fase 1: PLAN
plan_prompt = """
Tarefa: Criar aula de 50min sobre {topico} para {publico}
Crie plano com:
1. Objetivos de aprendizagem (3-5)
2. Estrutura da aula (tempo em minutos)
3. Materiais necessários
4. Forma de avaliação
Formato: Lista numerada de passos acionáveis
"""
# Fase 2: EXECUTE
# Agente executa cada passo do plano usando ferramentas
tools = [
Tool(
name="Pesquisar_Conteudo",
func=pesquisar_web_e_pdfs,
description="Busca informações atualizadas sobre tópico"
),
Tool(
name="Gerar_Slide",
func=criar_slide_markdown,
description="Cria slide em markdown com título, conteúdo, imagens"
),
Tool(
name="Gerar_Quiz",
func=criar_questoes,
description="Cria questões de múltipla escolha"
),
Tool(
name="Validar_Qualidade",
func=revisar_conteudo,
description="Verifica se conteúdo está adequado (Bloom, BNCC, etc)"
)
]
agent = create_plan_and_execute_agent(
llm=llm,
tools=tools,
verbose=True
)
# Executar
resultado = agent.run(
"Crie aula sobre Inteligência Artificial para ensino médio (15-17 anos)"
)
`
Output:
`
Plan:
1. Pesquisar: conceitos de IA adequados para ensino médio
2. Estruturar: aula de 50min (5min intro, 20min conceitos, 15min prática, 10min avaliação)
3. Criar: 10 slides sobre IA (história, tipos, ética)
4. Gerar: 5 questões de múltipla escolha
5. Validar: checar alinhamento com BNCC
6. Empacotar: ZIP com slides + quiz + plano de aula
Executing Step 1...
[Agente usa ferramenta Pesquisar_Conteudo]
Found: "IA é campo da computação que simula inteligência humana..."
Executing Step 2...
[Agente raciocina sobre estrutura]
Structure: Intro (historia) → Tipos (supervised/unsupervised/RL) → Etica → Hands-on
...
Final Package:
├── aula_ia.md (10 slides)
├── quiz_ia.json (5 questões)
├── plano_aula.pdf
└── recursos_adicionais.txt
``
---
📌 🤝 Multi-Agent Systems
### Conceito:
Múltiplos agentes especializados trabalhando juntos.
Exemplo: Criação de Curso Completo
``
Agente 1 - Pesquisador:
└─ Busca conteúdo, papers, exemplos
Agente 2 - Designer Instrucional:
└─ Estrutura curso seguindo ADDIE
Agente 3 - Criador de Conteúdo:
└─ Gera aulas, slides, atividades
Agente 4 - Avaliador:
└─ Cria quizzes, rubricas
Agente 5 - Revisor:
└─ Valida qualidade, corrige erros
`
### Implementação (CrewAI):
`python
from crewai import Agent, Task, Crew
# Definir agentes
pesquisador = Agent(
role="Pesquisador Educacional",
goal="Encontrar conteúdo de qualidade sobre {topico}",
backstory="Você é PhD em Educação com 15 anos pesquisando métodos eficazes",
tools=[google_search, arxiv_search, wikipedia],
verbose=True
)
designer = Agent(
role="Designer Instrucional",
goal="Estruturar aprendizagem seguindo melhores práticas",
backstory="Especialista em ADDIE, Bloom, Merrill",
tools=[criar_estrutura, alinhar_bncc],
verbose=True
)
criador = Agent(
role="Criador de Conteúdo",
goal="Gerar materiais envolventes e claros",
backstory="Você é professor com 10 anos criando recursos didáticos",
tools=[gerar_slide, gerar_atividade, gerar_video_script],
verbose=True
)
revisor = Agent(
role="Revisor de Qualidade",
goal="Garantir excelência pedagógica",
backstory="Coordenador pedagógico rigoroso com olho para detalhes",
tools=[validar_conteudo, checar_acessibilidade],
verbose=True
)
# Definir tarefas
task1 = Task(
description="Pesquisar sobre {topico} e compilar 10 melhores recursos",
agent=pesquisador
)
task2 = Task(
description="Criar estrutura de curso de 12h baseado na pesquisa",
agent=designer
)
task3 = Task(
description="Gerar materiais para os 6 módulos do curso",
agent=criador
)
task4 = Task(
description="Revisar todos os materiais e sugerir melhorias",
agent=revisor
)
# Criar crew (equipe)
crew = Crew(
agents=[pesquisador, designer, criador, revisor],
tasks=[task1, task2, task3, task4],
verbose=True
)
# Executar
resultado = crew.kickoff(inputs={"topico": "Pensamento Computacional para Ensino Fundamental"})
print(resultado)
`
Output:
`
[Pesquisador]: Encontrei 10 recursos sobre pensamento computacional...
[Designer]: Estruturei curso em 6 módulos: 1) Decomposição, 2) Padrões...
[Criador]: Gerados 6 conjuntos de materiais com 18 atividades...
[Revisor]: Validação completa. Sugestões: Módulo 3 muito denso, sugiro dividir...
Final Result:
✅ Curso de 12h estruturado
✅ 18 atividades hands-on
✅ 6 avaliações formativas
✅ Alinhado com BNCC (EF05MA05, EF67LP04...)
``
---
📌 ⚠️ Challenges e Limitações
### 1. Loops Infinitos
Problema: Agente fica preso em ciclo
``
Thought: Preciso de mais informação
Action: Buscar
Observation: [Resultados]
Thought: Preciso de mais informação
Action: Buscar
[LOOP INFINITO]
`
Solução:
`python
agent = initialize_agent(
...,
max_iterations=10, # Limitar iterações
early_stopping_method="generate" # Forçar resposta após max
)
`
---
### 2. Uso Excessivo de Ferramentas
Problema: Agente usa 10 ferramentas para tarefa simples (custo $$)
Solução: Few-shot Examples
`python
system_prompt = """
Você é um agente eficiente.
Bons exemplos:
User: "Qual a capital da França?"
Thought: Sei a resposta, não preciso de ferramentas
Action: None
Final Answer: "Paris"
User: "Pesquise últimas notícias sobre IA"
Thought: Preciso buscar informação atualizada
Action: google_search("IA novidades 2025")
[Usa ferramenta apropriadamente]
"""
`
---
### 3. Alucinação de Ferramentas
Problema: Agente inventa ferramentas que não existem
`
Action: Ferramenta_Magica(input="resolver tudo")
[ERRO: Ferramenta não existe]
`
Solução: Descrições Claras
`python
# Ruim
Tool(name="Search", description="Busca coisas")
# Bom
Tool(
name="Buscar_Biblioteca_Curso",
description="Busca informação APENAS nos PDFs do curso XYZ. Use quando aluno perguntar sobre conteúdo do curso. NÃO use para informações gerais da web."
)
``
---
📚 Conteúdo Completo
Faça download do material completo em Markdown para acessar todos os tópicos, exemplos, prompts e atividades detalhadas.
📄 Baixar Material Completo (MD)📦 Recursos do Módulo
📹 Videoaulas
Aulas detalhadas sobre cada tópico do módulo
💬 Práticas
Atividades hands-on com projetos reais
✅ Avaliação
Quizzes e projetos para certificação
📚 Referências
Materiais complementares selecionados