Levels of Agency
In Agentic AI systems, LLM outputs control the workflow: The system takes the outputs from the LLMs and integrates them with code. Instead of using a 0 and 1 binary classification to determine whether a system is agentic or not agentic, a better classification would be to use a continuous spectrum which considers the influence of the LLM outputs on the system's overall workflow. The table below shows such a classification by Hugging Face Smolagents:
| Agency Level | Description | How that's called | Example Pattern |
|---|---|---|---|
| ☆☆☆ | LLM output has no impact on program flow | Simple processor | process_llm_output(llm_response) |
| ★☆☆ | LLM output determines basic control flow | Router | if llm_decision(): path_a() else: path_b() |
| ★★☆ | LLM output determines function execution | Tool call | run_function(llm_chosen_tool, llm_chosen_args) |
| ★★★ | LLM output controls iteration and program continuation | Multi-step Agent | while llm_should_continue(): execute_next_step() |
| ★★★ | One agentic workflow can start another agentic workflow | Multi-Agent | if llm_trigger(): execute_agent() |
Levels of Agency
Table source: https://huggingface.co/blog/smolagents
By understanding the different levels of agency, we can better appreciate how complex our agentic system needs to be based on our desired workflows, and consider if we need a multi-agent system, a simple tool calling system, or if an agent is really needed. In the next section, we give examples of when, and when not, to use agents.
TL;DR
The degree to how much LLMs' output determine the workflow of the system is its agency level. The use of LLMs alone does not make the system an agentic one if the LLMs' output does not affect the workflow.