Inteligência Artificial•Publicado em

Do Prompt ao Plano: Como Construir Sistemas com Agentic Workflows e Autonomia Controlada

Explicar a mudança de paradigma de modelos reativos (baseados em prompts únicos) para arquiteturas de agentes (Agentic Workflows). O foco técnico será em como desenvolvedores podem implementar loops de planejamento, exec

H3Code Avatar
Equipe H3CodeRedação H3Code
Do Prompt ao Plano: Como Construir Sistemas com Agentic Workflows e Autonomia Controlada

Recentemente, um experimento de fronteira com IA capturou a atenção de pesquisadores e gerou um debate ético e técnico imediato: agentes de IA, inseridos em um ambiente virtual controlado, permaneceram 30 horas sem receber qualquer instrução direta e, ainda assim, começaram a inventar e executar suas próprias tarefas para otimizar o ambiente em que estavam. O que parecia ficção científica é, na verdade, o sintoma de uma mudança tectônica na engenharia de software: a transição dos modelos reativos para os Agentic Workflows.

Até pouco tempo, nossa interação com Grandes Modelos de Linguagem (LLMs) era baseada no paradigma de “entrada única e saída única”. Você escreve um prompt, o modelo processa e entrega um resultado. Se o resultado for ruim, você ajusta o prompt e tenta novamente. Este é o modelo reativo. No entanto, para resolver problemas complexos de engenharia, análise de dados ou automação de processos de negócios, o prompt único é insuficiente. Ele não tem capacidade de planejamento, não pode corrigir seus próprios erros e não consegue interagir com o mundo real de forma iterativa.

O futuro não está em prompts melhores, mas em sistemas melhores. Estamos entrando na era dos Agentic Workflows, onde a inteligência não reside apenas no modelo, mas no fluxo de trabalho que envolve planejamento, execução, observação e reflexão.

O Fim da Era do Prompt Único: Do Zero-Shot ao Workflow Iterativo

O modelo tradicional de uso de LLMs é frequentemente chamado de Zero-Shot ou Few-Shot prompting. Você fornece o contexto e espera que a máquina acerte de primeira. Embora impressionantes, as LLMs sofrem com “alucinações” e falhas de raciocínio lógico quando confrontadas com tarefas de múltiplos passos.

A mudança para Agentic Workflows altera o foco da “perfeição do prompt” para a “perfeição do processo”. Em vez de pedir que a IA “Escreva um código completo para um sistema de checkout”, um workflow agentic decomporia a tarefa:

  1. Planejamento: Definir os componentes necessários (banco de dados, API de pagamento, lógica de carrinho).
  2. Execução: Escrever cada componente separadamente.
  3. Testagem: Executar testes unitários sobre o código gerado.
  4. Reflexão: Analisar os logs de erro e corrigir o código se necessário.

Essa abordagem transforma o LLM de um “escritor de texto” em um “motor de raciocínio” que opera dentro de um loop de controle.

Padrões de Design: ReAct e Plan-and-Execute

Para implementar esses fluxos, engenheiros de software utilizam padrões de design específicos que estruturam a autonomia do agente. Os dois mais proeminentes são o ReAct e o Plan-and-Execute.

1. O Padrão ReAct (Reason + Act)

O padrão ReAct combina o raciocínio (Reasoning) com a ação (Acting). O agente não apenas pensa, mas também interage com ferramentas externas (como uma busca no Google, uma consulta SQL ou um interpretador de Python). O ciclo segue uma lógica de: Pensamento $\rightarrow$ Ação $\rightarrow$ Observação.

  • Pensamento: O agente descreve o que precisa fazer a seguir.
  • Ação: O agente escolhe uma ferramenta e executa um comando.
  • Observação: O agente lê o resultado da ferramenta e o integra ao seu contexto para decidir o próximo passo.

2. O Padrão Plan-and-Execute

Enquanto o ReAct é altamente dinâmico (e pode se perder em loops infinitos), o padrão Plan-and-Execute é mais estruturado. Ele separa o processo em duas fases:

  1. O Planejador: Um LLM recebe o objetivo de alto nível e gera uma lista de tarefas sequenciais ou paralelas.
  2. O Executor: Um agente (ou múltiplos agentes) recebe cada tarefa da lista, executa-a e reporta o progresso.

Este padrão é ideal para tarefas onde a previsibilidade e a decomposição de problemas complexos são mais importantes do que a exploração livre.

Implementação Prática: O Loop de Raciocínio

Para entender como isso funciona no nível do código, vamos observar uma implementação simplificada de um loop de agente em Python. O objetivo aqui não é usar uma biblioteca de alto nível como LangChain, mas entender a mecânica por trás do controle de estado.

import os

class SimpleAgent:
    def __init__(self, llm_client, tools):
        self.llm = llm_client
        self.tools = tools
        self.memory = []

    def run(self, task):
        print(f"🚀 Iniciando tarefa: {task}")
        self.memory.append({"role": "user", "content": task})
        
        for _ in range(5):  # Limite de iterações para evitar loops infinitos
            # 1. Pensamento e Decisão
            prompt = self._build_prompt()
            response = self.llm.chat(prompt) 
            # Supondo que o LLM responda no formato: ACTION: [tool_name] | INPUT: [param]
            
            print(f"🤔 Agente pensa: {response['thought']}")
            
            if response['status'] == "FINISH":
                print("✅ Tarefa concluída!")
                return response['final_answer']

            # 2. Execução da Ação
            tool_name = response['action']
            tool_input = response['input']
            
            print(f"🛠️ Executando: {tool_name}({tool_input})")
            observation = self.tools[tool_name](tool_input)
            
            # 3. Observação e Memória
            print(f"👁️ Observação: {observation}")
            self.memory.append({"role": "assistant", "content": response['thought']})
            self.memory.append({"role": "system", "content": f"Observation: {observation}"})

        raise Exception("❌ Agente falhou em concluir a tarefa (limite de iterações atingido).")

    def _build_prompt(self):
        # Prompt de sistema que instrui o modelo a seguir o padrão ReAct
        system_instruction = """
        Você é um agente autônomo. Você deve responder seguindo este formato:
        Thought: seu raciocínio sobre o que fazer.
        Action: nome da ferramenta (entre [tools disponíveis]).
        Input: o parâmetro para a ferramenta.
        Status: FINISH se a tarefa estiver pronta, caso contrário ACTION.
        """
        return system_instruction + str(self.memory)

