🧩 Exercícios: Sistemas Multiagentes, CrewAI e AutoGen
Extra Inteligência Artificial • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 14.1 — Definição de Agente com Role, Goal e Backstory
Contexto: Criar uma estrutura de dados representando um Agente no estilo CrewAI com especialização e limites operacionais claros.
Requisitos de Execução:
- Definir a classe
AgenteCrewcom atributos:role,goal,backstory,ferramentasepermite_delegar. - Instanciar um agente “Pesquisador Sênior de Mercado”.
- Validar a geração do prompt de sistema injetado para o LLM.
Resultado Esperado
System Prompt do Agente Pesquisador:
Você é um Pesquisador Sênior de Mercado. Seu objetivo é: Descobrir tendências de IA em 2026.
Histórico: Especialista com 15 anos de análise de dados no setor de tecnologia.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_1_SeuNome - Envie na tarefa:
Atividade Cap 14 - Sistemas Multiagentes
🔑 Gabarito de Código & Solução Comentada
# crew_agent_def.py
class AgenteCrew:
def __init__(self, role, goal, backstory, ferramentas=None, permite_delegar=True):
self.role = role
self.goal = goal
self.backstory = backstory
self.ferramentas = ferramentas or []
self.permite_delegar = permite_delegar
def gerar_system_prompt(self):
return (
f"Você é um {self.role}. Seu objetivo é: {self.goal}.\n"
f"Histórico: {self.backstory}"
)
if __name__ == "__main__":
pesquisador = AgenteCrew(
role="Pesquisador Sênior de Mercado",
goal="Descobrir tendências de IA em 2026",
backstory="Especialista com 15 anos de análise de dados no setor de tecnologia."
)
print("System Prompt do Agente Pesquisador:")
print(pesquisador.gerar_system_prompt())
🎯 Nível 2: Prática
Problema 14.2 — Encadeamento Sequencial de Tarefas (Pipeline de 2 Agentes)
Implemente uma equipe onde o Agente 1 (Redator) escreve um parágrafo sobre computação quântica e o Agente 2 (Revisor Gramatical) corrige e aprimora o vocabulário.
🔑 Gabarito de Código & Solução Comentada
# sequential_crew.py
def executar_equipe_sequencial(tema):
# Agente 1: Redator
rascunho = f"A computacao quantica usa qubits e superposicao para resolver contas rapidas sobre {tema}."
# Agente 2: Revisor
texto_revisado = rascunho.replace("computacao quantica", "Computação Quântica") \
.replace("qubits e superposicao", "qubits em estado de superposição") \
.replace("contas rapidas", "cálculos com aceleração exponencial")
return {"rascunho": rascunho, "final": texto_revisado}
🎯 Nível 3: Integração
Problema 14.3 — Arquitetura Hierárquica com Agente Gerente (Manager)
Construa um fluxo onde um Agente Gerente recebe um pedido complexo, quebra em duas subtarefas, delega para agentes executores e sintetiza o resultado final.
🔑 Gabarito de Código & Solução Comentada
# hierarchical_manager.py
class HierarchicalCrew:
def __init__(self, manager, workers):
self.manager = manager
self.workers = workers
def run(self, objetivo):
subtarefas = ["Pesquisar concorrentes", "Estimar custos de infraestrutura"]
resultados = {}
for sub in subtarefas:
# Gerente escolhe o trabalhador
trabalhador = self.workers[0] if "Pesquisar" in sub else self.workers[1]
resultados[sub] = f"Executado por {trabalhador}: Dados de {sub}"
# Síntese pelo Gerente
sintese = f"Relatório Gerencial aprovado para '{objetivo}': " + "; ".join(resultados.values())
return sintese
🎯 Nível 4: Desafio
Problema 14.4 — Padrão AutoGen: Diálogo com Agente Crítico (Debate Loop)
Implemente um ciclo de conversa entre dois agentes: um “Proponente de Arquitetura” e um “Engenheiro Crítico de Segurança”, que debatem até chegarem a um consenso ou limite de 3 rodadas.
🔑 Gabarito de Código & Solução Comentada
# autogen_debate_loop.py
def debate_autogen_loop(proposta_inicial):
mensagens = [{"agente": "Proponente", "msg": proposta_inicial}]
consenso = False
for rodada in range(1, 4):
ultima = mensagens[-1]["msg"]
if "senha em texto claro" in ultima:
mensagens.append({"agente": "Crítico", "msg": "Rejeitado: Nunca armazene senhas em texto claro. Use bcrypt ou Argon2."})
elif "Argon2" in ultima:
mensagens.append({"agente": "Crítico", "msg": "Aprovado: Argon2 atende aos padrões OWASP. Consenso atingido."})
consenso = True
break
else:
mensagens.append({"agente": "Proponente", "msg": "Atualizando proposta: Usaremos hashing seguro com Argon2id."})
return {"consenso": consenso, "historico": mensagens}