o
    “9jP  ã                   @   s”   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZe d¡Zde	de	fdd„Z
dZdZd	d
„ Zddd„Zdd„ Zddd„Zdd„ Zdd„ ZdS )é    Nz^[a-zA-Z0-9_\-]{1,128}$ÚmodelÚreturnc                 C   sd   |   ¡  ¡ } t d| ¡rdS t d| ¡}|r0zt| d¡ƒdkr#W dS W dS  ty/   Y dS w dS )Nz^o\dÚ	developerz	gpt-(\d+)é   é   Úsystem)ÚlowerÚstripÚreÚmatchÚintÚgroupÚ
ValueError)r   r   © r   úT/home/develop/edictos_py/central_edictos/procesamiento/batch_openai/openai_client.pyÚsystem_role   s   ÿýýr   é   éx   c                 C   s$   t  t| ƒ¡st|› d| ›�ƒ‚d S )Nz$ contiene caracteres no permitidos: )Ú_ID_PATTERNr   Ústrr   )ÚvalorÚnombrer   r   r   Ú_validar_id"   s   ÿr   éè  c           
   	   C   sp   |› d| › d|› d�}t t ¡ d ƒ› t dd¡d›�}	||	 dd|t|ƒ|dœd	|dœd	|dœgd|d
œdœS )NÚ_g    €„.Ar   i'  Ú04dÚPOSTú/v1/chat/completions)ÚroleÚcontentÚuser)r   ÚmessagesÚtemperatureÚmax_completion_tokens)Ú	custom_idÚmethodÚurlÚbody)r   ÚtimeÚrandomÚrandintr   )
Úfecha_edictoÚid_fideÚfuenter   Úsystem_promptÚuser_promptÚ	contenidoÚtokensÚbaseÚextrar   r   r   Úformatear_linea_batch'   s(   "þþþ÷ïür4   c                 C   st   d}dd|› �i}t | dƒ�}tj||dtj | ¡|fidditd�}W d   ƒ n1 s-w   Y  | ¡  | ¡ S )	Nzhttps://api.openai.com/v1/filesÚAuthorizationúBearer ÚrbÚfileÚpurposeÚbatch)ÚheadersÚfilesÚdataÚtimeout)	ÚopenÚrequestsÚpostÚosÚpathÚbasenameÚ_TIMEOUT_LARGOÚraise_for_statusÚjson)Ú	file_pathÚapi_keyr&   r;   ÚfÚresponser   r   r   Úsubir_archivoD   s   üÿrL   c                 C   sN   d}d|› �ddœ}| dddœ}|r||d< t j|||td	�}| ¡  | ¡ S )
Nz!https://api.openai.com/v1/batchesr6   zapplication/json)r5   zContent-Typer   Ú24h)Úinput_file_idÚendpointÚcompletion_windowÚmetadata)r;   rG   r>   )r@   rA   Ú_TIMEOUT_CORTOrF   rG   )Úfile_idrI   rQ   r&   r;   ÚpayloadrK   r   r   r   Úcrear_batchR   s   ýrU   c                 C   sB   t | dƒ d| › �}dd|› �i}tj||td�}| ¡  | ¡ S )NÚbatch_idz"https://api.openai.com/v1/batches/r5   r6   ©r;   r>   )r   r@   ÚgetrR   rF   rG   )rV   rI   r&   r;   rK   r   r   r   Úconsultar_batcha   s   

rY   c           
      C   sÄ   t | dƒ tj|dd� tj ¡  d¡}t ¡ jd d… }tj	 
|d|› d|› d�¡}d	| › d
�}dd|› �i}tj||td�}| ¡  t|dƒ�}	|	 |j¡ W d   ƒ |S 1 s[w   Y  |S )NrS   T)Úexist_okz%Y%m%dr   Úoutput_r   z.jsonlz https://api.openai.com/v1/files/z/contentr5   r6   rW   Úwb)r   rB   ÚmakedirsÚdatetimeÚnowÚstrftimeÚuuidÚuuid4ÚhexrC   Újoinr@   rX   rE   rF   r?   Úwriter   )
rS   rI   Údirectorio_destinoÚfechaÚ	random_idÚrutar&   r;   rK   rJ   r   r   r   Údescargar_outputj   s   

ÿþrj   )r   )N)r^   rB   r)   r
   r(   ra   r@   Úcompiler   r   r   rR   rE   r   r4   rL   rU   rY   rj   r   r   r   r   Ú<module>   s"    


	