
    m
i'                        d Z ddl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mZ dd	l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 m!Z! ddl"m#Z$ eeedz  geez  e%z  f         Z&eee         ee         dz  geez  e%z  f         Z' G d de          Z( G d de(          Z)e&ez  e!z  Z*e e+z  e(z  Z, G d de          Z-dS )z!Configuration for run evaluators.    )CallableSequence)Any)
Embeddings)BaseLanguageModel)BasePromptTemplate)RunEvaluator)EvaluationResultEvaluationResults)ExampleRun)	BaseModel
ConfigDictField)override)CRITERIA_TYPE)EmbeddingDistance)EvaluatorTypeStringEvaluator)StringDistanceNc                   :    e Zd ZU dZeed<   deeef         fdZ	dS )
EvalConfigztConfiguration for a given run evaluator.

    Attributes:
        evaluator_type: The type of evaluator to use.
    evaluator_typereturnc                 6    i }| D ]\  }}|dk    s||||<   |S )zGet the keyword arguments for the `load_evaluator` call.

        Returns:
            The keyword arguments for the `load_evaluator` call.
        r    )selfkwargsfieldvals       C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/smith/evaluation/config.py
get_kwargszEvalConfig.get_kwargs+   s?      	  	 JE3(((CKF5MM    N)
__name__
__module____qualname____doc__r   __annotations__dictstrr   r"   r   r#   r!   r   r   "   sQ           "!!!DcN      r#   r   c                        e Zd ZU dZdZedz  ed<   	 dZedz  ed<   	 dZedz  ed<   	 e	de
eef         f fd            Z xZS )SingleKeyEvalConfigzBConfiguration for a run evaluator that only requires a single key.Nreference_keyprediction_key	input_keyr   c                 ~    t                                                      }dD ]}|                    |d            |S )N)r-   r.   r/   )superr"   pop)r   r   key	__class__s      r!   r"   zSingleKeyEvalConfig.get_kwargsG   sC    ##%%C 	" 	"CJJsD!!!!r#   )r$   r%   r&   r'   r-   r*   r(   r.   r/   r   r)   r   r"   __classcell__)r4   s   @r!   r,   r,   9   s         LL $M3:$$$@!%NC$J%%% !IsTz   B DcN      X    r#   r,   c                   j   e Zd ZU dZ ee          Zeeez           e	d<   	 dZ
ee         dz  e	d<   	 dZee         dz  e	d<   	 dZedz  e	d<   	 dZedz  e	d<   	 dZedz  e	d	<   	 dZedz  e	d
<   	  ed          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z  G d! d"e          Z! G d# d$e          Z" G d% d&e"          Z#dS )'RunEvalConfigz#Configuration for a run evaluation.)default_factory
evaluatorsNcustom_evaluatorsbatch_evaluatorsr-   r.   r/   eval_llmTarbitrary_types_allowedc                   T    e Zd ZU dZdZedz  ed<   dZedz  ed<   e	j
        Ze	ed<   dS )RunEvalConfig.CriteriazConfiguration for a reference-free criteria evaluator.

        Attributes:
            criteria: The criteria to evaluate.
            llm: The language model to use for the evaluation chain.
        Ncriteriallmr   )r$   r%   r&   r'   rA   r   r(   rB   r   r   CRITERIAr   r   r#   r!   Criteriar@   {   s\         	 	 *.-$&---(,%,,,(5(>>>>>>r#   rD   c                   T    e Zd ZU dZdZedz  ed<   dZedz  ed<   e	j
        Ze	ed<   dS )RunEvalConfig.LabeledCriteriazConfiguration for a labeled (with references) criteria evaluator.

        Attributes:
            criteria: The criteria to evaluate.
            llm: The language model to use for the evaluation chain.
        NrA   rB   r   )r$   r%   r&   r'   rA   r   r(   rB   r   r   LABELED_CRITERIAr   r   r#   r!   LabeledCriteriarF      s\         	 	 *.-$&---(,%,,,(5(FFFFFFr#   rH   c                   l    e Zd ZU dZej        Zeed<   dZe	dz  ed<   dZ
