o
    i\                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dl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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 ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z' e(e)Z*e!  ej+Z,dej-de.dej/ej-gej-f ddfddZ0d)ddZ1de.de.dej-fddZ2de.dej-fddZ3dd Z4d ej5e. dej5e. fd!d"Z6G d#d$ d$eeZ7G d%d& d&eeZ8dej5e. fd'd(Z9dS )*    N)ThreadPoolExecutor)	Tokenizer)DetokenizeResponse)TokenizeResponse   )EmbedResponseEmbedInputTypeEmbeddingTypeEmbedRequestTruncate)
BaseCohereAsyncBaseCohereOMITembed_batch_size)RequestOptions)ClientEnvironment)
CacheMixin)
tokenizers)run_overrides)wait
async_waitmerge_embed_responsesSyncSdkUtilsAsyncSdkUtilsobjmethod_namecheck_fnreturnc                    s   t | |dtjdtjdtjf fdd}dtjdtjdtjf fdd}|}tr0|}j|_j|_t| || d S )Nargskwargsr   c                     s    | i | | i |S N r   r   r   methodr!   S/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/cohere/client.py_wrapped!   s   zvalidate_args.<locals>._wrappedc                     s$    | i | | i |I d H S r    r!   r"   r#   r!   r%   _async_wrapped%   s   z%validate_args.<locals>._async_wrapped)getattrtypingAnyasyncioiscoroutinefunction__name____doc__setattr)r   r   r   r&   r'   wrappedr!   r#   r%   validate_args   s   
""
r1   c                  O   s   | ddu rtdd S )NstreamTzcSince python sdk cohere==5.0.0, you must now use chat_stream(...) instead of chat(stream=True, ...))get
ValueErrorr"   r!   r!   r%   throw_if_stream_is_true3   s
   r5   fn_namenew_fn_namec                    s    fdd}|S )z4
    This method is moved. Please update usage.
    c                     s   t d  d d)N-Since python sdk cohere==5.0.0, the function z(...) has been moved to zi(...). Please update your code. Issues may be filed in https://github.com/cohere-ai/cohere-python/issues.r4   r"   r6   r7   r!   r%   fn?   s   zmoved_function.<locals>.fnr!   )r6   r7   r;   r!   r:   r%   moved_function:   s   r<   c                    s    fdd}|S )z9
    This method is deprecated. Please update usage.
    c                     s   t d  d)Nr8   z}(...) has been deprecated. Please update your code. Issues may be filed in https://github.com/cohere-ai/cohere-python/issues.r9   r"   r6   r!   r%   r;   M   s   
zdeprecated_function.<locals>.fnr!   )r6   r;   r!   r=   r%   deprecated_functionH   s   r>   c                    sl   dt dtjt tjf dtf fdd  fdd} fdd	}|}tr,|}j|_j|_|S )
Ndeprecated_kwargr   r   c                    s6   d| v r|  dd\}}||v r ||| S | |v S )N.r   )split)r?   r   keyrest)check_kwargr!   r%   rD   Z   s
   z1experimental_kwarg_decorator.<locals>.check_kwargc                     s*    |rt d d | i |S NzThe `z` parameter is an experimental feature and may change in future releases.
To suppress this warning, set `log_warning_experimental_features=False` when initializing the client.loggerwarningr"   rD   r?   funcr!   r%   r&   a   s
   

z.experimental_kwarg_decorator.<locals>._wrappedc                     s2    |rt d d | i |I d H S rE   rF   r"   rI   r!   r%   r'   i   s   

