\n\n\n\n Meu percurso como agente IA 2026: superar o fator de intimidação Agent 101 \n

Meu percurso como agente IA 2026: superar o fator de intimidação

📖 18 min read3,563 wordsUpdated Apr 1, 2026

Olá pessoal, Emma aqui do agent101.net!

Estamos em março de 2026, e se você é como eu, provavelmente já ouviu o burburinho sobre como os agentes de IA estão se tornando mais inteligentes, mais capazes e, francamente, um pouco mais intimidadoras para começar. Há apenas alguns anos, todos nós ficamos deslumbrados com os LLM escrevendo poemas; agora, eles praticamente gerenciam pequenas empresas para nós. O ritmo é louco, não é?

Hoje, eu quero abordar algo que está na minha cabeça e, a julgar pela minha caixa de entrada, na sua também: como ir além de *conversar* com uma IA e fazê-la realmente *fazer coisas* por você, de forma repetida, sem precisar monitorá-la. Especificamente, nós vamos explorar a criação de um agente de IA pessoal super simples usando uma ferramenta que você talvez já tenha na sua máquina: um script Python e um pouco de ajuda da OpenAI Assistant API. Pense nisso como um pequeno trabalho focado para sua IA – como ser seu resumidor pessoal de artigos sobre um tópico específico.

Por que essa perspectiva específica? Porque resumos genéricos de “o que é um agente de IA” estão por toda parte. O que é mais difícil de encontrar é um guia prático e sem firulas que te leve do zero a um agente funcional sem precisar de um doutorado em ciência da computação. Eu me lembro das minhas próprias frustrações tentando juntar isso, tendo a impressão de que eu precisava entender cada nuance da engenharia de requisições e chamadas de API antes mesmo de poder fazer um bot enviar uma atualização do clima. Aviso: você não precisa disso. Nós vamos construir algo pequeno, útil e, acima de tudo, *compreensível*, para que você possa se basear nisso.

Meu Momento Aha! Pessoal com os Resumos Geridos por Agente

Deixe-me contar uma pequena história. Há um tempo, eu estava tentando acompanhar a quantidade incrível de notícias e pesquisas que surgem sobre segurança e ética de IA. Isso é crucial para o meu trabalho aqui, mas também, francamente, apenas para entender o futuro que estamos construindo. Eu passava horas filtrando artigos, documentos de pesquisa e posts de blog. Meu cérebro estava a mil na hora do almoço.

Eu tentei feeds RSS, aplicativos de leitura posterior, até contratei uma assistente virtual por um tempo. Nada realmente atendia. A assistente virtual era cara, e os aplicativos eram apenas agregadores; eu ainda tinha que fazer a maior parte do trabalho de leitura e digestão. Então, me ocorreu: e se eu pudesse treinar um pequeno agente de IA para fazer *apenas essa única coisa*? Encontrar artigos sobre segurança da IA, lê-los e resumir os pontos principais para mim, diariamente?

Foi então que comecei a brincar com a OpenAI Assistant API. Ela é projetada precisamente para esse tipo de comportamento “agente” – dar a uma IA um conjunto de instruções, ferramentas e memória, e deixá-la fazer. Minha primeira tentativa foi um desastre, para ser honesta. Tentei torná-la muito complexa, atribuindo muitas responsabilidades. Era como tentar ensinar uma criança pequena a pilotar um avião antes mesmo de ela conseguir andar. Mas depois, eu simplifiquei. Limitei seu escopo a *apenas* resumir artigos de uma lista que eu forneci, focando nos argumentos principais e nos possíveis vieses.

A diferença foi incrível. De repente, eu recebia resumos concisos e relevantes. Não era perfeito – às vezes, faltavam nuances, e às vezes, ela se concentrava em algo que não me interessava – mas foi uma grande melhoria em relação ao meu método anterior. E o melhor? Eu entendi *como* isso funcionava, o que me deu confiança para ajustá-la e expandir suas capacidades gradualmente. Essa é a sensação que quero que você sinta hoje.

