
    qii                         d dl Z d dlmZ d dl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
ee      Z G d de      Z G d de      Z G d de      Zy)    N)ABC)AnyOptionalUnion)InferenceProviderMapping)RequestParameters_as_dict)BaseConversationalTaskBaseTextGenerationTaskTaskProviderHelperfilter_nonetogetherzhttps://api.together.xyzc                   <     e Zd ZdZdef fdZdededefdZ xZS )TogetherTaskz"Base class for Together API tasks.taskc                 :    t         |   t        t        |       y )N)providerbase_urlr   super__init__	_PROVIDER	_BASE_URL)selfr   	__class__s     _/opt/pipecat/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/together.pyr   zTogetherTask.__init__   s    )idK    mapped_modelapi_keyreturnc                     | j                   dk(  ry| j                   dk(  ry| j                   dk(  ryt        d| j                    d      )	Ntext-to-imagez/v1/images/generationsconversationalz/v1/chat/completionsztext-generationz/v1/completionszUnsupported task 'z' for Together API.)r   
ValueError)r   r   r   s      r   _prepare_routezTogetherTask._prepare_route   sK    99'+YY**)YY++$-dii[8KLMMr   )__name__
__module____qualname____doc__strr   r%   __classcell__r   s   @r   r   r      s2    ,LS LN3 N N Nr   r   c                   D     e Zd Z fdZddeeef   dee   de	fdZ
 xZS )TogetherTextGenerationTaskc                 8    t         |   t        t               y N)r   r   r   r   r   s    r   r   z#TogetherTextGenerationTask.__init__$       )i@r   responserequest_paramsr    c                 v    t        |      d   d   }|d   |j                  d      |j                  d      ddS )Nchoicesr   textfinish_reasonseed)r8   r9   )generated_textdetails)r	   get)r   r3   r4   outputs       r   get_responsez'TogetherTextGenerationTask.get_response'   sD    (#I.q1$Vn!'O!<

6*
 	
r   N)r&   r'   r(   r   r   bytesdictr   r   r   r>   r+   r,   s   @r   r.   r.   #   s3    A
U5$;%7 
RcId 
ps 
r   r.   c            	       @     e Zd Z fdZdedededee   f fdZ xZ	S )TogetherConversationalTaskc                 8    t         |   t        t               y r0   r   r1   s    r   r   z#TogetherConversationalTask.__init__3   r2   r   inputs
parametersprovider_mapping_infor    c                     t         |   |||      }|j                  d      }t        |t              rD|j                  d      dk(  r0|j                  d      }t        |t              rd|v rd|d   d|d<   |S )Nresponse_formattypejson_schemaschemajson_object)rJ   rL   )r   _prepare_payload_as_dictr<   
isinstancerA   )r   rE   rF   rG   payloadrI   json_schema_detailsr   s          r   rN   z3TogetherConversationalTask._prepare_payload_as_dict6   s     '26:G\]$..):;ot,1D1DV1LP]1]"1"5"5m"D-t4EX9X)1(;.)*
 r   )
r&   r'   r(   r   r   rA   r   r   rN   r+   r,   s   @r   rC   rC   2   s7    A'+D\	$ r   rC   c            	       b     e Zd Z fdZdedededee   fdZd
de	e
ef   dee   defd	Z xZS )TogetherTextToImageTaskc                 $    t         |   d       y )Nr"   )r   r   r1   s    r   r   z TogetherTextToImageTask.__init__G   s    )r   rE   rF   rG   r    c                     |j                   }t        |      }d|v r|j                  d      |d<   d|v r|j                  d      |d<   |dd|d|iS )Nnum_inference_stepsstepsguidance_scaleguidancebase64)promptrI   model)provider_idr   pop)r   rE   rF   rG   r   s        r   rN   z0TogetherTextToImageTask._prepare_payload_as_dictJ   si     -88 ,
 J.",..1F"GJwz)%/^^4D%EJz" XccWVbccr   r3   r4   c                 T    t        |      }t        j                  |d   d   d         S )Ndatar   b64_json)r	   rZ   	b64decode)r   r3   r4   response_dicts       r   r>   z$TogetherTextToImageTask.get_responseV   s,     *f 5a 8 DEEr   r?   )r&   r'   r(   r   r   rA   r   r   rN   r   r@   r   r>   r+   r,   s   @r   rS   rS   F   sd    *
d
d'+
dD\
d	$
dFU5$;%7 FRcId Fps Fr   rS   )rZ   abcr   typingr   r   r   huggingface_hub.hf_apir   !huggingface_hub.inference._commonr   r	   ,huggingface_hub.inference._providers._commonr
   r   r   r   r   r   r   r.   rC   rS    r   r   <module>rj      sf      ' ' ; I  	&	N%s N 
!7 
!7 (Fl Fr   