Learn why rule-based reactive agents break under real-world pressure and how deliberative agents with full context unlock reliable autonomous behavior.
O primeiro recurso de "IA" que lancei foi um widget de triagem de suporte dentro de um painel interno de suporte. Os tickets chegavam, o widget escaneava cada mensagem em busca de palavras- chave e roteava a conversa para uma resposta pré-definida. Funcionava lindamente — até que um cliente escreveu "minha coisa parou de fazer o que faz." Zero correspondências de palavras-chave. O widget retornou "Desculpe, não posso ajudar com isso," e o ticket ficou sem roteamento por horas.
Eu havia construído um agente reativo: um sistema que mapeia entradas diretamente para saídas por meio de um conjunto fixo de regras, sem capacidade de raciocinar sobre o que ainda não conhece. As regras eram um modelo fixo do mundo como ele existia no dia em que escrevi o código. O mundo avançou; as regras não.
Pense em um agente reativo como uma máquina de vendas. Você pressiona B4 e obtém uma barra de granola. Mas se alguém pedir "algo saudável e crocante," a máquina não tem resposta — ela só entende códigos de botões. Um agente deliberativo é mais como um consultor experiente: você descreve o que precisa em linguagem natural, e ele raciocina sobre a melhor resposta antes de responder.
Essa lacuna — estímulo-resposta fixo versus raciocínio com contexto completo — é a divisão arquitetural sobre a qual todos os outros módulos neste caminho se constroem.
Espinha dorsal do caminho: O exemplo em execução ao longo de todos os cinco módulos é um agente de orquestração de tarefas extraído de um framework de orquestração Python real. Cada módulo adiciona uma camada. Este módulo lança a base.
Um agente reativo produz uma saída no momento em que vê uma entrada. Não há memória, sem raciocínio, sem modelo — apenas uma tabela de lookup expressa como código.
Esta função era todo o cérebro de triagem daquele painel de suporte. Quando o volume de tickets era baixo e as mensagens eram previsíveis, ela se sustentava. Sob carga real, três modos de falha surgiram:
else sempre.Agentes reativos são apropriados para entradas determinísticas e enumeráveis — mapear códigos de status HTTP para mensagens, por exemplo. Eles falham no momento em que o espaço de entrada é aberto.
Armadilha comum: Envolver um agente reativo em uma UI moderna não o torna inteligente. Se a lógica de decisão ainda é uma série de verificações de palavras-chave, você tem uma máquina de vendas com um painel mais elegante — e os mesmos modos de falha.
Um agente deliberativo mantém o histórico completo de uma conversa e pede a um modelo de linguagem que raciocine sobre esse histórico antes de responder. A janela de contexto do modelo torna-se a memória de trabalho do agente — não um índice de palavras-chave.
Quando substituí o widget de triagem reativo por um loop deliberativo, "minha coisa parou de fazer o que faz" produziu uma resposta sensível na primeira tentativa. O modelo inferiu intenção do contexto em vez de combinar palavras-chave. Mais importante, mensagens de acompanhamento — "ainda quebrado" ou "deixa pra lá, achei" — chegaram corretamente porque o agente lembrava o que já havia sido dito.
Aqui está a versão deliberativa mínima — o primeiro bloco executável canônico para este caminho:
A mudança estrutural em relação à versão reativa é pequena mas fundamental:
claude-sonnet-4-6 aplica sua janela de contexto de 200K tokens para surfaçar a resposta
mais relevante, inclusive para fraseamentos nunca antecipados quando o sistema foi construído.O que acabou de mudar: O agente passou de saber exatamente três coisas (exportação, login, cobrança) para ser capaz de lidar com qualquer mensagem que o modelo possa interpretar — e de dizer graciosamente "não tenho certeza" quando genuinamente não puder ajudar.
Após lançar a versão deliberativa, o próximo desafio foi a explicabilidade. Quando um colega perguntou "por que ele sugeriu uma redefinição de senha para aquele ticket?", não havia trilha de auditoria — apenas uma resposta.
O padrão ReAct (Raciocínio + Ação) aborda isso pedindo ao modelo que escreva seu raciocínio antes de agir. Cada etapa tem a forma: pensar sobre o que fazer, então fazer. Quando adicionei raciocínio explícito ao agente de suporte, duas coisas melhoraram: a depuração tornou-se possível (eu podia ler a cadeia de pensamento), e a qualidade das respostas aumentou (o raciocínio escrito capturava erros antes que a resposta final fosse entregue).
A cadeia de raciocínio torna-se parte do contexto passado para a próxima etapa. Cada decisão subsequente que o agente toma tem visibilidade sobre por que a etapa anterior escolheu o que escolheu — não apenas o que escolheu. Este é o primeiro vislumbre do princípio de contexto compartilhado que o módulo 06 formaliza.
Antes de continuar, considere: o que aconteceria se dois agentes deliberativos separados trabalhassem em metades diferentes da mesma tarefa — sem compartilhar seus históricos de conversa?
Cada instância faria suposições independentes. Seus resultados provavelmente entrariam em conflito ou duplicariam trabalho. Este é o modo de falha multi-agente que o módulo 06 diagnostica e que a arquitetura linear dos módulos 02 a 05 é especificamente projetada para evitar. Tenha esse modo de falha em mente enquanto o caminho avança.
Os padrões reativo e deliberativo estabelecem o porquê. A arquitetura usada ao longo do restante deste caminho é um agente linear: uma única instância de modelo que recebe uma especificação de tarefa, gera um plano de etapas e executa cada etapa sequencialmente — com o contexto completo anterior visível em cada turno.
Sem agentes paralelos. Sem históricos fragmentados. Cada etapa constrói sobre a anterior.
Isso é intencionalmente mínimo. O módulo 02 adiciona o loop de planejamento e execução. O módulo 03 registra ferramentas que o agente pode chamar. O módulo 04 insere pontos de verificação humanos. O módulo 05 monta o capstone completo. Cada expansão é ganha pela prosa que a introduz.
Retorno arquitetural: Quando você chegar ao módulo 06, terá um sistema de agente linear único em funcionamento. O argumento do módulo 06 — que adicionar mais agentes raramente o melhora — tem mais impacto porque você terá construído a alternativa você mesmo.
Application-level questions — predict behavior, spot failures, choose the right pattern.
1. A user sends the message 'my account thing is totally broken.' to the reactive support agent shown in this module. What does the agent return?
Correct Answer: B
None of the keywords ('export', 'login', 'billing') appear in the message, so the else branch fires. The reactive agent has no mechanism to infer intent from unfamiliar phrasing.
2. A user first asks about an export problem, then sends a follow-up: 'still broken after trying that.' How does the deliberative agent differ from the reactive agent in handling the follow-up?
Correct Answer: B
The deliberative agent appends every turn to conversation_history, so the model sees the original question and first response before generating a reply to the follow-up. The reactive agent has no memory at all.
3. After calling client.messages.create() with the Anthropic SDK, what does response.content[0].text hold?
Correct Answer: C
response.content is a list of content blocks. For a standard text response, content[0] is a TextBlock and its .text attribute holds the model-generated string.
4. What is the primary benefit of the ReAct pattern over a plain deliberative agent?
Correct Answer: B
ReAct asks the model to write out its thinking before giving the final answer. That written chain becomes part of the context (and the audit trail) for the next step.
5. Your company launches a new product category. Which agent type requires a code change before it can answer questions about it?
Correct Answer: B
The reactive agent's knowledge is encoded in its if/elif chain. Every new product category requires a developer to add new rules. The deliberative agent relies on the model's general reasoning, so it can handle new topics without code changes (though you may update the system prompt for context).
6. What failure mode occurs when two deliberative agents tackle different halves of the same task without sharing conversation history?
Correct Answer: B
Without shared history, each agent builds its own model of what the task requires. Their outputs can reflect conflicting assumptions — for example, one may choose a CSV format while the other chooses JSON — producing incompatible results.
7. In the linear agent foundation shown in this module, why does each step receive the full prior context rather than just the latest result?
Correct Answer: B
Passing the full context means each step sees all prior reasoning and outputs. This prevents the conflicting-assumptions failure mode: step 2 knows what step 1 decided, and builds on it rather than contradicting it.
8. Which of the following is a case where a reactive agent IS the right choice?
Correct Answer: B
HTTP status codes are a fully enumerated, deterministic input space. A simple lookup table (reactive) is the right tool. The other cases involve open-ended or context-dependent inputs where a reactive agent would fail on unanticipated inputs.