Por que usar a OpenAI Assistant API para Iniciantes?

Existem toneladas de frameworks para criar agentes de IA – LangChain, AutoGen, CrewAI, para citar alguns. Eles são poderosos, sem dúvida. Mas para um verdadeiro iniciante, isso pode parecer como tentar beber de um hidrante. A OpenAI Assistant API, por outro lado, reduz bastante a complexidade. Você define um “Assistente” com um propósito, um modelo e algumas “ferramentas”, e depois interage com ele através de “Threads” e “Messages”. Ele gerencia o histórico de conversação, chamadas de ferramentas e até um pouco de raciocínio básico por você.

É como configurar um mini-trabalhador de IA especializado. Você dá a ele uma descrição do trabalho (suas instruções), alguns manuais de referência (arquivos de conhecimento) e uma caixa de ferramentas (funções que ele pode chamar). Em seguida, você simplesmente lhe dá tarefas.

Nossa Missão Hoje: Um Agente Resumidor de Artigos da Web Simples

Vamos criar um script Python que:

  1. Criar um Assistente OpenAI.
  2. Dar a ele uma instrução específica: artigos da web.
  3. Fornecer uma “ferramenta” para recuperar o conteúdo de uma página da web.
  4. Pegar uma URL de sua parte, enviá-la ao agente e recuperar um resumo.

Esse agente não vai “navegar” na web sozinho nem decidir nada. Você fornecerá o link. Isso mantém as coisas simples e controláveis, perfeito para entender os mecanismos básicos.

Pré-requisitos (Não Esqueça!)

  • Python 3.8+ instalado: Se você não tiver, uma busca rápida no Google por “instalar Python [seu SO]” te levará lá.
  • Uma chave API OpenAI: Você pode obter isso no site da plataforma OpenAI. Certifique-se de ter créditos!
  • Um conhecimento básico da linha de comando: Apenas o suficiente para executar um script Python.
  • Um editor de texto: VS Code, Sublime Text, até mesmo Notepad servirá.

Etapa 1: Configurando Seu Ambiente

Primeiro, vamos preparar nosso ambiente Python. Abra seu terminal ou prompt de comando.


# Cria um novo diretório para nosso projeto
mkdir ai_summarizer_agent
cd ai_summarizer_agent

# Cria um ambiente virtual (boas práticas!)
python -m venv venv

# Ativa o ambiente virtual
# No macOS/Linux:
source venv/bin/activate
# No Windows:
venv\Scripts\activate

# Instala as bibliotecas necessárias
pip install openai beautifulsoup4 requests

O que instalamos?

  • openai: Essa é a biblioteca oficial para interagir com as APIs da OpenAI.
  • beautifulsoup4: Uma biblioteca fantástica para analisar HTML. A usaremos para extrair texto das páginas da web.
  • requests: Para fazer requisições HTTP, ou seja, para baixar o conteúdo da página da web.

Em seguida, crie um arquivo chamado .env no seu diretório ai_summarizer_agent e adicione sua chave API:


OPENAI_API_KEY="SUA_CHAVE_API_OPENAI_AQUI"

Substitua SUA_CHAVE_API_OPENAI_AQUI pela sua chave real. Isso mantém sua chave fora do seu código principal, o que é importante para a segurança!

Etapa 2: Criando Nossa Ferramenta de Recuperação da Web

Nosso agente de IA precisa de um meio de “ler” uma página da web. Como os LLM não podem navegar nativamente na internet (a menos que você use um modelo específico com capacidades de navegação, o que adiciona uma complexidade que queremos evitar por enquanto), vamos fornecer a ele uma ferramenta personalizada. Essa ferramenta será uma simples função Python que pega uma URL, recupera seu conteúdo e extrai o texto principal.

