
    3fiM                        d Z ddlmZ ddlmZ ddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ erdd
lmZ  G d dee      Zej0                  dej2                  diZ G d de      Zy)a=  This tool allows agents to generate images using Steamship.

Steamship offers access to different third party image generation APIs
using a single API key.

Today the following models are supported:
- Dall-E
- Stable Diffusion

To use this tool, you must first set as environment variables:
    STEAMSHIP_API_KEY
```
    )annotations)Enum)TYPE_CHECKINGAnyDictOptional)CallbackManagerForToolRun)BaseTool)get_from_dict_or_env)model_validator)make_image_public	Steamshipc                      e Zd ZdZdZdZy)	ModelNamez&Supported Image Models for generation.zdall-ezstable-diffusionN)__name__
__module____qualname____doc__DALL_ESTABLE_DIFFUSION     w/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_community/tools/steamship_image_generation/tool.pyr   r      s    0F)r   r   )256x256512x512	1024x1024)r   768x768c                      e Zd ZU dZded<   dZded<   ded<   d	Zd
ed<   dZded<   dZded<    e	d      e
dd              Z e	d      e
dd              Z	 d	 	 	 	 	 ddZy)SteamshipImageGenerationToolz0Tool used to generate images from a text-prompt.r   
model_namer   zOptional[str]sizer   	steamshipFzOptional[bool]return_urlsgenerate_imagestrnamezUseful for when you need to generate an image.Input: A detailed text-2-image prompt describing an imageOutput: the UUID of a generated imagedescriptionbefore)modec                Z    d|v r&|d   }|d   }|t         |   vrt        d| d|       |S )Nr"   r!   zsize z is not supported by )SUPPORTED_IMAGE_SIZESRuntimeError)clsvaluesr"   r!   s       r   validate_sizez*SteamshipImageGenerationTool.validate_size;   sK     V&>D-J0<<"U4&0Ej\#RSSr   c                    t        |dd      }	 ddlm}  ||      }||d<   d|v r|d= |S # t        $ r t        d      w xY w)z?Validate that api key and python package exists in environment.steamship_api_keySTEAMSHIP_API_KEYr   r   zJsteamship is not installed. Please install it with `pip install steamship`)api_keyr#   )r   r#   r   ImportError)r.   r/   r2   r   r#   s        r   validate_environmentz1SteamshipImageGenerationTool.validate_environmentF   su     1')<
	+ %
	 ({&(*+  	A 	s	   , ANc                   | j                   j                  | j                  j                  d| j                  d      }|j                  |d      }|j                          |j                  j                  }t        |      dkD  r4| j                  rt        | j                   |d         S |d   j                  S t        d| j                   d      )	zUse the tool.   )nr"   )plugin_handleconfigT)textappend_output_to_filer   [z ] Tool unable to generate image!)r#   
use_pluginr!   valuer"   generatewaitoutputblockslenr$   r   idr-   r'   )selfqueryrun_managerimage_generatortaskrD   s         r   _runz!SteamshipImageGenerationTool._run_   s     ..33////a8S 4 
 ''U$'O		##v;?(CCay||#Qtyyk)IJKKr   )r/   r   returnr   )N)rH   r&   rI   z#Optional[CallbackManagerForToolRun]rM   r&   )r   r   r   r   __annotations__r"   r$   r'   r(   r   classmethodr0   r6   rL   r   r   r   r    r    ,   s    :#D-#"'K' D# 	0   (#  $ (#  $4 <@LL 9L 
	Lr   r    N)r   
__future__r   enumr   typingr   r   r   r   langchain_core.callbacksr	   langchain_core.toolsr
   langchain_core.utilsr   pydanticr   :langchain_community.tools.steamship_image_generation.utilsr   r#   r   r&   r   r   r   r,   r    r   r   r   <module>rX      sm    #  5 5 > ) 5 $ X#*T * 9 6 GL8 GLr   