class_docstr: OPT BB3 Agent.
class_docstr_tok: ["OPT","BB3","Agent","."]
docstr: Return indices of messages that have failures.
  
  :param messages:
      candidate list of Messages
  :param module:
      module in which failure may have occurred
  :param batch_reply_final:
      final batch replies
  
  :return indices:
      return indices of messages with failures
docstr_tok: ["Return","indices","of","messages","that","have","failures",".",":","param","messages",":","candidate","list","of","Messages",":","param","module",":","module","in","which","failure","may","have","occurred",":","param","batch_reply_final",":","final","batch","replies",":","return","indices",":","return","indices","of","messages","with","failures"]
code: def detect_and_handle_failures(
      self,
      module: Module,
      messages: List[Message],
      batch_reply_final: List[Message],
  ) -> List[int]:
      """
      Return indices of messages that have failures.
  
      :param messages:
          candidate list of Messages
      :param module:
          module in which failure may have occurred
      :param batch_reply_final:
          final batch replies
  
      :return indices:
          return indices of messages with failures
      """
      failed: List[int] = []
      for i, message in enumerate(messages):
          if APIUtils.is_request_failed_response(message):
              batch_reply_final[i]["failures"].extend(
                  message["failures"]
              )
              batch_reply_final[i][
                  f"{module.message_name()}_failures"
              ] = message["failures"]
              failed.append(i)
      return failed
  
imports: import copy
  import random
  from typing import List, Optional, Dict, Any, Union, Tuple
  from parlai.agents.rag.retrievers import Document
  from parlai.core.agents import Agent, create_agent
  from parlai.core.message import Message
  from parlai.core.params import ParlaiParser
  from parlai.core.opt import Opt
  import parlai.utils.logging
  from projects.bb3.agents.module import Module
  from projects.bb3.agents.r2c2_bb3_agent import BlenderBot3Agent
  from projects.bb3.agents.opt_api_agent import BB3OPTAgent
  from projects.bb3.agents.search_agent import SearchAgent
  from projects.bb3.agents.utils import Decision, APIUtils, is_opener, DisplayUtils, set_failed_reply
  import projects.bb3.prompts
label_desc: Use image node_id 17 for calling the BlenderBot3Agent obj's underlying member method code with example usage: obj.detect_and_handle_failures(module, messages, batch_reply_final) and returns: failed