code: def __call__(
      self, number_strings: list[str]
  ) -> list[Optional[float]]:
      filled_templates = [
          template.format(number_string=ns.strip())
          for ns in number_strings
      ]
      response = call_api(
          filled_templates, self.model_name, parser_api_params
      )
      texts = [
          choice["text"].strip().replace(",", "")
          for choice in response.json()["choices"]
      ]
      print(f"strings returned from parser: {texts}")
      # check the response is non-empty and the model reports it found a
      # valid number
      floats = [
          float(text) if text and text != "N/A" else None
          for text in texts
      ]
      return floats
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from dataclasses import asdict, dataclass
  import logging
  import os
  from typing_extensions import Literal
  import requests
  from datetime import timedelta
  from typing import Optional, Union
  from ratelimit import sleep_and_retry, limits
label_desc: Use image node_id 2 for calling the GPT3Parser obj's underlying member method code with example usage: obj.__call__(number_strings) and returns: floats