
    љi                        S SK J r   S SKrS SKrS SKJr  S SKrS SKJrJrJ	r	J
r
JrJr  S SKJrJr  SSKJrJr  SS	KJr  \R*                  " \5      r " S
 S\5      r " S S\5      r " S S\5      r " S S5      rSSS.S\	S\S\4S jjrg)    )datetimeN)List)	APIRouterDependsFastAPIHTTPExceptionstatusBackgroundTasks)	BaseModelField   )DialogEvaluatorScenario   )create_api_key_dependencyc                   2    \ rS rSr% \" SS9r\\   \S'   Sr	g)EvaluationRequest   zList of evaluation scenariosdescription	scenarios N
__name__
__module____qualname____firstlineno__r   r   r   r   __annotations____static_attributes__r       S/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/admin/evaluation.pyr   r      s     %2P QItH~Qr    r   c                   2    \ rS rSr% \" SS9r\\   \S'   Sr	g)EvaluationResponse   z.List of evaluation scenarios including resultsr   r   r   Nr   r   r    r!   r#   r#      s     %2b cItH~cr    r#   c                   ,    \ rS rSr% \" SS9r\\S'   Srg)EvaluationStartResponse   z!Id to retrieve evaluation resultsr   evaluation_idr   N)	r   r   r   r   r   r(   strr   r   r   r    r!   r&   r&      s    +NOM3Or    r&   c                   .    \ rS rSr SS\4S jjrS rSrg)EvaluationAPI   N	evaluatorc                     Xl         g Nr-   )selfr-   s     r!   __init__EvaluationAPI.__init__   s	     #r    c                 >  ^ ^ [        5       nS[        S[        [           4U 4S jjmUR	                  S[
        S/SSSS	S
0S	S0S.S9S[        S[        S[
        4UU 4S jj5       nUR                  SS/SSSS	S0S	S0S	S0S.S9S[        S[        4U 4S jj5       nU$ )Nr(   r   c                 &  >#     TR                   R                  USS9I S h  vN n[        R                  " SSS9  TR                   R	                  USU  S35        g  N:! [
         a%  n[        R                  SU  SU 35         S nAg S nAff = f7f)	NT)datasetdetailedevaluation_results)exist_okevaluation_results/.jsonzEvaluation failed : )r-   runosmakedirssave_results	Exceptionloggererror)r(   r   resultsexr1   s       r!   run_evaluation_task5EvaluationAPI.get_router.<locals>.run_evaluation_task$   s     I $ 2 29t 2 TT04@++G7J=/Y^5_` U  I1-2$GHHIs>   BA A9A BA 
B)B	B	BBz	/evaluate
EvaluationzStart dialog evaluationzzStart dialog evaluation in the background task. You can retrieve the results with evaluation_id after evaluation finished.z"Id to retrieve evaluation results.r   zSuccessfully start evaluationzInternal server error)     )response_modeltagssummaryr   response_description	responsesrequestbackground_tasksreturnc                   >#    TR                   (       d  [        [        R                  SS9eS n [        R
                  " 5       R                  S5       S[        [        R                  " 5       5      S S  3nUR                  TX R                  5        [        US9$ ! [         a8  n[        R                  SU SU 35        [        [        R                  S	S9eS nAff = f7f)
NEvaluator is not setstatus_codedetailz%Y%m%d_%H%M%S_   )r(   zStarting evaluation failed r<   z/Internal server error while starting evaluation)r-   r   r	   HTTP_500_INTERNAL_SERVER_ERRORr   nowstrftimer)   uuiduuid4add_taskr   r&   rA   rB   rC   )rP   rQ   r(   rE   rF   r1   s       r!   evaluate*EvaluationAPI.get_router.<locals>.evaluate,   s       >># & E E1 
 !M	#+<<>#:#:?#K"LAcRVR\R\R^N_`babNcMd e ))*=}N_N_`.]KK :=/B4PQ# & E EL s)   ,C"A,B C"
C'3CCC"z/evaluate/{evaluation_id}zGet dialog evaluation resultsz1Get dialog evaluation results with evaluation_id.z.List of evaluation scenario including results.z'Successfully returns evaluation resultszResults not found)rI     rJ   )rL   rM   r   rN   rO   c                   >#    TR                   (       d  [        [        R                  SS9eSU  S3n[        R
                  R                  U5      (       d
  [        SSS9e TR                   R                  U5      n[        US9$ ! [         a8  n[        R                  SU  S	U 35        [        [        R                  S
S9eS nAff = f7f)NrT   rU   r:   r;   rb   zEvaluation not found)r   z%Retrieving evaluation results failed r<   z9Internal server error while retrieving evaluation results)r-   r   r	   rZ   r>   pathexistsload_resultsr#   rA   rB   rC   )r(   filepathrD   rE   r1   s       r!   get_evaluation_status7EvaluationAPI.get_router.<locals>.get_evaluation_statusN   s      >># & E E1 
 -]O5AH77>>(++#<RSS..55h?)G<< D]OSUVXUYZ[# & E EV s*   AC"#B C
C3CCC)
r   r)   r   r   postr&   r   r
   getr#   )r1   routerr`   rh   rF   s   `   @r!   
get_routerEvaluationAPI.get_router!   s    	IS 	IT(^ 	I 
2- U!E#%DE#%<= 
 

	&	-	 %	

	, 
'3K!Q#%NO#%89#%<= 
 

			

	, r    r0   r/   )r   r   r   r   r   r2   rm   r   r   r    r!   r+   r+      s     &*#"#Or    r+   )r-   api_keyappr-   ro   c                    U(       a  [        [        U5      5      /O/ nU R                  [        US9R	                  5       US9  g )Nr0   )dependencies)r   r   include_routerr+   rm   )rp   r-   ro   depss       r!   setup_evaluation_apiru   s   s>     =DG-g678D}y9DDFUYZr    )r   loggingr>   typingr   r]   fastapir   r   r   r   r	   r
   pydanticr   r   eval.dialogr   r   authr   	getLoggerr   rB   r   r#   r&   r+   r)   ru   r   r    r!   <module>r}      s      	   W W % 3 +			8	$R	 Rd dPi PV Vx "&	[	[ [ 	[r    