def load_data(
        self,
        ai_prompt: str,
        file_ids: Optional[List[str]] = None,
        folder_id: Optional[str] = None,
        is_recursive: bool = False,
        individual_document_prompt: bool = True,
    ) -> List[Document]:
        """
        Extracts data from Box files using a custom AI prompt and creates Document objects.

        This method utilizes a user-provided AI prompt to potentially extract
        more specific data from the Box files compared to pre-configured AI
        services like Box AI Extract. It then creates Document objects containing
        the extracted data along with file metadata.

        Args:
            ai_prompt (str): The custom AI prompt that specifies what data to
                extract from the files.
            file_ids (Optional[List[str]], optional): A list of Box file IDs
                to extract data from. If provided, folder_id is ignored.
                Defaults to None.
            folder_id (Optional[str], optional): The ID of the Box folder to
                extract data from. If provided, along with is_recursive set to
                True, retrieves data from sub-folders as well. Defaults to None.
            is_recursive (bool, optional): If True and folder_id is provided,
                extracts data from sub-folders within the specified folder.
                Defaults to False.
            individual_document_prompt (bool, optional): If True, applies the
                provided AI prompt to each document individually. If False,
                 all documents are used for context to the answer.
                 Defaults to True.

        Returns:
            List[Document]: A list of Document objects containing the extracted
                data and file metadata.

        """
        # Connect to Box
        box_check_connection(self._box_client)

        docs: List[Document] = []
        box_files: List[File] = []

        # get box files information
        if file_ids is not None:
            box_files.extend(
                get_box_files_details(box_client=self._box_client, file_ids=file_ids)
            )
        elif folder_id is not None:
            box_files.extend(
                get_box_folder_files_details(
                    box_client=self._box_client,
                    folder_id=folder_id,
                    is_recursive=is_recursive,
                )
            )

        box_files = get_ai_response_from_box_files(
            box_client=self._box_client,
            box_files=box_files,
            ai_prompt=ai_prompt,
            individual_document_prompt=individual_document_prompt,
        )

        for file in box_files:
            doc = box_file_to_llama_document(file)
            doc.text = file.ai_response if file.ai_response else ""
            doc.metadata["ai_prompt"] = file.ai_prompt
            doc.metadata["ai_response"] = file.ai_response if file.ai_response else ""
            docs.append(doc)
        return docs

        Extracts data from Box files using a custom AI prompt and creates Document objects.

        This method utilizes a user-provided AI prompt to potentially extract
        more specific data from the Box files compared to pre-configured AI
        services like Box AI Extract. It then creates Document objects containing
        the extracted data along with file metadata.

        Args:
            ai_prompt (str): The custom AI prompt that specifies what data to
                extract from the files.
            file_ids (Optional[List[str]], optional): A list of Box file IDs
                to extract data from. If provided, folder_id is ignored.
                Defaults to None.
            folder_id (Optional[str], optional): The ID of the Box folder to
                extract data from. If provided, along with is_recursive set to
                True, retrieves data from sub-folders as well. Defaults to None.
            is_recursive (bool, optional): If True and folder_id is provided,
                extracts data from sub-folders within the specified folder.
                Defaults to False.
            individual_document_prompt (bool, optional): If True, applies the
                provided AI prompt to each document individually. If False,
                 all documents are used for context to the answer.
                 Defaults to True.

        Returns:
            List[Document]: A list of Document objects containing the extracted
                data and file metadata.

        
llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxReaderAIPrompt/base.py