





# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from ..models.auto import AutoModelForSeqaSeqLM, AutoTokenizer
from .base import PipelineTool


a__			:    Dict			      =		'Here is a text containing a lot of information: \'\'\'{text}\'\'\'.\n\nCan you answer this question about the text: \'{question}\''





class UpperCAmelCase_							(   _SCREAMING_SNAKE_CASE   ):
  __lowerCAmelCase      :	str  	=      """google/flan-t5-base"""
  __lowerCAmelCase      :	List[Any]  	=      (
      """This is a tool that answers questions related to a text. It takes two arguments named `text`, which is the """
      """text where to find the answer, and `question`, which is the question, and returns the answer to the question."""
  )
  __lowerCAmelCase      :	Tuple  	=      """text_qa"""
  __lowerCAmelCase      :	int  	=      AutoTokenizer
  __lowerCAmelCase      :	Optional[int]  	=      AutoModelForSeqaSeqLM

  __lowerCAmelCase      :	Union[str, Any]  	=      ["""text""", """text"""]
  __lowerCAmelCase      :	Tuple  	=      ["""text"""]


  def 	__UpperCAmelCase    (       self   ,__snake_case   ,__snake_case   ):



       """simple docstring"""





       A_					      =					QA_PROMPT.format(text=__snake_case   ,question=__snake_case   )
       return self.pre_processor(__snake_case   ,return_tensors='''pt'''   )


  def 	__UpperCAmelCase    (       self   ,__snake_case   ):



       """simple docstring"""





       A_					      =					self.model.generate(**__snake_case   )

       A_      ,						A_					      =					inputs['''input_ids'''].shape
       A_					      =					output_ids.shape[0]

       return output_ids.reshape(__snake_case   ,out_b // in_b   ,*output_ids.shape[1:]   )[0][0]




  def 	__UpperCAmelCase    (       self   ,__snake_case   ):



       """simple docstring"""





       return self.pre_processor.decode(__snake_case   ,skip_special_tokens=__snake_case   ,clean_up_tokenization_spaces=__snake_case   )






from __future__ import annotations

def     UpperCAmelCase_						(						_UpperCAmelCase       :list[int | float]							)  ->							int | float:
     '''simple docstring'''


     if len(_UpperCAmelCase							) == 0:
          raise ValueError('''find_max() arg is an empty sequence'''							)
     A_					      =					nums[0]
     for x in nums:
          if x > max_num:
               A_					      =					x
     return max_num


if __name__ == "__main__":
      import doctest

      doctest.testmod(verbose=True)