edz  ed<    ed          ZdS )RunEvalConfig.EmbeddingDistancezConfiguration for an embedding distance evaluator.

        Attributes:
            embeddings: The embeddings to use for computing the distance.
            distance_metric: The distance metric to use for computing the distance.
        r   N
embeddingsdistance_metricTr=   )r$   r%   r&   r'   r   EMBEDDING_DISTANCEr   r(   rK   r   rL   EmbeddingDistanceEnumr   model_configr   r#   r!   r   rJ      ss         	 	 )6(HHHH(,
J%,,,8<.5<<<!z$(
 
 
r#   r   c                   N    e Zd ZU dZej        Zeed<   dZe	dz  ed<   dZ
eed<   dS )RunEvalConfig.StringDistancea}  Configuration for a string distance evaluator.

        Attributes:
            distance: The string distance metric to use (`damerau_levenshtein`,
                `levenshtein`, `jaro`, or `jaro_winkler`).
            normalize_score: Whether to normalize the distance to between 0 and 1.
                Applies only to the Levenshtein and Damerau-Levenshtein distances.
        r   NdistanceTnormalize_score)r$   r%   r&   r'   r   STRING_DISTANCEr   r(   rR   StringDistanceEnumrS   boolr   r#   r!   r   rQ      sW         	 	 )6(EEEE.2$t+222 $$$$$$r#   r   c                   T    e Zd ZU dZej        Zeed<   dZe	dz  ed<   dZ
edz  ed<   dS )RunEvalConfig.QAzConfiguration for a QA evaluator.

        Attributes:
            prompt: The prompt template to use for generating the question.
            llm: The language model to use for the evaluation chain.
        r   NrB   prompt)r$   r%   r&   r'   r   QAr   r(   rB   r   rY   r   r   r#   r!   rZ   rX      s]         	 	 )6(8888(,%,,,,0"T)00000r#   rZ   c                   T    e Zd ZU dZej        Zeed<   dZe	dz  ed<   dZ
edz  ed<   dS )RunEvalConfig.ContextQAConfiguration for a context-based QA evaluator.

        Attributes:
            prompt: The prompt template to use for generating the question.
            llm: The language model to use for the evaluation chain.
        r   NrB   rY   r$   r%   r&   r'   r   
CONTEXT_QAr   r(   rB   r   rY   r   r   r#   r!   	ContextQAr\      ]         	 	 )6(@@@@(,%,,,,0"T)00000r#   r`   c                   T    e Zd ZU dZej        Zeed<   dZe	dz  ed<   dZ
edz  ed<   dS )RunEvalConfig.CoTQAr]   r   NrB   rY   r^   r   r#   r!   CoTQArc      ra   r#   rd   c                   ,    e Zd ZU dZej        Zeed<   dS )RunEvalConfig.JsonValidityz,Configuration for a json validity evaluator.r   N)r$   r%   r&   r'   r   JSON_VALIDITYr   r(   r   r#   r!   JsonValidityrf      +         ::(5(CCCCCCr#   rh   c                   ,    e Zd ZU dZej        Zeed<   dS )#RunEvalConfig.JsonEqualityEvaluatorz,Configuration for a json equality evaluator.r   N)r$   r%   r&   r'   r   JSON_EQUALITYr   r(   r   r#   r!   JsonEqualityEvaluatorrk      ri   r#   rm   c                   V    e Zd ZU dZej        Zeed<   dZe	ed<   dZ
e	ed<   dZe	ed<   dS )RunEvalConfig.ExactMatcha<  Configuration for an exact match string evaluator.

        Attributes:
            ignore_case: Whether to ignore case when comparing strings.
            ignore_punctuation: Whether to ignore punctuation when comparing strings.
            ignore_numbers: Whether to ignore numbers when comparing strings.
        r   Fignore_caseignore_punctuationignore_numbersN)r$   r%   r&   r'   r   EXACT_MATCHr   r(   rp   rV   rq   rr   r   r#   r!   
