o
    ưi5                     @   s   d Z ddlmZmZmZmZ ddlZddlmZ ddl	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ G d	d
 d
e
ZdS )z4
OpenAI Evals API configuration and transformations
    )AnyDictOptionalTupleN)verbose_logger)BaseEvalsAPIConfigLiteLLMLoggingObj)CancelEvalResponseCancelRunResponseCreateEvalRequestCreateRunRequestDeleteEvalResponseEvalListEvalsParamsListEvalsResponseListRunsParamsListRunsResponseRunRunDeleteResponseUpdateEvalRequest)GenericLiteLLMParams)LlmProvidersc                   @   s  e Zd ZdZedefddZdedee	 defddZ
		dAd
ee dedee defddZdede	dedefddZdejdedefddZdede	dedeeef fddZdejdedefddZded
ede	dedeeef f
ddZdejdedefddZdeded
ede	dedeeeef fd d!Zdejdedefd"d#Zded
ede	dedeeef f
d$d%Zdejdede fd&d'Z!ded
ede	dedeeeef f
d(d)Z"dejdede#fd*d+Z$dede%de	dedeeef f
d,d-Z&dejdede'fd.d/Z(dede)de	dedeeef f
d0d1Z*dejdede+fd2d3Z,ded4ed
ede	dedeeef fd5d6Z-dejdede'fd7d8Z.ded4ed
ede	dedeeeef fd9d:Z/dejdede0fd;d<Z1ded4ed
ede	dedeeeef fd=d>Z2dejdede3fd?d@Z4d	S )BOpenAIEvalsConfigz'OpenAI-specific Evals API configurationreturnc                 C   s   t jS N)r   ZOPENAI)self r   _/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/openai/evals/transformation.pycustom_llm_provider$   s   z%OpenAIEvalsConfig.custom_llm_providerheaderslitellm_paramsc                 C   s`   ddl }ddlm} d}|r|j}|p|jp|jp|d}|s#tdd| |d< d|d	< |S )
zAdd OpenAI-specific headersr   N)get_secret_strZOPENAI_API_KEYz(OPENAI_API_KEY is required for Evals APIzBearer Authorizationzapplication/jsonzContent-Type)litellmZlitellm.secret_managers.mainr!   api_keyZ
openai_key
ValueError)r   r   r    r#   r!   r$   r   r   r   validate_environment(   s"   z&OpenAIEvalsConfig.validate_environmentNapi_baseendpointeval_idc                 C   s,   |du rd}|r| d| S | d| S )z%Get complete URL for OpenAI Evals APINhttps://api.openai.com
/v1/evals/z/v1/r   )r   r'   r(   r)   r   r   r   get_complete_urlD   s
   z"OpenAIEvalsConfig.get_complete_urlcreate_requestc                 C   s"   t d| dd | D }|S )z(Transform create eval request for OpenAIz$Transforming create eval request: %sc                 S      i | ]\}}|d ur||qS r   r   .0kvr   r   r   
<dictcomp>\       zCOpenAIEvalsConfig.transform_create_eval_request.<locals>.<dictcomp>)r   debugitems)r   r-   r    r   request_bodyr   r   r   transform_create_eval_requestR   s   z/OpenAIEvalsConfig.transform_create_eval_requestraw_responselogging_objc                 C   "   |  }td| tdi |S )(Transform OpenAI response to Eval objectz%Transforming create eval response: %sNr   jsonr   r5   r   r   r9   r:   Zresponse_jsonr   r   r   transform_create_eval_response`      z0OpenAIEvalsConfig.transform_create_eval_responselist_paramsc                 C   s   d}|r
|j r
|j }| j|dd}i }d|v r!|d r!|d |d< d|v r/|d r/|d |d< d|v r=|d r=|d |d< d|v rK|d rK|d |d< d|v rY|d rY|d |d< td	| ||fS )
z'Transform list evals request for OpenAIr*   evals)r'   r(   limitafterbeforeorderZorder_byz@List evals request made to OpenAI Evals endpoint with params: %s)r'   r,   r   r5   )r   rB   r    r   r'   urlquery_paramsr   r   r   transform_list_evals_requestk   s(   
z.OpenAIEvalsConfig.transform_list_evals_requestc                 C   r;   )z.Transform OpenAI response to ListEvalsResponsez$Transforming list evals response: %sNr   )r>   r   r5   r   r?   r   r   r   transform_list_evals_response   rA   z/OpenAIEvalsConfig.transform_list_evals_responsec                 C   $   | j |d|d}td| ||fS )z%Transform get eval request for OpenAIrC   r'   r(   r)   zGet eval request - URL: %sr,   r   r5   r   r)   r'   r    r   rH   r   r   r   transform_get_eval_request   
   z,OpenAIEvalsConfig.transform_get_eval_requestc                 C   r;   )r<   z"Transforming get eval response: %sNr   r=   r?   r   r   r   transform_get_eval_response   rA   z-OpenAIEvalsConfig.transform_get_eval_responseupdate_requestc                 C   s:   | j |d|d}dd | D }td|| |||fS )z(Transform update eval request for OpenAIrC   rM   c                 S   r.   r   r   r/   r   r   r   r3      r4   zCOpenAIEvalsConfig.transform_update_eval_request.<locals>.<dictcomp>z'Update eval request - URL: %s, body: %s)r,   r6   r   r5   )r   r)   rS   r'   r    r   rH   r7   r   r   r   transform_update_eval_request   s   	
