U
    ”Ê¹jo  ã                   @   s®   d dl 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mZ d dlmZmZmZmZ dZdZG d	d
„ d
eeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    N)ÚABC)ÚAnyÚDictÚOptionalÚUnion)ÚInferenceProviderMapping)ÚRequestParametersÚ_as_dict)ÚBaseConversationalTaskÚBaseTextGenerationTaskÚTaskProviderHelperÚfilter_noneZtogetherzhttps://api.together.xyzc                       s8   e Zd ZdZedœ‡ fdd„Zeeedœdd„Z‡  ZS )ÚTogetherTaskz"Base class for Together API tasks.)Útaskc                    s   t ƒ jtt|d� d S )N)ÚproviderÚbase_urlr   ©ÚsuperÚ__init__Ú	_PROVIDERÚ	_BASE_URL)Úselfr   ©Ú	__class__© úl/var/www/html/bwave/python/venv/lib/python3.8/site-packages/huggingface_hub/inference/_providers/together.pyr      s    zTogetherTask.__init__)Úmapped_modelÚapi_keyÚreturnc                 C   s@   | j dkrdS | j dkrdS | j dkr*dS td| j › d�ƒ‚d S )	Nútext-to-imagez/v1/images/generationsZconversationalz/v1/chat/completionsztext-generationz/v1/completionszUnsupported task 'z' for Together API.)r   Ú
ValueError)r   r   r   r   r   r   Ú_prepare_route   s    


zTogetherTask._prepare_route)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r!   Ú__classcell__r   r   r   r   r      s   r   c                       s<   e Zd Z‡ fdd„Zdeeef ee e	dœdd„Z
‡  ZS )ÚTogetherTextGenerationTaskc                    s   t ƒ jttd� d S ©N)r   r   r   ©r   r   r   r   r   $   s    z#TogetherTextGenerationTask.__init__N©ÚresponseÚrequest_paramsr   c                 C   s0   t |ƒd d }|d | d¡| d¡dœdœS )NÚchoicesr   ÚtextÚfinish_reasonÚseed)r0   r1   )Zgenerated_textÚdetails)r	   Úget)r   r,   r-   Úoutputr   r   r   Úget_response'   s    þþz'TogetherTextGenerationTask.get_response)N)r"   r#   r$   r   r   Úbytesr   r   r   r   r5   r'   r   r   r   r   r(   #   s   r(   c                       s8   e Zd Z‡ fdd„Zeeeee dœ‡ fdd„Z‡  Z	S )ÚTogetherConversationalTaskc                    s   t ƒ jttd� d S r)   r   r*   r   r   r   r   3   s    z#TogetherConversationalTask.__init__©ÚinputsÚ
parametersÚprovider_mapping_infor   c                    sd   t ƒ  |||¡}| d¡}t|tƒr`| d¡dkr`| d¡}t|tƒr`d|kr`d|d dœ|d< |S )NÚresponse_formatÚtypeZjson_schemaÚschemaZjson_object)r=   r>   )r   Ú_prepare_payload_as_dictr3   Ú
isinstanceÚdict)r   r9   r:   r;   Úpayloadr<   Zjson_schema_detailsr   r   r   r?   6   s    

þ
z3TogetherConversationalTask._prepare_payload_as_dict)
r"   r#   r$   r   r   r   r   r   r?   r'   r   r   r   r   r7   2   s     þr7   c                       sT   e Zd Z‡ fdd„Zeeeee dœdd„Zd
e	e
ef ee edœdd	„Z‡  ZS )ÚTogetherTextToImageTaskc                    s   t ƒ  d¡ d S )Nr   )r   r   r*   r   r   r   r   G   s    z TogetherTextToImageTask.__init__r8   c                 C   sN   |j }t|ƒ}d|kr$| d¡|d< d|kr:| d¡|d< |ddœ|d|i–S )NZnum_inference_stepsZstepsZguidance_scaleZguidanceÚbase64)Úpromptr<   Úmodel)Zprovider_idr   Úpop)r   r9   r:   r;   r   r   r   r   r?   J   s    z0TogetherTextToImageTask._prepare_payload_as_dictNr+   c                 C   s   t |ƒ}t |d d d ¡S )NÚdatar   Zb64_json)r	   rD   Ú	b64decode)r   r,   r-   Zresponse_dictr   r   r   r5   V   s    z$TogetherTextToImageTask.get_response)N)r"   r#   r$   r   r   r   r   r   r?   r   r6   r   r5   r'   r   r   r   r   rC   F   s     þrC   )rD   Úabcr   Útypingr   r   r   r   Zhuggingface_hub.hf_apir   Z!huggingface_hub.inference._commonr   r	   Z,huggingface_hub.inference._providers._commonr
   r   r   r   r   r   r   r(   r7   rC   r   r   r   r   Ú<module>   s   