class_docstr: Blueprint for per turn evaluation method.
  
  This blueprint subclasses ModelChatBlueprint to provide logic for keeping track of
  how many more conversations are needed per model; this logic is not shared with
  other blueprints.
class_docstr_tok: ["Blueprint","for","per","turn","evaluation","method",".","This","blueprint","subclasses","ModelChatBlueprint","to","provide","logic","for","keeping","track","of","how","many","more","conversations","are","needed","per","model",";","this","logic","is","not","shared","with","other","blueprints","."]
code: def __init__(
      self,
      task_run: "TaskRun",
      args: "DictConfig",
      shared_state: "SharedTaskState",
  ):
      conversations_needed = self._process_conversations_needed(args)
      self.conversations_needed = conversations_needed
      shared_state.conversations_needed = conversations_needed
      args.blueprint.num_conversations = sum(
          conversations_needed.values()
      )
  
      shared_state.world_opt.update(
          {"task_question": args.blueprint.task_question}
      )
  
      super().__init__(
          task_run=task_run, args=args, shared_state=shared_state
      )
  
file_path: ParlAI/parlai/crowdsourcing/tasks/pairwise_per_turn_eval/per_turn_eval_blueprint.py
imports: import os
  import yaml
  from dataclasses import dataclass, field
  from typing import Dict, TYPE_CHECKING
  from mephisto.abstractions.blueprint import SharedTaskState
  from mephisto.operations.registry import register_mephisto_abstraction
  from omegaconf import DictConfig
  from parlai.crowdsourcing.tasks.model_chat.model_chat_blueprint import ModelChatBlueprint, ModelChatBlueprintArgs, BaseModelChatBlueprint
  from parlai.crowdsourcing.tasks.pairwise_per_turn_eval.bot_agent import PerTurnEvalTurkLikeAgent
label_desc: Use image node_id 2 to create a new PerTurnEvalBlueprint object from inherited base classes: ModelChatBlueprint with example: obj = PerTurnEvalBlueprint(task_run, args, shared_state)