- key design patterns
- planning
- thinking through the steps (outline)
- tool use
- knowing what tools are available and how to use them
- reflection
- iteratively improving that result
- possibly with multiple LLMs critiquing and making useful suggestions to drive that type of editing cycle
- multi agent communication
- different LLMs may have unique prompts and roles in the process
- memory
- tracking the progress and results hopefully over multiple steps
- some capabilities here are related to the LLM itself (function calling for tool use, function calling with LCEL), and many are external by the framework