zylon-ai/private-gpt · error · CodeExecutionError

Code execution failed

Error message

Code execution failed: {message}

What it means

The outer catch-all of _exec_code(): any exception during remote code execution — SQL pre-processing, code preparation, or self._client.run_code — is cleaned via get_clean_exception_info and re-raised as a pandasai CodeExecutionError. The '# noqa: B904' marks an intentional missing 'from e'. The interpolated message is the cleaned traceback of the underlying failure, frequently the user's generated Python erroring inside the sandbox.

Solutions

  1. Read the embedded cleaned traceback — it pinpoints the exact line of generated code that failed.
  2. For timeout: raise the sandbox timeout configuration for the adapter.
  3. For code errors: retry the analysis; add corrective feedback (the error text) into the follow-up prompt so the LLM fixes its code.
  4. For recurring schema mistakes: enrich the dataframe description passed to PandasAI.
  5. For transport errors: verify sandbox service health and retry once.

Example fix

# before
output = sandbox._exec_code(code, env)

# after
from pandasai.exceptions import CodeExecutionError

try:
    output = sandbox._exec_code(code, env)
except CodeExecutionError as e:
    logger.warning("Generated code failed once, retrying with feedback: %s", e)
    code_v2 = regenerate_with_error_feedback(code, str(e))
    output = sandbox._exec_code(code_v2, env)
Defensive patterns

Strategy: retry

Try / catch

from pandasai.exceptions import CodeExecutionError

try:
    out = sandbox._exec_code(code, env)
except CodeExecutionError as e:
    out = sandbox._exec_code(regenerate_with_feedback(code, str(e)), env)

Prevention

When it happens

Trigger: Generated Python raises at runtime in the remote sandbox (NameError, KeyError, pandas errors); the sandbox times out (SandboxCodeOptions timeout=self._timeout); transport errors from _client.run_code; chained from the SQL-preprocess ValueError at line 281.

Common situations: LLM-generated code referencing columns that do not exist in the dataframe; long-running analysis exceeding the configured sandbox timeout; network blips between app and sandbox; incompatible library versions inside the sandbox vs. what the generated code assumes.

Related errors


AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15). Data as JSON: /api/errors/57aebdb50e20ead0. Report an issue: GitHub.

Appendix: source

Thrown at private_gpt/components/tabular/pandasai_sandbox.py:302

                )

            processed_code = self._prepare_code_for_execution(code)
            full_code = "\n\n".join(
                part for part in (self._PREAMBLE, datasets_code, processed_code) if part
            )

            execution_result = self._run(
                self._client.run_code(
                    full_code,
                    SandboxCodeOptions(language="python", timeout=self._timeout),
                )
            )
            return self._process_execution_result(execution_result)

        except Exception as e:
            message = get_clean_exception_info(e)
            logger.debug("Code execution failed: %s", message)
            raise CodeExecutionError(f"Code execution failed: {message}")  # noqa: B904

    def _process_sql_queries(
        self, sql_queries: list[str], environment: dict[str, Any]
    ) -> tuple[str, list[Exception]]:
        if not sql_queries:
            return "", []

        temp_dir = f"/tmp/{self._user_id}"
        datasets_map: dict[str, str] = {}
        exceptions: list[Exception] = []

        for sql_query in sql_queries:
            execute_sql_query_func = environment.get("execute_sql_query")
            if execute_sql_query_func is None:
                logger.warning("execute_sql_query function not found in environment")
                continue

            try:

View on GitHub (pinned to 4a030776a3)