
    j                         d dl mZmZ d dlmZ d dlmZmZmZm	Z	 d dl
mZ e	rd dlmZ d dlmZ d dlmZ  G d dej&                        Zd
d	Zy)    )base_metricscore_resultN)DictAnyOptionalTYPE_CHECKINGmetricsdataset_schema
OpikTracerc                        e Zd Z	 	 ddddedee   f fdZdeeef   ddfd	Z	d
ede
j                  fdZd
ede
j                  fdZ xZS )RagasMetricWrapperragas_metriczragas_metrics.SingleTurnMetrictrackproject_namec                    ddl m} t        ||j                        st	        dt        |       d      t        |   |j                  ||       || _	        |j                  |j                  j                  j                     | _        y )Nr   r	   zragas_metric z' is not a SingleTurnMetric Ragas Metric)namer   r   )ragasr
   
isinstanceSingleTurnMetric
ValueErrortypesuper__init__r   r   required_columns
MetricTypeSINGLE_TURN_required_fields)selfr   r   r   ragas_metrics	__class__s        }/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/evaluation/metrics/ragas_metric.pyr   zRagasMetricWrapper.__init__   s     	3 ,(F(FG\ 233Z[  	l//u<X( , = =$$0055!
    
input_dictreturnz%ragas_dataset_schema.SingleTurnSamplec                 ~   ddl m} d|vrd|v r|d   |d<   d|vrd|v r|d   |d<   i }g }| j                  D ]  }	 ||   ||<    t        |      dkD  r8t        j                  | j                  |t        |j                                      |j                  di |}|S # t        $ r |j	                  |       Y w xY w)Nr   r   
user_inputinputresponseoutput )r   r   r    KeyErrorappendlen
exceptionsScoreMethodMissingArgumentsr   listkeysSingleTurnSample)r!   r&   ragas_dataset_schemasample_dictmissing_argumentsfieldsamples          r$    _create_ragas_single_turn_samplez3RagasMetricWrapper._create_ragas_single_turn_sample!   s     	A z)g.C'1'':J|$Z'H
,B%/%9Jz"**E0%/%6E" +  !A%88		!Z__&'  7%66EE  0!((/0s   BB<;B<kwargsc                    K   | j                  |      }| j                  rt               gng }| j                  j	                  ||       d {   }t        j                  || j                        S 7 %wN)	callbacks)valuer   )r;   r   _get_opik_tracer_instancer   single_turn_ascorer   ScoreResultr   r!   r<   r:   r?   scores        r$   ascorezRagasMetricWrapper.ascore?   se     66v>59ZZ.01R	''::6Y:WW''e$))DD Xs   AA5A3&A5c                     | j                  |      }| j                  rt               gng }| j                  j	                  ||      }t        j                  || j                        S r>   )r;   r   rA   r   single_turn_scorer   rC   r   rD   s        r$   rE   zRagasMetricWrapper.scoreG   sX    66v>59ZZ.01R	!!33Fi3P''e$))DDr%   )TN)__name__
__module____qualname__boolr   strr   r   r   r;   r   rC   rF   rE   __classcell__)r#   s   @r$   r   r      s     &*	
6
 
 sm	
&sCx.	0<ES E\-E-E EEc El&>&> Er%   r   c                      ddl m}  t        j                         }t        j                         }d }|||j
                  n|j
                  } | d|      }|S )Nr   r   T)opik_context_read_only_moder   )opik.integrations.langchainr   opik_contextget_current_span_dataget_current_trace_datar   )r   current_span_datacurrent_trace_datar   opik_tracers        r$   rA   rA   P   si    6$::<%<<>L$ "- ++"// 	( $(!K r%   )r'   r   )opik.evaluation.metricsr   r   opik.exceptionsr1   typingr   r   r   r   opik.opik_contextrR   r   r
   r"   r   r6   rQ   r   
BaseMetricr   rA   r-   r%   r$   <module>r]      s<    = $ 5 5 (.<6@E// @EF r%   