class_docstr: Version of BaseModelChatWorld for chatting without images.
  
  Has support for features that are currently not supported by the image-chat version
  of this task, like personas and BST-style seed utterances.
class_docstr_tok: ["Version","of","BaseModelChatWorld","for","chatting","without","images",".","Has","support","for","features","that","are","currently","not","supported","by","the","image-chat","version","of","this","task",",","like","personas","and","BST-style","seed","utterances","."]
code: def _get_persona_utterance(
      self,
      persona_strings: Optional[List[str]] = None,
      context_dataset: Optional[str] = None,
      additional_context: Optional[str] = None,
      is_bot: bool = False,
  ):
      if is_bot:
          # Pass back the original context
          persona_pieces = [
              f"your persona: {str_}" for str_ in persona_strings
          ]
          if context_dataset == "wizard_of_wikipedia":
              additional_context_pieces = [additional_context]
          else:
              additional_context_pieces = []
          full_context = "\n".join(
              persona_pieces + additional_context_pieces
          )
          print(f"FULL CONTEXT: {full_context}")
          return full_context
      else:
          if context_dataset == "convai2":
              last_sentence = (
                  "Pretend that the conversation has already begun."
              )
          elif context_dataset == "empathetic_dialogues":
              last_sentence = (
                  f"Pretend that the conversation has already begun, and that you "
                  f"had been talking about the following situation: "
                  f'<b>"{additional_context}"</b>'
              )
          elif context_dataset == "wizard_of_wikipedia":
              last_sentence = (
                  f"Pretend that the conversation has already begun, and that you "
                  f"had been talking about <b>{additional_context}</b>."
              )
          else:
              raise ValueError("Context dataset unrecognized!")
          joined_personas = "\n".join(persona_strings)
          return (
              f"\nSuccessfully matched with another user! Now let's get to know "
              f"each other through the chat. You need to finish at least "
              f"<b>{self.num_turns} chat turns</b>, and after that you can click the "
              f'"Done" button to end the chat.\n\n'
              f'<b>Your character description is:\n<span style="color:blue">{joined_personas}</span></b> '
              "\n\n<b>Remember that you can get to know each "
              "other as your characters, talk about any topic, or talk about a "
              "situation that might have happened to your character.</b>"
              "\n<b>Do not trivially copy the "
              "character descriptions into the message.</b><br><br>"
              f"{last_sentence}"
          )
  
imports: import time
  import os
  import json
  from abc import ABC, abstractmethod
  from typing import Any, Dict, List, Optional, Tuple
  import numpy
  from parlai.core.agents import create_agent_from_shared
  from parlai.core.message import Message
  from parlai.core.worlds import validate
  from parlai.crowdsourcing.utils.acceptability import AcceptabilityChecker
  from parlai.crowdsourcing.utils.worlds import CrowdOnboardWorld, CrowdTaskWorld
  from parlai.crowdsourcing.tasks.model_chat.bot_agent import TurkLikeAgent
  from parlai.crowdsourcing.tasks.model_chat.constants import ONBOARD_FAIL, ONBOARD_SUCCESS
  from parlai.crowdsourcing.tasks.model_chat.utils import Compatibility
  from parlai.crowdsourcing.utils.mturk import get_mturk_id_from_mephisto_wrapper
  from typing import TYPE_CHECKING
label_desc: Use image node_id 3 for calling the ModelChatWorld obj's underlying member method code with example usage: obj._get_persona_utterance(persona_strings, context_dataset, additional_context, is_bot) and returns: full_context, str, self, str, joined_personas, str, last_sentence