text: Title: error_correction_pipeline cannot correct any error!
  Body: ### System Info
  
  Pandasai 2.0.32
  
  ### 🐛 Describe the bug
  
  In **pandasai/pipelines/chat/code_execution.py
  I find the following code
  ```python
      def execute(self, input: Any, **kwargs):
          ...
          while retry_count <= self.context.config.max_retries:
              try:
                  result = self.execute_code(input, code_context)
                  ...
  
              except Exception as e:
                  ...
                  code_to_run = self._retry_run_code(
                      code_to_run, self.context, self.logger, e
                  )
  ```
  It appears that Pandasai intends to correct the error by updating code_to_run. However, in each iteration of the `while` loop, the code attempts to execute: `result = self.execute_code(input, code_context)`, where `input` consistently represents the initial code generated by the language model. Consequently, Pandasai never actually corrects its error.
  
  Furthermore, in pandasai/pipelines/chat/error_correction_pipeline/error_correction_pipeline.py, the structure of the error_correction_pipeline is defined as follows:
  ```python
      self.pipeline = Pipeline(
              context=context,
              logger=logger,
              query_exec_tracker=query_exec_tracker,
              steps=[
                  ErrorPromptGeneration(on_prompt_generation=on_prompt_generation),
                  CodeGenerator(),
                  CodeCleaning(),
              ],
          )
  ```
  The `CodeGenerator()` step lacks a callback parameter similar to `on_execution=on_code_generation`, which is utilized in `generate_chat_pipeline`. Consequently, Pandasai fails to record the newly corrected code.