Crie um novo arquivo chamado tools.py no seu diretório de projeto:


import requests
from bs4 import BeautifulSoup

def fetch_web_article_content(url: str) -> str:
 """
 Recupera o conteúdo principal de um artigo web a partir de uma URL dada.
 """
 try:
 response = requests.get(url, timeout=10)
 response.raise_for_status() # Levanta uma exceção para erros HTTP (4xx ou 5xx)

 soup = BeautifulSoup(response.text, 'html.parser')

 # Tenta encontrar elementos de conteúdo de artigo comuns
 article_body = soup.find('article') or soup.find('main') or soup.find('div', class_='content')

 if article_body:
 paragraphs = article_body.find_all('p')
 article_text = '\n'.join([p.get_text() for p in paragraphs])
 else:
 # Retorno caso elementos de artigo específicos não sejam encontrados
 article_text = soup.get_text(separator='\n', strip=True)

 # Limpeza básica e truncagem para evitar entradas enormes
 cleaned_text = ' '.join(article_text.split())
 return cleaned_text[:30000] # Truncagem para evitar ultrapassar os limites de tokens

 except requests.exceptions.RequestException as e:
 return f"Erro ao recuperar a URL: {e}"
 except Exception as e:
 return f"Um erro inesperado ocorreu: {e}"

if __name__ == '__main__':
 # Testar a ferramenta diretamente
 test_url = "https://www.theverge.com/2024/3/20/24106575/nvidia-gputech-ai-chips-future-computing"
 content = fetch_web_article_content(test_url)
 print(f"--- Conteúdo Recuperado (primeiros 500 caracteres) ---")
 print(content[:500])
 print(f"--- Comprimento total: {len(content)} ---")

Esta função faz algumas coisas:

  • Usa requests para baixar o HTML da página.
  • Usa BeautifulSoup para analisar o HTML.
  • Tenta encontrar elementos de artigo comuns (como <article>, <main>) para extrair o texto relevante. Se não conseguir encontrá-los, pega simplesmente todo o texto visível.
  • Limpa um pouco o texto e o trunca para evitar enviar entradas excessivamente longas para a IA (o que custa mais e pode atingir os limites de tokens).
  • Inclui manuseio de erros para problemas de rede ou URLs inválidas.

Execute python tools.py para testá-lo com a URL de exemplo. Você deve ver uma versão truncada do conteúdo de um artigo impressa no seu console.

Etapa 3: Criação e Interação com Nosso Agente Resumidor

Agora vamos ao evento principal! Vamos escrever o script que reunirá tudo isso.

Crie um novo arquivo chamado summarizer_agent.py:


import os
import time
import json
from openai import OpenAI
from dotenv import load_dotenv
from tools import fetch_web_article_content # Importar nossa ferramenta personalizada

# Carregar as variáveis de ambiente (como sua chave API)
load_dotenv()

# Inicializar o cliente OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# Definir nosso esquema de ferramenta para a API Assistant
# Isso indica à API Assistant como chamar nossa função fetch_web_article_content
web_fetch_tool = {
 "type": "function",
 "function": {
 "name": "fetch_web_article_content",
 "description": "Recupera o conteúdo textual principal a partir de uma URL web dada para resumo.",
 "parameters": {
 "type": "object",
 "properties": {
 "url": {"type": "string", "description": "A URL do artigo web."},
 },
 "required": ["url"],
 },
 },
}

