
    3fi'                     ~   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-y)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                   2    e Zd ZU dZeed<   deeef   fdZ	y)
EvalConfigztConfiguration for a given run evaluator.

    Attributes:
        evaluator_type: The type of evaluator to use.
    evaluator_typereturnc                 8    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       g/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_classic/smith/evaluation/config.py
get_kwargszEvalConfig.get_kwargs+   s<      	 JE3((CKF5M	      N)
__name__
__module____qualname____doc__r   __annotations__dictstrr   r"   r   r#   r!   r   r   "   s#     "!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                 V    t         |          }dD ]  }|j                  |d         |S )N)r-   r.   r/   )superr"   pop)r   r   key	__class__s      r!   r"   zSingleKeyEvalConfig.get_kwargsG   s2    #%C 	"CJJsD!	"r#   )r$   r%   r&   r'   r-   r*   r(   r.   r/   r   r)   r   r"   __classcell__)r4   s   @r!   r,   r,   9   sf    L $M3:$@!%NC$J% !IsTz B DcN  r#   r,   c                      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#y)'RunEvalConfigz#Configuration for a run evaluation.)default_factory
evaluatorsNcustom_evaluatorsbatch_evaluatorsr-   r.   r/   eval_llmTarbitrary_types_allowedc                   \    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<   y)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@   {   s8    	 *.-$&-(,%,(5(>(>>r#   rD   c                   \    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<   y)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      s8    	 *.-$&-(,%,(5(F(FFr#   rH   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dz  ed<    ed      Zy)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      sE    	 )6(H(HH(,
J%,8<.5<!$(
r#   r   c                   V    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<   y)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      s3    	 )6(E(EE.2$t+2 $$r#   r   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<   y)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      s9    	 )6(8(88(,%,,0"T)0r#   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<   y)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\      9    	 )6(@(@@(,%,,0"T)0r#   r`   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<   y)RunEvalConfig.CoTQAr]   r   NrB   rY   r^   r   r#   r!   CoTQArc      ra   r#   rd   c                   4    e Zd ZU dZej
                  Zeed<   y)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Cr#   rh   c                   4    e Zd ZU dZej
                  Zeed<   y)#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                   ^    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<   y)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      s8    	 )6(A(AA!T!#(D($$r#   rt   c                   B    e Zd ZU dZej
                  Zeed<   dZe	ed<   y)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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<   y)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|      sV    	  )6(B(BB)--$&-(,%,%)edl),0"T)0r#   r   c                   4    e Zd ZU dZej
                  Zeed<   y) 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(5(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   sq   -HM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
/ 
 %, %
1  
1
1' 
1
1# 
1D* D
D
 D
%( %( 1) 1.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      s    ' .  0 < 5 " N * 1 1 & J O 'D.((4/1   c]HW%,-((4/1  .* . +\9OK '#-
: }KI }Kr#   