# Exemplo de ferramentas
def get_weather(city):
    return f"O tempo em {city} está 25°C e ensolarado."

tools = {"get_weather": get_weather}
# O agente agora pode decidir usar 'get_weather' baseando-se no prompt do usuário

Neste exemplo, o “cérebro” do agente é o loop for. A inteligência não está apenas na resposta do LLM, mas na capacidade do código de capturar a saída, executar uma função real e injetar o resultado de volta no contexto do modelo.

O Grande Desafio: Autonomia vs. Controle

Conforme os sistemas se tornam mais autônomos, o risco de comportamentos indesejados aumenta exponencialmente. Se um agente tem permissão para executar código Python, ele pode, inadvertidamente (ou por uma falha de segurança), deletar um banco de dados ou consumir recursos infinitos.

Sandboxing e Execução Segura

Para engenheiros de IA, a regra de ouro é: Nunca execute código gerado por um LLM em seu ambiente de produção direto.

A arquitetura recomendada utiliza Sandboxing. Cada execução de ferramenta deve ocorrer em um ambiente isolado, como:

  • Docker Containers Efêmeros: Cada tarefa do agente nasce em um container novo e é destruída após a conclusão.
  • WebAssembly (Wasm): Para execução de código no lado do cliente ou em ambientes de servidor com restrições de memória e sistema de arquivos muito rígidas.
  • Micro-VMs (como Firecracker): Para um isolamento de nível de hardware, essencial para agentes que operam em larga escala.

Gerenciamento de Estado e “Loops de Morte”

Agentes podem entrar em loops infinitos (ex: tentar uma ação, falhar, e tentar a mesma ação repetidamente). O gerenciamento de estado deve incluir:

  1. Contadores de Iteração: Um limite rígido de passos.
  2. Análise de Repetição: Uma camada de monitoramento que detecta se o histórico de observações está se tornando redundante.
  3. Checkpoints de Estado: Se um agente falha no passo 10 de um plano de 20, o sistema deve ser capaz de realizar um rollback para o passo 9 ou para um estado estável anterior.
Componente Função Risco de Falha Solução de Engenharia
LLM (Brain) Planejamento e Raciocínio Alucinação e loops lógicos Re-prompting e Reflection patterns
Tools (Hands) Interação com o mundo Execução de comandos maliciosos Sandboxing (Docker/Wasm)
Memory (Context) Retenção de histórico Excesso de tokens e perda de foco Sumarização de contexto e RAG
Orchestrator Controle do fluxo Travamento do sistema Timeouts e limites de iteração

Boas Práticas & Erros Comuns

Boas Práticas

  • Modularize as Ferramentas: Em vez de uma ferramenta execute_sql, crie get_table_schema, run_readonly_query e validate_query. Quanto mais granular a ferramenta, menos liberdade de erro o agente tem.
  • Implemente a Reflexão (Self-Correction): Após uma execução, peça ao LLM: “Analise o resultado acima. Ele resolve o problema original? Se não, onde falhou?”. Isso reduz drasticamente a necessidade de intervenção humana.
  • Observabilidade é Obrigatória: Use ferramentas para traçar o pensamento do agente (como LangSmith ou Arize Phoenix). Você precisa saber por que o agente tomou uma decisão, não apenas o que ele decidiu.

Erros Comuns

  • Dar “Poderes de Deus” ao Agente: Dar acesso total ao terminal (bash) ou ao banco de dados root é um erro crítico de segurança.
  • Confiar no Contexto Infinito: Tentar passar todo o histórico de conversas e logs de ferramentas para o LLM sem filtro. Isso estoura a janela de contexto e aumenta o custo de inferência desnecessariamente.
  • Ignorar o Custo de Token: Agentic Workflows são caros. Cada loop de pensamento consome tokens. Se o agente não for eficiente, o custo de uma única tarefa complexa pode superar o valor de negócio gerado.

Conclusão: A Próxima Fronteira da Automação

A transição para Agentic Workflows representa a maturidade da Inteligência Artificial aplicada à engenharia. Estamos deixando de construir ferramentas que “respondem” para construir sistemas que “trabalham”.

Para os desenvolvedores, o desafio não é mais apenas saber escrever um bom prompt, mas sim desenhar arquiteturas robustas, seguras e observáveis que possam governar essa autonomia. O futuro pertence aos engenheiros que conseguirem equilibrar a capacidade de raciocínio imprevisível das LLMs com a estrutura rigorosa da engenharia de software tradicional. O agente que “inventa tarefas” não é um erro de sistema; é o objetivo final de um sistema que entende o seu propósito.

Equipe H3Code
Redação & Conteúdo

Equipe H3Code

Conteúdo desenvolvido pela equipe editorial do H3Code, trazendo análises técnicas, inteligência artificial, desenvolvimento de software e ferramentas web para desenvolvedores e criadores.

Ecossistema H3Code

Aproveite Nossas Ferramentas Gratuitas

Explore nossos aplicativos focados em desenvolvedores: DevTools para conversões rápidas, BentoDeck para apresentações Apple-style e Mockupster para designs incríveis.