📝 Exercícios Práticos
Testa os teus conhecimentos com quizzes, exercícios de código e desafios práticos sobre agentes AI.
🧠 Quiz: Fundamentos de Agentes AI
Pergunta 1
Qual é a principal diferença entre um chatbot e um agente AI?
Pergunta 2
O que significa o padrão "ReAct"?
Pergunta 3
Qual componente permite que um agente lembre contexto de conversas anteriores?
🦙 Exercícios: Ollama
Exercício 1
Instalar e Testar Ollama
Objetivo
Instalar o Ollama e executar o primeiro modelo localmente.
Instruções
- Instala o Ollama no teu sistema operativo
- Descarrega o modelo
llama3.2:3b - Executa uma pergunta simples no modo interativo
- Regista os comandos utilizados
Comandos Esperados
bash
# Instalar (segundo o SO)
# macOS/Linux:
curl -fsSL https://ollama.com/install.sh | sh
# Descarregar modelo
ollama pull llama3.2:3b
# Executar interativamente
ollama run llama3.2:3b
# Verificar modelos instalados
ollama list
# Solução completa
ollama pull llama3.2:3b
ollama run llama3.2:3b
# No modo interativo, escreve: "Olá! Explica-me o que és."
# Para sair: /bye ou Ctrl+D
Exercício 2
Criar Agente Simples com LangChain
Objetivo
Criar um agente básico com Ollama e LangChain que pode usar uma ferramenta de cálculo.
Código Base
python
from langchain_community.llms import Ollama
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
# TODO: Criar o LLM com Ollama
llm = ...
# TODO: Definir ferramenta de cálculo
def calculadora(expressao: str) -> str:
...
# TODO: Criar o agente
agente = ...
# Testar
resultado = agente.run("Quanto é 25 * 48?")
print(resultado)
from langchain_community.llms import Ollama
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
# Criar o LLM
llm = Ollama(model="llama3.2:3b")
# Definir ferramenta de cálculo
def calculadora(expressao: str) -> str:
"""Calcula uma expressão matemática."""
try:
return str(eval(expressao))
except Exception as e:
return f"Erro: {e}"
ferramenta = Tool(
name="Calculadora",
func=calculadora,
description="Útil para cálculos matemáticos. Input: expressão matemática."
)
# Criar o agente
agente = initialize_agent(
[ferramenta],
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# Testar
resultado = agente.run("Quanto é 25 * 48?")
print(resultado) # Deve imprimir: 1200
🤖 Exercícios: Claude Agent SDK
Exercício 3
Configurar Claude Agent SDK
Objetivo
Instalar e configurar o Claude Agent SDK com uma ferramenta customizada.
Tarefa
- Instalar o Claude Agent SDK
- Configurar a API Key da Anthropic
- Criar uma ferramenta customizada que consulta uma API
- Executar o agente com uma tarefa
# Instalar SDK
# pip install claude-agent-sdk
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, Tool
# Definir ferramenta customizada
def consultar_clima(cidade: str) -> str:
"""Consulta o tempo atual para uma cidade."""
# Em produção, chamaria uma API real
return f"Tempo em {cidade}: 22°C, parcialmente nublado"
ferramenta_clima = Tool(
name="consultar_clima",
description="Consulta o tempo atual. Input: nome da cidade.",
func=consultar_clima
)
async def main():
async for message in query(
prompt="Qual está o tempo em Lisboa?",
options=ClaudeAgentOptions(
allowed_tools=["consultar_clima"],
custom_tools=[ferramenta_clima]
)
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
💻 Exercícios Práticos
Desafio 1
Agente de Pesquisa Web
IntermediárioObjetivo
Criar um agente que pesquisa na web e resume informações.
Requisitos
- Usar DuckDuckGo ou similar para pesquisa
- Processar múltiplos resultados
- Gerar um resumo estruturado
Código Inicial
python
from langchain_community.llms import Ollama
from langchain.agents import initialize_agent, AgentType
from langchain.tools import DuckDuckGoSearchRun
# TODO: Implementar o agente de pesquisa
...
from langchain_community.llms import Ollama
from langchain.agents import initialize_agent, AgentType
from langchain.tools import DuckDuckGoSearchRun
llm = Ollama(model="llama3.2:3b")
pesquisa = DuckDuckGoSearchRun()
ferramenta_pesquisa = Tool(
name="PesquisaWeb",
func=pesquisa.run,
description="Pesquisa na web por informações."
)
agente = initialize_agent(
[ferramenta_pesquisa],
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
resultado = agente.run(
"Pesquisa sobre as últimas novidades em IA generativa e resume em 3 pontos"
)
print(resultado)
Desafio 2
Sistema Multi-Agente
AvançadoObjetivo
Criar um sistema com múltiplos agentes que colaboram: pesquisador, escritor e revisor.
Arquitetura
- Pesquisador: Encontra informações relevantes
- Escritor: Redige o conteúdo
- Revisor: Verifica qualidade e corrige
from langchain_community.llms import Ollama
from langchain.tools import Tool
from langchain.agents import initialize_agent, AgentType
llm = Ollama(model="llama3.2:3b")
# Agente Pesquisador
def pesquisa_info(topico: str) -> str:
# Simulação de pesquisa
return f"Informações sobre {topico}: ..."
agente_pesquisador = initialize_agent(
[Tool(name="Pesquisa", func=pesquisa_info, description="Pesquisa informações.")],
llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION
)
# Agente Escritor
def escrever_artigo(info: str) -> str:
# Usar LLM para escrever
return llm.invoke(f"Escreve um artigo baseado em: {info}")
# Agente Revisor
def revisar(texto: str) -> str:
return llm.invoke(f"Melhora este texto: {texto}")
# Pipeline
def pipeline(topico: str):
info = agente_pesquisador.run(f"Pesquisa sobre: {topico}")
artigo = escrever_artigo(info)
final = revisar(artigo)
return final
resultado = pipeline("Inteligência Artificial em 2026")
🏆 Desafios Finais
🎯 Projeto Final
Para concluir o curso, propomos um projeto final que integra todos os conhecimentos:
- Criar um Agente Programador que possa gerar código HTML/CSS/JS básico
- Implementar um sistema de memória para guardar contexto entre sessões
- Adicionar validação de código gerado antes de guardar ficheiros
- Criar uma API REST para expor o agente
Recursos para o Projeto
Documentação
Consulta os módulos anteriores para exemplos detalhados.
Ferramentas
Usa Ollama, LangChain, e FastAPI como base.
Suporte
Coloca dúvidas nos fóruns ou comunidades.