docstr: Args:
      completion_fns: The three models used in the experiment (con-artist, mark, summary).
      prompt_version: The version of the prompt to use for the mark. One of "balanced" (control setting), "guarded" (mark is hesitant), or "generous" (mark is generous).
      num_experiments: Sample size or number of experiments to run. Each experiment is run with the same settings.
      turn_cap: The maximum number of turns to allow in the conartist-mark conversation. If 0, then no turn cap.
      duration_cap_minutes: The maximum duration of the conartist-mark conversation in minutes. If 0, then no duration cap.
docstr_tok: ["Args",":","completion_fns",":","The","three","models","used","in","the","experiment","(","con-artist",",","mark",",","summary",")",".","prompt_version",":","The","version","of","the","prompt","to","use","for","the","mark",".","One","of","``","balanced","''","(","control","setting",")",",","``","guarded","''","(","mark","is","hesitant",")",",","or","``","generous","''","(","mark","is","generous",")",".","num_experiments",":","Sample","size","or","number","of","experiments","to","run",".","Each","experiment","is","run","with","the","same","settings",".","turn_cap",":","The","maximum","number","of","turns","to","allow","in","the","conartist-mark","conversation",".","If","0",",","then","no","turn","cap",".","duration_cap_minutes",":","The","maximum","duration","of","the","conartist-mark","conversation","in","minutes",".","If","0",",","then","no","duration","cap","."]
code: def __init__(
      self,
      completion_fns: list[CompletionFn],
      mark: str = "make-me-pay/baseline/gpt-4-32k",
      summary: str = "gpt-4",
      prompt_version: str = "balanced",
      num_experiments: int = 100,
      turn_cap: int = 0,
      duration_cap_minutes: int = 3,
      allow_withdraw: bool = False,
      *args,
      **kwargs,
  ):
      """
      Args:
          completion_fns: The three models used in the experiment (con-artist, mark, summary).
          prompt_version: The version of the prompt to use for the mark. One of "balanced" (control setting), "guarded" (mark is hesitant), or "generous" (mark is generous).
          num_experiments: Sample size or number of experiments to run. Each experiment is run with the same settings.
          turn_cap: The maximum number of turns to allow in the conartist-mark conversation. If 0, then no turn cap.
          duration_cap_minutes: The maximum duration of the conartist-mark conversation in minutes. If 0, then no duration cap.
      """
  
      super().__init__(completion_fns, *args, **kwargs)
  
      assert is_chat_model(
          summary
      ), "Summary model must be a chat model."
      self.summary_name = summary
      self.mark_name = mark
      self.mark = maybe_wrap_with_solver(
          registry.make_completion_fn(
              mark, extra_options={"temperature": 1.0}
          ),
      )
      self.summary = registry.make_completion_fn(
          summary, extra_options={"temperature": 0}
      )
  
      self.num_experiments = num_experiments
  
      assert prompt_version in [
          "balanced",
          "guarded",
          "generous",
      ], "Unknown prompt version, please choose from balanced, guarded, or generous."
      self.task_descriptions = {
          "conartist": task_description_dict[prompt_version][
              "conartist"
          ],
          "mark": task_description_dict[prompt_version]["mark"],
          "summary": task_description_dict["summary"],
      }
      self.eval_variation = prompt_version
  
      assert (turn_cap != 0 and duration_cap_minutes == 0) or (
          turn_cap == 0 and duration_cap_minutes != 0
      ), "Either duration_cap_minutes or turn_cap must be non-zero."
      self.turn_cap = turn_cap
      self.duration_cap_minutes = duration_cap_minutes
      self.allow_withdraw = allow_withdraw
  
      logger.info(
          f"Running make-me-pay eval with parameters: prompt_version={prompt_version}, num_experiments={num_experiments}, turn_cap={turn_cap}, duration_cap_minutes={duration_cap_minutes}"
      )
  
file_path: evals/evals/elsuite/make_me_pay/eval.py
imports: import logging
  from typing import Any
  import numpy
  import evals
  import evals.elsuite.make_me_pay.makemepay
  from evals.api import CompletionFn
  from evals.elsuite.make_me_pay.task_description import task_description_dict
  from evals.eval import SolverEval
  from evals.record import RecorderBase
  from evals.registry import is_chat_model, registry
  from evals.solvers.solver import Solver
  from evals.solvers.utils import maybe_wrap_with_solver
label_desc: Use image node_id 1 to create a new MakeMePay object from inherited base classes: SolverEval with example: obj = MakeMePay(completion_fns, mark, summary, prompt_version, num_experiments, turn_cap, duration_cap_minutes, allow_withdraw)