ExactMatchro      sb         	 	 )6(AAAA!T!!!#(D((($$$$$$r#   rt   c                   :    e Zd ZU dZej        Zeed<   dZe	ed<   dS )RunEvalConfig.RegexMatchzConfiguration for a regex match string evaluator.

        Attributes:
            flags: The flags to pass to the regex. Example: `re.IGNORECASE`.
        r   r   flagsN)
r$   r%   r&   r'   r   REGEX_MATCHr   r(   rw   intr   r#   r!   
RegexMatchrv      s<         	 	 )6(AAAAsr#   rz   c                   |    e Zd ZU dZej        Zeed<   dZe	dz  ed<   dZ
edz  ed<   dZedz  ed<   dZedz  ed<   dS )RunEvalConfig.ScoreStringau  Configuration for a score string evaluator.

        This is like the criteria evaluator but it is configured by
        default to return a score on the scale from 1-10.

        It is recommended to normalize these scores
        by setting `normalize_by` to 10.

        Attributes:
            criteria: The criteria to evaluate.
            llm: The language model to use for the evaluation chain.
            normalize_by: If you want to normalize the score, the denominator to use.
                If not provided, the score will be between 1 and 10.
            prompt: The prompt template to use for evaluation.
        r   NrA   rB   normalize_byrY   )r$   r%   r&   r'   r   SCORE_STRINGr   r(   rA   r   rB   r   r}   floatrY   r   r   r#   r!   ScoreStringr|      s         	 	  )6(BBBB)--$&---(,%,,,%)edl))),0"T)00000r#   r   c                   ,    e Zd ZU dZej        Zeed<   dS ) RunEvalConfig.LabeledScoreStringz3Configuration for a labeled score string evaluator.r   N)r$   r%   r&   r'   r   LABELED_SCORE_STRINGr   r(   r   r#   r!   LabeledScoreStringr     s+         AA(5(JJJJJJr#   r   )$r$   r%   r&   r'   r   listr9   SINGLE_EVAL_CONFIG_TYPECUSTOM_EVALUATOR_TYPEr(   r:   r;   BATCH_EVALUATOR_LIKEr-   r*   r.   r/   r<   r   r   rO   r,   rD   rH   r   r   rZ   r`   rd   rh   r   rm   rt   rz   r   r   r   r#   r!   r7   r7   T   sp        --HMI I IJ,/DDE   Q =At12T9@@@8:>d/047>>> !%M3:$$$@!%NC$J%%% !IsTz   B)-H$&---H: $  L
? 
? 
? 
? 
?& 
? 
? 
?
G 
G 
G 
G 
G- 
G 
G 
G
 
 
 
 
/ 
 
 
 % % % % %, % % %
1 
1 
1 
1 
1  
1 
1 
1
1 
1 
1 
1 
1' 
1 
1 
1
1 
1 
1 
1 
1# 
1 
1 
1D D D D D* D D D
D D D D D
 D D D
% % % % %( % % %    (   1 1 1 1 1) 1 1 1.K K K K K[ K K K K Kr#   r7   ).r'   collections.abcr   r   typingr   langchain_core.embeddingsr   langchain_core.language_modelsr   langchain_core.promptsr   	langsmithr	   langsmith.evaluation.evaluatorr
   r   langsmith.schemasr   r   pydanticr   r   r   typing_extensionsr   0langchain_classic.evaluation.criteria.eval_chainr   4langchain_classic.evaluation.embedding_distance.baser   rN   #langchain_classic.evaluation.schemar   r   1langchain_classic.evaluation.string_distance.baser   rU   r)   RUN_EVALUATOR_LIKEr   r   r,   r   r*   r   r7   r   r#   r!   <module>r      sf   ' ' . . . . . . . .       0 0 0 0 0 0 < < < < < < 5 5 5 5 5 5 " " " " " " N N N N N N N N * * * * * * * * 1 1 1 1 1 1 1 1 1 1 & & & & & & J J J J J J      O N N N N N N N      'D.((4/1   c]HW%,-((4/1        .    *   . +\9OK '#-
: }K }K }K }K }KI }K }K }K }K }Kr#   