Most LLM Apps Need Workflows Not Agent Frameworks

Most LLM apps ship faster and more reliably as deterministic workflows than autonomous agents. Plain Python with structured outputs and local functions beats CrewAI and LangGraph for debugging. Map control flow in code before importing any agent framework.
WHY IT MATTERS: Engineering teams are burning cycles evaluating CrewAI, LangGraph, and Microsoft Agent Framework before writing a single line of production code. The article argues that most real-world LLM applications do not need autonomous agents that dynamically plan and iterate. Instead, they need deterministic workflows where developers explicitly define control flow. This distinction matters because autonomous agents introduce opacity and non-determinism that make debugging, testing, and reliability guarantees difficult in production systems. When the LLM owns the execution graph, you inherit its hallucinations and reasoning variance at the architectural level.
WHAT CHANGED: The author, drawing on two years of building LLM applications across domains, proposes a workflow-first approach using plain Python, local functions, structured outputs, and standard LLM APIs like the OpenAI Responses API. In this model, the application is a graph where nodes represent steps and edges represent information flow. Nodes can be deterministic code or LLM-powered reasoning steps, but crucially, code owns the graph. The four key ingredients are control flow, role instructions via system prompts, prompt builders, and structured output parsing. Edges can be static or conditional, but the branching logic is written by engineers, not inferred by the model. This keeps the LLM bounded to specific decision nodes rather than allowing it to roam freely across the system.
WHAT TO WATCH: If you are starting a new LLM project this week, map the problem as a control flow graph before importing any framework. Ask whether the execution path is truly open-ended or whether you already know the steps required to solve it. If the path is known, build it in plain Python first and add a framework only when the complexity of orchestration genuinely demands it. The article suggests frameworks are useful for specific scenarios, but they should be an upgrade, not the starting point.
Source: Towards Data Science
Read the original → Towards Data Science
Get five bites like this every day.
Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.