Agentic Systems

An agentic system gives a model conditional control over a workflow. The model may choose when to search, call tools, ask for clarification, or stop, while application code enforces tool routing, guardrails, and traceable agent evaluation. The useful autonomy is bounded: the model can choose among allowed actions, not redefine the workflow’s authority.

Model judgement versus deterministic control

The core design split is model judgement versus deterministic control. A practical architecture is:

flowchart LR
  Goal[User goal] --> Builder[Policy and context builder]
  Builder --> Decision[Model decision]
  Decision --> Validator[Validator]
  Validator --> Runtime[Tool or runtime]
  Runtime --> Log[Observation log]
  Log --> Decision

Planning can be a private scratch step, a visible task graph, or no separate step at all. The important contract is that actions are typed and observations are appended as data, not silently merged into hidden state.

An agent loop should make each transition auditable:

StepModel responsibilityDeterministic responsibility
Interpret goalPropose next intent or missing information.Attach policy, identity, budget, and relevant context.
Choose actionSelect a tool call, ask a question, or stop.Validate schema, permission, rate limit, and cost.
Observe resultIncorporate the returned observation into the next decision.Log the call, redact sensitive data, and preserve source metadata.
TerminateProduce final answer or completion state.Check success criteria and escalation rules.

A validated decision

{
  "decision": {
    "type": "tool_call",
    "name": "search_docs",
    "arguments": { "query": "refund approval limit" }
  },
  "state": { "step": 2, "remaining_steps": 4 }
}

The action is only a proposal until the orchestrator validates name, schema, user permission, and budget. This separation keeps autonomy useful without letting the model silently bypass product controls.

When an agent is justified

Use an agentic system when the next step depends on observations that are not known upfront: retrieval may fail, tools may return conflicting state, the user may need a clarification, or a task may require several conditional actions. Use a fixed pipeline when the path is known and stable. A deterministic RAG pipeline is usually better than an agent for “answer from these documents”; an agent is more justified for “investigate why this deployment failed and propose a rollback plan.”

Evaluation and operations

Agentic systems should be evaluated by traces: task success, route choice, tool arguments, forbidden actions, retries, latency, and cost. They also need operational limits such as max steps, max tool calls, tool timeouts, budget ceilings, and explicit blocked states. Without those limits, the system can spend tokens and tool calls hiding uncertainty rather than resolving it.

Caveats

Agentic systems are inappropriate when a fixed pipeline is enough. Added autonomy increases test surface: tool misuse, prompt injection, stale memory, hidden retries, and runaway cost. The more autonomy a system has, the more its state and permissions must be explicit.

References