code: def forward(self, text_df):
      try_to_import_openai()
      from openai import OpenAI
  
      api_key = self.openai_api_key
      if len(self.openai_api_key) == 0:
          api_key = os.environ.get("OPENAI_API_KEY", "")
      assert (
          len(api_key) != 0
      ), "Please set your OpenAI API key using SET OPENAI_API_KEY = 'sk-' or environment variable (OPENAI_API_KEY)"
  
      client = OpenAI(api_key=api_key)
  
      def generate_image(text_df: PandasDataframe):
          results = []
          queries = text_df[text_df.columns[0]]
          for query in queries:
              response = client.images.generate(
                  prompt=query, n=1, size="1024x1024"
              )
  
              # Download the image from the link
              image_response = requests.get(response.data[0].url)
              image = Image.open(BytesIO(image_response.content))
  
              # Convert the image to an array format suitable for the DataFrame
              frame = np.array(image)
              results.append(frame)
  
          return results
  
      df = pd.DataFrame({"response": generate_image(text_df=text_df)})
      return df
  
file_path: evadb/evadb/functions/dalle.py
imports: import os
  from io import BytesIO
  import numpy
  import pandas
  import requests
  from PIL import Image
  from evadb.catalog.catalog_type import NdArrayType
  from evadb.functions.abstract.abstract_function import AbstractFunction
  from evadb.functions.decorators.decorators import forward
  from evadb.functions.decorators.io_descriptors.data_types import PandasDataframe
  from evadb.utils.generic_utils import try_to_import_openai
label_desc: Use image node_id 3 for calling the DallEFunction obj's underlying member method code with example usage: obj.forward(text_df) and returns: df, results