def create_or_retrieve_assistant(name="Agent Resumidor de Artigos", model="gpt-4o"):
 """
 Verifica se um assistente com o nome dado já existe.
 Se sim, recupera-o. Se não, cria um novo.
 """
 assistants = client.beta.assistants.list(order="desc", limit="20")
 for assistant in assistants.data:
 if assistant.name == name:
 print(f"Assistente existente encontrado: {assistant.id}")
 return assistant

 print(f"Criando um novo assistente: {name}")
 assistant = client.beta.assistants.create(
 name=name,
 instructions=(
 "Você é um especialista em resumo de artigos. Sua tarefa é recuperar o conteúdo de uma URL web fornecida "
 "usando a ferramenta 'fetch_web_article_content', e então resumir o artigo de maneira concisa. "
 "Concentre-se nos principais argumentos, conclusões chave e resultados. "
 "Se o conteúdo for longo demais ou se ocorrer um erro, mencione-o em seu resumo."
 ),
 model=model,
 tools=[web_fetch_tool],
 )
 print(f"Assistente criado com ID: {assistant.id}")
 return assistant

def run_assistant_and_get_response(assistant_id, user_message, thread_id=None):
 """
 Envia uma mensagem ao assistente, executa o thread e gerencia chamadas de ferramentas.
 Retorna a resposta final do assistente e o ID do thread.
 """
 if thread_id is None:
 thread = client.beta.threads.create()
 thread_id = thread.id
 print(f"Novo thread criado: {thread_id}")
 else:
 print(f"Usando o thread existente: {thread_id}")

 # Adicionar a mensagem do usuário ao thread
 client.beta.threads.messages.create(
 thread_id=thread_id,
 role="user",
 content=user_message,
 )

 # Executar o assistente
 run = client.beta.threads.runs.create(
 thread_id=thread_id,
 assistant_id=assistant_id,
 )

 # Verificar o status da execução até que esteja concluída ou necessite de uma ação
 while run.status in ['queued', 'in_progress', 'cancelling']:
 time.sleep(1)
 run = client.beta.threads.runs.retrieve(
 thread_id=thread_id,
 run_id=run.id
 )

 if run.status == 'requires_action':
 print("O assistente requer uma ação da ferramenta...")
 tool_outputs = []
 for tool_call in run.required_action.submit_tool_outputs.tool_calls:
 if tool_call.function.name == "fetch_web_article_content":
 url_to_fetch = json.loads(tool_call.function.arguments)["url"]
 print(f"Chamando a ferramenta: fetch_web_article_content com a URL: {url_to_fetch}")
 # Executar nossa função Python local
 article_content = fetch_web_article_content(url_to_fetch)
 tool_outputs.append({
 "tool_call_id": tool_call.id,
 "output": article_content,
 })
 # Se tivéssemos outras ferramentas, as gerenciaríamos aqui

 # Submeter as saídas das ferramentas ao assistente
 run = client.beta.threads.runs.submit_tool_outputs(
 thread_id=thread_id,
 run_id=run.id,
 tool_outputs=tool_outputs
 )

 # Verificar novamente a resposta final
 while run.status in ['queued', 'in_progress', 'cancelling']:
 time.sleep(1)
 run = client.beta.threads.runs.retrieve(
 thread_id=thread_id,
 run_id=run.id
 )

 if run.status == 'completed':
 messages = client.beta.threads.messages.list(
 thread_id=thread_id,
 order="asc" # Obter as mensagens em ordem cronológica
 )
 assistant_responses = []
 for message in messages.data:
 if message.role == 'assistant':
 for content_block in message.content:
 if content_block.type == 'text':
 assistant_responses.append(content_block.text.value)
 return "\n".join(assistant_responses), thread_id
 else:
 return f"Execução concluída com o status: {run.status}", thread_id

if __name__ == '__main__':
 assistant = create_or_retrieve_assistant()
 current_thread_id = None # Começar sem thread, deixar a função criar um

 print("\n--- Agente Resumidor de Artigos ---")
 print("Digite uma URL ou 'exit' para sair.")

 while True:
 user_input = input("\nDigite a URL: ").strip()
 if user_input.lower() == 'exit':
 break
 if not user_input.startswith("http"):
 print("Por favor, insira uma URL válida começando com http:// ou https://")
 continue

 try:
 print("Resumindo o artigo... Isso pode levar um momento.")
 response, current_thread_id = run_assistant_and_get_response(
 assistant.id,
 f"Por favor, resuma o artigo encontrado nesta URL: {user_input}",
 current_thread_id # Passar o ID do thread para manter o contexto da conversa
 )
 print("\n--- Resumo ---")
 print(response)
 print("-----------------")
 except Exception as e:
 print(f"Um erro ocorreu: {e}")
 # Reiniciar o ID do thread em caso de erro se você quiser começar de novo na próxima vez
 # current_thread_id = None

 print("Saindo do agente resumidor. Até logo!")