z/OpenAIEvalsConfig.transform_update_eval_requestc                 C   r;   )r<   z%Transforming update eval response: %sNr   r=   r?   r   r   r   transform_update_eval_response   rA   z0OpenAIEvalsConfig.transform_update_eval_responsec                 C   rL   )z(Transform delete eval request for OpenAIrC   rM   zDelete eval request - URL: %srN   rO   r   r   r   transform_delete_eval_request   rQ   z/OpenAIEvalsConfig.transform_delete_eval_requestc                 C   r;   )z/Transform OpenAI response to DeleteEvalResponsez%Transforming delete eval response: %sNr   )r>   r   r5   r   r?   r   r   r   transform_delete_eval_response   rA   z0OpenAIEvalsConfig.transform_delete_eval_responsec                 C   s0   | j |d|d d}i }td| |||fS )z(Transform cancel eval request for OpenAIrC   rM   /cancelzCancel eval request - URL: %srN   )r   r)   r'   r    r   rH   r7   r   r   r   transform_cancel_eval_request   s   
z/OpenAIEvalsConfig.transform_cancel_eval_requestc                 C   r;   )z/Transform OpenAI response to CancelEvalResponsez%Transforming cancel eval response: %sNr   )r>   r   r5   r	   r?   r   r   r   transform_cancel_eval_response   rA   z0OpenAIEvalsConfig.transform_cancel_eval_responsec                 C   sL   d}|r
|j r
|j }| d| d}dd | D }td|| ||fS )z'Transform create run request for OpenAIr*   r+   /runsc                 S   r.   r   r   r/   r   r   r   r3     r4   zBOpenAIEvalsConfig.transform_create_run_request.<locals>.<dictcomp>z&Create run request - URL: %s, body: %s)r'   r6   r   r5   )r   r)   r-   r    r   r'   rH   r7   r   r   r   transform_create_run_request  s   
z.OpenAIEvalsConfig.transform_create_run_requestc                 C   r;   )'Transform OpenAI response to Run objectz$Transforming create run response: %sNr   r>   r   r5   r   r?   r   r   r   transform_create_run_response"  rA   z/OpenAIEvalsConfig.transform_create_run_responsec                 C   s   d}|r
|j r
|j }| d| d}i }d|v r"|d r"|d |d< d|v r0|d r0|d |d< d|v r>|d r>|d |d< d|v rL|d rL|d |d< td| ||fS )	z&Transform list runs request for OpenAIr*   r+   r[   rD   rE   rF   rG   z?List runs request made to OpenAI Evals endpoint with params: %s)r'   r   r5   )r   r)   rB   r    r   r'   rH   rI   r   r   r   transform_list_runs_request-  s$   
z-OpenAIEvalsConfig.transform_list_runs_requestc                 C   r;   )z-Transform OpenAI response to ListRunsResponsez#Transforming list runs response: %sNr   )r>   r   r5   r   r?   r   r   r   transform_list_runs_responseM  rA   z.OpenAIEvalsConfig.transform_list_runs_responserun_idc                 C   s(   | d| d| }t d| ||fS )z$Transform get run request for OpenAIr+   /runs/zGet run request - URL: %sr   r5   )r   r)   rb   r'   r    r   rH   r   r   r   transform_get_run_requestX  s   	z+OpenAIEvalsConfig.transform_get_run_requestc                 C   r;   )r]   z!Transforming get run response: %sNr   r^   r?   r   r   r   transform_get_run_responseg  rA   z,OpenAIEvalsConfig.transform_get_run_responsec                 C   s0   | d| d| d}i }t d| |||fS )z'Transform cancel run request for OpenAIr+   rc   rX   zCancel run request - URL: %srd   r   r)   rb   r'   r    r   rH   r7   r   r   r   transform_cancel_run_requestr  s   	
z.OpenAIEvalsConfig.transform_cancel_run_requestc                 C   r;   )z.Transform OpenAI response to CancelRunResponsez$Transforming cancel run response: %sNr   )r>   r   r5   r
   r?   r   r   r   transform_cancel_run_response  rA   z/OpenAIEvalsConfig.transform_cancel_run_responsec                 C   s.   | d| d| }i }t d| |||fS )z'Transform delete run request for OpenAIr+   rc   zDelete run request - URL: %srd   rg   r   r   r   transform_delete_run_request  s   	
z.OpenAIEvalsConfig.transform_delete_run_requestc                 C   r;   )z.Transform OpenAI response to RunDeleteResponsez$Transforming delete run response: %sNr   )r>   r   r5   r   r?   r   r   r   transform_delete_run_response  rA   z/OpenAIEvalsConfig.transform_delete_run_responser   )5__name__
__module____qualname____doc__propertyr   r   dictr   r   r&   strr,   r   r   r8   httpxResponser   r   r@   r   r   rJ   r   rK   rP   rR   r   rT   rU   rV   r   rW   rY   r	   rZ   r   r\   r   r_   r   r`   r   ra   re   rf   rh   r
   ri   rj   r   rk   r   r   r   r   r   !   s   
 




!















 






r   )ro   typingr   r   r   r   rs   Zlitellm._loggingr   Z*litellm.llms.base_llm.evals.transformationr   r   Zlitellm.types.llms.openai_evalsr	   r
   r   r   r   r   r   r   r   r   r   r   r   Zlitellm.types.routerr   Zlitellm.types.utilsr   r   r   r   r   r   <module>   s    <