• 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