






# 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 typing import TYPE_CHECKING

from ..models.auto import AutoModelForVisionaSeq
from ..utils import requires_backends
from .base import PipelineTool


if TYPE_CHECKING:
	from PIL import Image


class    lowercase__   (	_UpperCAmelCase		):
	a_   			="""Salesforce/blip-image-captioning-base"""
	a_   			=(
	    """This is a tool that generates a description of an image. It takes an input named `image` which should be the """
	    """image to caption, and returns a text that contains the description in English."""
	)
	a_   			="""image_captioner"""
	a_   			=AutoModelForVisionaSeq

	a_   			=["""image"""]
	a_   			=["""text"""]

	def __init__(							self						,			*__UpperCAmelCase						,			**__UpperCAmelCase				)->    List[Any]:







							'''simple docstring'''





							requires_backends(self						,			["vision"]				)
							super().__init__(*__a						,			**__a				)

	def 						UpperCAmelCase     (							self						,			__UpperCAmelCase				)->    List[Any]:







							'''simple docstring'''





							return self.pre_processor(images=__a						,			return_tensors="pt"				)

	def 						UpperCAmelCase     (							self						,			__UpperCAmelCase				)->    Tuple:







							'''simple docstring'''





							return self.model.generate(**__a				)


	def 						UpperCAmelCase     (							self						,			__UpperCAmelCase				)->    int:







							'''simple docstring'''





							return self.pre_processor.batch_decode(__a						,			skip_special_tokens=__a				)[0].strip()











from ...utils import (
    OptionalDependencyNotAvailable,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)


try:
						if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.25.0")):
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						from ...utils.dummy_torch_and_transformers_objects import (
						    VersatileDiffusionDualGuidedPipeline,
						    VersatileDiffusionImageVariationPipeline,
						    VersatileDiffusionPipeline,
						    VersatileDiffusionTextToImagePipeline,
						)
else:
						from .modeling_text_unet import UNetFlatConditionModel
						from .pipeline_versatile_diffusion import VersatileDiffusionPipeline
						from .pipeline_versatile_diffusion_dual_guided import VersatileDiffusionDualGuidedPipeline
						from .pipeline_versatile_diffusion_image_variation import VersatileDiffusionImageVariationPipeline
						from .pipeline_versatile_diffusion_text_to_image import VersatileDiffusionTextToImagePipeline
