docstr: Attach problem data to the bot's prior utterance, given by turn_idx.
  
  This is copied exactly from the main model_chat world.
docstr_tok: ["Attach","problem","data","to","the","bot","'s","prior","utterance",",","given","by","turn_idx",".","This","is","copied","exactly","from","the","main","model_chat","world","."]
code: def __add_problem_data_to_utterance(self, p, turn_idx: int):
      """
      Attach problem data to the bot's prior utterance, given by turn_idx.
  
      This is copied exactly from the main model_chat world.
      """
      logging.verbose(f"Problem matrix:\n{p}")
      assert (
          self.dialog[turn_idx]["agent_idx"] == 1
      ), "Problem data must be attached to a bot utterance."
      assert (
          "problem_data" not in self.dialog[turn_idx]
      ), "Don't overwrite existing problem data!"
      self.dialog[turn_idx]["problem_data"] = p
  
imports: import json
  import os
  import numpy
  import random
  import time
  from parlai.core.message import Message
  from parlai.core.worlds import validate
  import parlai.utils.logging
  from parlai.crowdsourcing.tasks.model_chat.utils import Compatibility
  from parlai.crowdsourcing.tasks.model_chat.worlds import get_bot_worker, ModelChatWorld, ModelChatOnboardWorld
label_desc: Use image node_id 5 for calling the MultipartyChatWorld obj's underlying member method code with example usage: obj.__add_problem_data_to_utterance(p, turn_idx) without return types