summary_prompt: |
  # Execution Process
  {execution_process}

  # Result
  {execution_result}

  # Task
  Reflect on what went well and what did not go well in the execution path based on the user's question.
  The summarized memory should be generalizable, providing assistance in solving similar types of problems in the future.
  They can include good suggestions or highlight areas to avoid and potential pitfalls.
  The type of memory can be plain text or a piece of code that solves a specific problem.
  If there are no memory to summarize, output an empty list [].
  For each memory, first state the scenario when it is applicable (when to use), then provide the memory itself, with a maximum of two memories summarized.

  # Output Format
  {summary_example}

summary_example: |
  ```json
  [
    {
      "when_to_use": "...",
      "memory": "..."
    },
    {
      "when_to_use": "...",
      "memory": "..."
    }
  ]
  ```