z4experimental_kwarg_decorator.<locals>._async_wrapped)	strr)   Dictr*   boolr+   r,   r-   r.   )rJ   r?   r&   r'   wrapr!   rI   r%   experimental_kwarg_decoratorX   s   &
rO   base_urlc                 C   s,   | d urd| v sd| v r|  ddS | S d S )Nz
cohere.comz	cohere.aiz/v1 )replace)rP   r!   r!   r%   fix_base_url{   s
   rS   c                       sZ  e Zd ZU eed< 	dcedejdddedddde	j
e	jee	jg ef f  de	j
e d	ed
e	j
e de	j
e de	j
ej dedefddZe Zdd Zdd ZeZeeeeeedddde	j
e	je  de	j
e	je  de	j
e de	j
e de	j
e	je  de	j
e de	j
e de	j
e defdd Z	 e d!Z!e"ed!< e d"Z#e"ed"< e d#Z$e"ed#< e d$Z%e"ed$< e d%Z&e"ed%< e d&Z'e"ed&< e d'Z(e"ed'< e d(Z)e"ed(< e d)Z*e"ed)< e+d*d+Z,e"ed*< e+d,d-Z-e"ed,< e+d.d/Z.e"ed.< e+d0d1Z/e"ed0< e+d2d3Z0e"ed2< e+d4d5Z1e"ed4< e d6Z2e"ed6< e d7Z3e"ed7< e d8Z4e"ed8< e d9Z5e"ed9< e d:Z6e"ed:< e d;Z7e"ed;< e+d<d=Z8e"ed<< e+d>d?Z9e"ed>< e+d@dAZ:e"ed@< e+dBdCZ;e"edB< e+dDd5Z<e"edD< e dEZ=e"edE< e dFZ>e"edF< e dGZ?e"edG< e dHZ@e"edH< e dIZAe"edI< e dJZBe"edJ< e dKZCe"edK< e dLZDe"edL< e+dMdNZEe"edM< e+dOdPZFe"edO< e+dQdRZGe"edQ< e+dSdTZHe"edS< e+dUdVZIe"edU< e+dWdXZJe"edW< dddYdZedede	j
e d[edeKf
 fd\d]ZLdddYd^e	jeM dede	j
e d[e	j
e deNf
 fd_d`ZOdedePfdadbZQ  ZRS )dClient	_executorN
CO_API_URL@   TrP   environmentclient_nametimeouthttpx_clientthread_pool_executor!log_warning_experimental_featuresapi_keyrP   rY   rZ   r[   r\   r]   r^   c          	   	   C   h   |d u rt  }t|}|| _tj| ||||||d t| dt |r2t| jd| _t| j	d| _	d S d S N)rP   rY   rZ   tokenr[   r\   chatzresponse_format.schema)
_get_api_key_from_environmentrS   rU   r   __init__r1   r5   rO   rc   chat_stream	selfr_   rP   rY   rZ   r[   r\   r]   r^   r!   r!   r%   re      $   
zClient.__init__c                 C   s   | S r    r!   rh   r!   r!   r%   	__enter__   s   zClient.__enter__c                 C   s   | j jj  d S r    )_client_wrapperr\   closerh   exc_type	exc_value	tracebackr!   r!   r%   __exit__   s   zClient.__exit__textsimagesmodel
input_typeembedding_typestruncaterequest_optionsbatchingrt   ru   rv   rw   rx   ry   rz   r{   r   c             
      s   |du s|t urtj|| dS |t ur|d ur|ng fddtdttD }	dd j fdd|	D }
t|
S )	NFrt   ru   rv   rw   rx   ry   rz   c                       g | ]
} ||t   qS r!   r   .0itextsarrr!   r%   
<listcomp>       z Client.embed.<locals>.<listcomp>r   c                 S   s   g | ]}|qS r!   r!   )r   responser!   r!   r%   r      s    c              	      s   t j|  dS )Nrt   rv   rw   rx   ry   rz   )r   embed)
text_batchrx   rw   rv   rz   rh   ry   r!   r%   <lambda>   s    zClient.embed.<locals>.<lambda>)	r   r   r   rangelenr   rU   mapr   rh   rt   ru   rv   rw   rx   ry   rz   r{   texts_batches	responsesr!   rx   rw   rv   rz   rh   r   ry   r%   r      s(   	zClient.embedcheck_api_keyloglikelihoodbatch_generatecodebookbatch_tokenizebatch_detokenizedetect_languagegenerate_feedbackgenerate_preference_feedbackcreate_dataset.datasets.createget_dataset.datasets.getlist_datasets.datasets.listdelete_dataset.datasets.deleteget_dataset_usage.datasets.get_usagewait_for_dataset.wait_check_response_requestcreate_cluster_jobget_cluster_joblist_cluster_jobswait_for_cluster_jobcreate_embed_job.embed_jobs.createlist_embed_jobs.embed_jobs.listget_embed_job.embed_jobs.getcancel_embed_job.embed_jobs.cancelwait_for_embed_jobcreate_custom_modelwait_for_custom_model_upload_dataset_create_signed_urlget_custom_modelget_custom_model_by_nameget_custom_model_metricslist_custom_modelscreate_connector.connectors.createupdate_connector.connectors.updateget_connector.connectors.getlist_connectors.connectors.listdelete_connector.connectors.deleteoauth_authorize_connector.connectors.o_auth_authorizerz   offlinetextr   c                   sl   |pi }|r-zt j| ||d}t|g dW S  ty,   |di |d< d|d d< Y nw t j|||dS )N)r   rv   tokenstoken_stringsadditional_headersoffline_tokenizer_failedsdk-api-warning-messager   rv   rz   )local_tokenizerslocal_tokenizer   	Exceptionr3   supertokenizerh   r   rv   rz   r   optsr   	__class__r!   r%   r     s   
zClient.tokenizer   c                   sj   |pi }|r,zt j| ||d}t|dW S  ty+   |di |d< d|d d< Y nw t j|||dS N)rv   r   )r   r   r   r   )r   rv   rz   )r   local_detokenizer   r   r3   r   
detokenizerh   r   rv   rz   r   r   r   r   r!   r%   r   %  s   
zClient.detokenizec                C   s   t | |S )K
        Returns a Hugging Face tokenizer from a given model name.
        )r   get_hf_tokenizerrh   rv   r!   r!   r%   fetch_tokenizer<  s   zClient.fetch_tokenizerr    )Sr-   
__module____qualname__r   __annotations__osgetenvr   
PRODUCTIONr)   OptionalUnionrK   CallablefloathttpxrT   rM   re   r   utilsrk   rr   r   r   Sequencer   r	   r
   r   r   r   r>   r   Neverr   r   r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   intr   r   r   r   __classcell__r!   r!   r   r%   rT      s   
 
	

"	

.rT   c                       s`  e Zd ZU eed< 	dcedejdddedddde	j
e	jee	jg ef f  de	j
e d	ed
e	j
e de	j
e de	j
ej dedefddZe Zdd Zdd ZeZeeeeeedddde	j
e	je  de	j
e	je  de	j
e de	j
e de	j
e	je  de	j
e de	j
e de	j
e defdd Z 	 e!d!Z"e#ed!< e!d"Z$e#ed"< e!d#Z%e#ed#< e!d$Z&e#ed$< e!d%Z'e#ed%< e!d&Z(e#ed&< e!d'Z)e#ed'< e!d(Z*e#ed(< e!d)Z+e#ed)< e,d*d+Z-e#ed*< e,d,d-Z.e#ed,< e,d.d/Z/e#ed.< e,d0d1Z0e#ed0< e,d2d3Z1e#ed2< e,d4d5Z2e#ed4< e!d6Z3e#ed6< e!d7Z4e#ed7< e!d8Z5e#ed8< e!d9Z6e#ed9< e!d:Z7e#ed:< e!d;Z8e#ed;< e,d<d=Z9e#ed<< e,d>d?Z:e#ed>< e,d@dAZ;e#ed@< e,dBdCZ<e#edB< e,dDd5Z=e#edD< e!dEZ>e#edE< e!dFZ?e#edF< e!dGZ@e#edG< e!dHZAe#edH< e!dIZBe#edI< e!dJZCe#edJ< e!dKZDe#edK< e!dLZEe#edL< e,dMdNZFe#edM< e,dOdPZGe#edO< e,dQdRZHe#edQ< e,dSdTZIe#edS< e,dUdVZJe#edU< e,dWdXZKe#edW< dddYdZedede	j
e d[e	j
e deLf
 fd\d]ZMdddYd^e	jeN dede	j
e d[e	j
e deOf
 fd_d`ZPdedeQfdadbZR  ZSS )dAsyncClientrU   NrV   rW   TrX   r_   rP   rY   rZ   r[   r\   r]   r^   c          	   	   C   r`   ra   )
rd   rS   rU   r   re   r1   r5   rO   rc   rf   rg   r!   r!   r%   re   F  ri   zAsyncClient.__init__c                    s   | S r    r!   rj   r!   r!   r%   
__aenter__l  s   zAsyncClient.__aenter__c                    s   | j jj I d H  d S r    )rl   r\   aclosern   r!   r!   r%   	__aexit__o  s   zAsyncClient.__aexit__rs   rt   ru   rv   rw   rx   ry   rz   r{   r   c             
      s   |du s	|t urtj|| dI d H S |t ur#|d ur#|ng fddtdttD }	ttjt	 t
j fdd|	D  I d H }
t|
S )NFr|   c                    r}   r!   r   r~   r   r!   r%   r     r   z%AsyncClient.embed.<locals>.<listcomp>r   c                    s$   g | ]}t j| d qS )r   )r   r   )r   r   r   r!   r%   r     s    
)r   r   r   r   r   r   r)   castListr   r+   gatherr   r   r!   r   r%   r   t  s.   
zAsyncClient.embedr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                   sz   |pi }|r1zt j| ||dI d H }t|g dW S  ty0   |di |d< d|d d< Y nw t j|||dI d H S )N)rv   r   r   r   r   r   r   )r   async_local_tokenizer   r   r3   r   r   r   r   r!   r%   r     s   
zAsyncClient.tokenizer   c                   sx   |pi }|r0zt j| ||dI d H }t|dW S  ty/   |di |d< d|d d< Y nw t j|||dI d H S r   )r   async_local_detokenizer   r   r3   r   r   r   r   r!   r%   r     s   
zAsyncClient.detokenizec                   s   t | |I dH S )r   N)r   async_get_hf_tokenizerr   r!   r!   r%   r     s   zAsyncClient.fetch_tokenizerr    )Tr-   r   r   r   r   r   r   r   r   r)   r   r   rK   r   r   r   r   rM   re   r   r   r   r   r   r   r   r   r   r	   r
   r   r   r   r>   r   r   r   r   r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r   r%   r   C  s   
 
	

"	

0r   c                   C   s   t dt dS )z
    Retrieves the Cohere API key from specific environment variables.
    CO_API_KEY is preferred (and documented) COHERE_API_KEY is accepted (but not documented).
    
CO_API_KEYCOHERE_API_KEY)r   r   r!   r!   r!   r%   rd     s   rd   )r   N):r+   r   r)   concurrent.futuresr   r   r   loggingr    cohere.types.detokenize_responser   cohere.types.tokenize_responser   rQ   r   r   r	   r
   base_clientr   r   r   configr   corer   rY   r   manually_maintained.cacher   manually_maintainedr   	overridesr   r   r   r   r   r   r   	getLoggerr-   rG   NoReturnr   r*   rK   r   r1   r5   r<   r>   rO   r   rS   rT   r   rd   r!   r!   r!   r%   <module>   s@    
,
# A @