Skip to content

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.