Software systems in the "agentic era" can be characterized by what controls the outer loop (orchestration) and what does the inner work (execution). Each axis is either LLM (probabilistic, flexible) or Deterministic (coded, predictable).
LLM Outer Deterministic Outer LLM Inner Agents LLM in Loop / Function Deterministic Bare LLM Standard Software
---
1. LLM Outside, Deterministic Inside - Agents with Tools An LLM orchestrates a workflow by deciding which tools to call and when. The tools themselves behave deterministically; the LLM's decisions about how and when to invoke them do not. You control the action space, not the path through it.
Examples: Coding agents, research agents, autonomous task runners Trade-off: High flexibility, low predictability. The agent may reach the right destination via an unexpected route - or not at all.
---
2. Deterministic Outside, LLM Inside - LLM in a Loop / Function Deterministic code drives the workflow - iterating, branching, and managing state - while an LLM handles the fuzzy parts: understanding, summarizing, classifying, or generating content at each step.
Examples: Web scrapers with LLM-powered content extraction, batch document analysis pipelines Trade-off: High predictability at the system level with LLM flexibility scoped to well-defined subtasks.
---
3. LLM Outside, LLM Inside - Bare LLM / Multi-Agent Chat The LLM is both the orchestrator and the executor. A single model (or multiple models) handles everything through conversation or chained prompts, with no deterministic scaffolding.
Examples: Raw chatbots, agent-to-agent conversations Trade-off: Maximum flexibility, but minimal control. Suited for open-ended exploration, or where consistent performance doesn't really matter.
---
4. Deterministic Outside, Deterministic Inside - Standard Software No LLM involved. Coded logic throughout.
Examples: Everything built before ~2022 (even if there was a RNG somewhere in there, you knew it would behave within some parameters) Trade-off: Fully predictable and auditable, but only handles what was explicitly anticipated at build time.
---
NESTING
Example pipeline:
[Deterministic] Loop over a list of domains → [LLM] LLM receives sitemap, selects 10 pages to analyze → [Deterministic] Route each page to the right scraper (image, text, structured data) → [LLM] LLM analyzes and synthesizes scraped content → [Deterministic] Write structured results to disk