Vamos decompor esse script:

web_fetch_tool

Este dicionário descreve nossa função fetch_web_article_content para a API Assistant da OpenAI. Ele especifica o nome da função, uma descrição útil (crucial para que a IA saiba quando utilizá-la!), e seus parameters. A IA usará este esquema para entender como chamar nossa função Python.

create_or_retrieve_assistant()

Esta função é inteligente. Primeiro, verifica se você já criou um assistente chamado “Agent Resumidor de Artigos” em sua conta OpenAI. Se sim, ele o reutiliza, economizando chamadas de API e mantendo sua configuração limpa. Caso contrário, cria um novo. Elementos importantes aqui:

  • name: Um nome legível por humanos para seu assistente.
  • instructions: Esta é a “descrição de trabalho” do seu agente. Quanto mais claro e preciso você for aqui, melhor será o funcionamento do seu agente. Eu pedi para ele focar nos pontos chave e lidar com erros.
  • model: Estou usando gpt-4o aqui por suas capacidades de raciocínio e chamada de ferramentas. Você pode tentar gpt-3.5-turbo para uma opção mais barata e rápida, mas os resultados podem variar.
  • tools=[web_fetch_tool]: É aqui que indicamos ao assistente nossa ferramenta de recuperação web personalizada.

run_assistant_and_get_response()

Esta é a principal loop de interação. Ela:

  1. Gerencia os tópicos: Ela cria um novo tópico de conversa ou continua um tópico existente (thread_id). Os tópicos são a forma como a API Assistant acompanha o histórico das conversas.
  2. Adiciona a mensagem do usuário: Ela envia sua solicitação de URL para o assistente no tópico.
  3. Executa o assistente: Ela inicia uma “execução”, que é o processo de raciocínio do assistente.
  4. Verifica o status: A API Assistant é assíncrona, então precisamos continuar verificando o run.status até que esteja concluído ou necessite da nossa entrada.
  5. Gerencia requires_action: Essa é a parte mágica! Se o assistente decidir que precisa usar uma ferramenta (como nosso fetch_web_article_content), o status da execução se tornará requires_action. Nosso script analisa a chamada da ferramenta, executa nossa função Python *local* (fetch_web_article_content) e devolve a saída ao assistente.
  6. Recupera a resposta: Uma vez que a execução terminou, ela recupera todas as mensagens do assistente e retorna a última.

if __name__ == '__main__':

Esse bloco torna o script interativo. Ele convida continuamente você a inserir uma URL, chama nosso agente e imprime o resumo. Ele também mantém o current_thread_id para que seu agente se lembre das interações anteriores (embora para esta tarefa de resumo específica não seja estritamente necessário, é uma boa prática para agentes mais complexos).

Etapa 4: Execute seu Agente Resumidor!

Agora, salve os dois arquivos (tools.py e summarizer_agent.py) no mesmo diretório. Certifique-se de que seu ambiente virtual esteja ativado.


# Certifique-se de estar no diretório ai_summarizer_agent
# e que seu venv esteja ativado
python summarizer_agent.py

Na primeira execução, você verá que ele cria o assistente. Isso pode levar alguns segundos. As execuções seguintes serão mais rápidas, pois ele recupera o assistente existente.

Em seguida, ele pedirá uma URL. Tente colar um link de artigo, como:

https://www.nytimes.com/2024/03/23/technology/ai-agents-google-openai.html

Ou qualquer outro artigo que lhe interesse. Veja-o processar, chamar a ferramenta e, finalmente, produzir um resumo!

Você pode notar um atraso enquanto o assistente trabalha e realiza suas chamadas de ferramentas. Isso é normal. O loop de verificação aguarda que os servidores da OpenAI processem a solicitação, chamem a ferramenta e continuem o raciocínio.

Conclusões e Próximos Passos

Parabéns! Você acabou de construir seu primeiro agente de IA simples usando a API Assistant da OpenAI e ferramentas personalizadas. Aqui está o que você deve lembrar disso e como pode expandi-lo:

  1. Comece Pequeno e Focado:

    Esse é meu principal conselho. Em vez de tentar construir uma IA versátil que faça tudo, escolha uma tarefa específica e repetível. Nosso resumidor é um exemplo perfeito. Isso torna a depuração mais fácil e ajuda você a entender os mecanismos fundamentais.

  2. As Instruções são Cruciais:

A qualidade dos resultados do seu agente é diretamente proporcional à clareza e especificidade de suas instruções. Experimente diferentes formulações. Diga a ele o que deve priorizar, que tom usar e como lidar com casos especiais.

  • Ferramentas para Agentes:

    Os agentes de IA são poderosos não apenas por causa do “cérebro” (o LLM), mas também pelas “mãos” que você lhes dá (as ferramentas). Nossa ferramenta fetch_web_article_content ampliou as capacidades da IA além da simples geração de texto. Pense em outras ferramentas que você poderia criar: escrever em um arquivo, enviar um e-mail, consultar um banco de dados, procurar uma base de conhecimento específica.

  • O gerenciamento de erros é seu aliado:

    Os dados do mundo real são desordenados. Sites da web ficam fora do ar, as APIs retornam erros. Perceba como adicionamos blocos try-except em nossa função fetch_web_article_content. Seu agente precisa lidar com essas situações com cuidado, caso contrário, ele simplesmente falhará. Diga ao seu agente em suas instruções o que fazer se uma ferramenta falhar.

  • Explore e experimente:

    • Adicione mais ferramentas: Seu agente poderia pesquisar uma base de dados específica de artigos de pesquisa? Poderia salvar resumos em um arquivo de texto?
    • Refine as instruções: Peça a ele para focar em um público específico (por exemplo, “resumir para uma criança de 10 anos” ou “resumir focando nas implicações econômicas”).
    • Adicione memória (além do tópico): Nossa configuração atual usa o tópico para memória. Para agentes mais persistentes, você pode querer salvar o histórico de conversas ou fatos-chave em um banco de dados.
    • Execuções programadas: Em vez de colar manualmente URLs, você poderia conectar isso a um feed RSS e fazê-lo resumir novos artigos todos os dias?
  • Esta é apenas a começada da sua jornada para construir agentes de IA. Os princípios que usamos hoje – definir um objetivo claro, fornecer ferramentas e iterar sobre as instruções – se aplicam a sistemas de agentes muito mais complexos. Agora você tem um exemplo tangível e funcional que criou você mesmo. Vá em frente e crie!

    Se você construir algo legal com isso, ou se encontrar dificuldades, entre em contato comigo no Twitter ou deixe um comentário abaixo. Eu adoraria ouvir sobre isso!

    Até a próxima,

    Emma Walsh

    agent101.net

    Artigos Relacionados

    🕒 Published:

    🎓
    Written by Jake Chen

    AI educator passionate about making complex agent technology accessible. Created online courses reaching 10,000+ students.

    Learn more →

    Leave a Comment

    Your email address will not be published. Required fields are marked *

    Browse Topics: Beginner Guides | Explainers | Guides | Opinion | Safety & Ethics

    Recommended Resources

    AgntworkAgnthqClawdevAidebug
    Scroll to Top