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

    Parameters
    ----------
    evaluator_type : EvaluatorType
        The type of evaluator to use.

    Methods
    -------
    get_kwargs()
        Get the keyword arguments for the evaluator configuration.

    evaluator_typereturnc                 8    i }| D ]\  }}|dk    r||||<   |S )zGet the keyword arguments for the load_evaluator call.

        Returns
        -------
        Dict[str, Any]
            The keyword arguments for the load_evaluator call.

        r    )selfkwargsfieldvals       ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain/smith/evaluation/config.py
get_kwargszEvalConfig.get_kwargs0   sC      	  	 JE3(((F5MM    N)
__name__
__module____qualname____doc__r   __annotations__r   strr   r%   r   r&   r$   r   r      sQ           "!!!DcN      r&   r   c                        e Zd ZU dZdZee         ed<   	 dZee         ed<   	 dZ	ee         ed<   	 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/   r0   r1   )superr%   pop)r    r!   key	__class__s      r$   r%   zSingleKeyEvalConfig.get_kwargsQ   sC    ##%%C 	" 	"CJJsD!!!!r&   )r'   r(   r)   r*   r/   r   r,   r+   r0   r1   r   r   r%   __classcell__r6   s   @r$   r.   r.   C   s         LL#'M8C='''@$(NHSM(((  $Ix}###BDcN          r&   r.   c                      e Zd ZU dZ ee          Zeee	e
f                  ed<   	 dZeee
                  ed<   	 dZeee                  ed<   	 dZee         ed<   	 dZee         ed<   	 dZee         ed	<   	 dZee         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 )'RunEvalConfiga0  Configuration for a run evaluation.

    Parameters
    ----------
    evaluators : List[Union[EvaluatorType, EvalConfig, RunEvaluator, Callable]]
        Configurations for which evaluators to apply to the dataset run.
        Each can be the string of an :class:`EvaluatorType <langchain.evaluation.schema.EvaluatorType>`, such
        as EvaluatorType.QA, the evaluator type string ("qa"), or a configuration for a
        given evaluator (e.g., :class:`RunEvalConfig.QA <langchain.smith.evaluation.config.RunEvalConfig.QA>`).

    custom_evaluators : Optional[List[Union[RunEvaluator, StringEvaluator]]]
        Custom evaluators to apply to the dataset run.

    reference_key : Optional[str]
        The key in the dataset run to use as the reference string.
        If not provided, it will be inferred automatically.

    prediction_key : Optional[str]
        The key from the traced run's outputs dictionary to use to
        represent the prediction. If not provided, it will be inferred
        automatically.

    input_key : Optional[str]
        The key from the traced run's inputs dictionary to use to represent the
        input. If not provided, it will be inferred automatically.

    eval_llm : Optional[BaseLanguageModel]
        The language model to pass to any evaluators that use a language model.
    )default_factory
evaluatorsNcustom_evaluatorsbatch_evaluatorsr/   r0   r1   eval_llmTarbitrary_types_allowedc                        e Zd ZU dZdZee         ed<   dZee	         ed<   e
j        Ze
ed<   	 d	dee         deddf fdZ xZS )
RunEvalConfig.Criteriaa"  Configuration for a reference-free criteria evaluator.

        Parameters
        ----------
        criteria : Optional[CRITERIA_TYPE]
            The criteria to evaluate.
        llm : Optional[BaseLanguageModel]
            The language model to use for the evaluation chain.

        Ncriteriallmr   r!   r   c                 >     t                      j        dd|i| d S NrD   r   r3   __init__r    rD   r!   r6   s      r$   rI   zRunEvalConfig.Criteria.__init__   -     EGG99h9&99999r&   N)r'   r(   r)   r*   rD   r   r   r+   rE   r   r   CRITERIAr   r   rI   r7   r8   s   @r$   CriteriarC      s         		 		 -1(=)000+/X'(///(5(>>>> 7;	: 	:$]3	:FI	:	: 	: 	: 	: 	: 	: 	: 	: 	: 	:r&   rN   c                        e Zd ZU dZdZee         ed<   dZee	         ed<   e
j        Ze
ed<   	 d	dee         deddf fdZ xZS )
RunEvalConfig.LabeledCriteriaa,  Configuration for a labeled (with references) criteria evaluator.

        Parameters
        ----------
        criteria : Optional[CRITERIA_TYPE]
            The criteria to evaluate.
        llm : Optional[BaseLanguageModel]
            The language model to use for the evaluation chain.
        NrD   rE   r   r!   r   c                 >     t                      j        dd|i| d S rG   rH   rJ   s      r$   rI   z&RunEvalConfig.LabeledCriteria.__init__   rK   r&   rL   )r'   r(   r)   r*   rD   r   r   r+   rE   r   r   LABELED_CRITERIAr   r   rI   r7   r8   s   @r$   LabeledCriteriarP      s         	 	 -1(=)000+/X'(///(5(FFFF 7;	: 	:$]3	:FI	:	: 	: 	: 	: 	: 	: 	: 	: 	: 	:r&   rS   c                   x    e Zd ZU dZej        Zeed<   dZe	e
         ed<   dZe	e         ed<    ed          ZdS )RunEvalConfig.EmbeddingDistanceaI  Configuration for an embedding distance evaluator.

        Parameters
        ----------
        embeddings : Optional[Embeddings]
            The embeddings to use for computing the distance.

        distance_metric : Optional[EmbeddingDistanceEnum]
            The distance metric to use for computing the distance.

        r   N
embeddingsdistance_metricTr@   )r'   r(   r)   r*   r   EMBEDDING_DISTANCEr   r+   rV   r   r
   rW   EmbeddingDistanceEnumr   model_configr   r&   r$   r   rU      ss         
	 
	 )6(HHHH+/
HZ(///;?"78???!z$(
 
 
r&   r   c                   V    e Zd ZU dZej        Zeed<   dZe	e
         ed<   	 dZeed<   dS )RunEvalConfig.StringDistancezConfiguration for a string distance evaluator.

        Parameters
        ----------
        distance : Optional[StringDistanceEnum]
            The string distance metric to use.

        r   NdistanceTnormalize_score)r'   r(   r)   r*   r   STRING_DISTANCEr   r+   r]   r   StringDistanceEnumr^   boolr   r&   r$   r   r\      sd         	 	 )6(EEEE15(-.555	 !%$$$	N 	Nr&   r   c                   `    e Zd ZU dZej        Zeed<   dZe	e
         ed<   dZe	e         ed<   dS )RunEvalConfig.QAa-  Configuration for a QA evaluator.

        Parameters
        ----------
        prompt : Optional[BasePromptTemplate]
            The prompt template to use for generating the question.
        llm : Optional[BaseLanguageModel]
            The language model to use for the evaluation chain.
        r   NrE   prompt)r'   r(   r)   r*   r   QAr   r+   rE   r   r   rd   r   r   r&   r$   re   rc      s]         	 	 )6(8888+/X'(////3+,33333r&   re   c                   `    e Zd ZU dZej        Zeed<   dZe	e
         ed<   dZe	e         ed<   dS )RunEvalConfig.ContextQA<  Configuration for a context-based QA evaluator.

        Parameters
        ----------
        prompt : Optional[BasePromptTemplate]
            The prompt template to use for generating the question.
        llm : Optional[BaseLanguageModel]
            The language model to use for the evaluation chain.

        r   NrE   rd   r'   r(   r)   r*   r   
CONTEXT_QAr   r+   rE   r   r   rd   r   r   r&   r$   	ContextQArg     ]         		 		 )6(@@@@+/X'(////3+,33333r&   rk   c                   `    e Zd ZU dZej        Zeed<   dZe	e
         ed<   dZe	e         ed<   dS )RunEvalConfig.CoTQArh   r   NrE   rd   ri   r   r&   r$   CoTQArn     rl   r&   ro   c                   ,    e Zd ZU dZej        Zeed<   dS )RunEvalConfig.JsonValidityz\Configuration for a json validity evaluator.

        Parameters
        ----------
        r   N)r'   r(   r)   r*   r   JSON_VALIDITYr   r+   r   r&   r$   JsonValidityrq   &  1         	 	 )6(CCCCCCr&   rs   c                   ,    e Zd ZU dZej        Zeed<   dS )#RunEvalConfig.JsonEqualityEvaluatorz\Configuration for a json equality evaluator.

        Parameters
        ----------
        r   N)r'   r(   r)   r*   r   JSON_EQUALITYr   r+   r   r&   r$   JsonEqualityEvaluatorrv   /  rt   r&   rx   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.ExactMatchax  Configuration for an exact match string evaluator.

        Parameters
        ----------
        ignore_case : bool
            Whether to ignore case when comparing strings.
        ignore_punctuation : bool
            Whether to ignore punctuation when comparing strings.
        ignore_numbers : bool
            Whether to ignore numbers when comparing strings.
        r   Fignore_caseignore_punctuationignore_numbersN)r'   r(   r)   r*   r   EXACT_MATCHr   r+   r{   ra   r|   r}   r   r&   r$   
ExactMatchrz   8  sb         
	 
	 )6(AAAA!T!!!#(D((($$$$$$r&   r   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.

        Parameters
        ----------
        flags : int
            The flags to pass to the regex. Example: re.IGNORECASE.
        r   r   flagsN)
r'   r(   r)   r*   r   REGEX_MATCHr   r+   r   intr   r&   r$   
RegexMatchr   J  s<         	 	 )6(AAAAsr&   r   c            	            e Zd ZU dZej        Zeed<   dZe	e
         ed<   dZe	e         ed<   dZe	e         ed<   dZe	e         ed<   	 	 dde	e
         de	e         ded	df fd
Z xZS )RunEvalConfig.ScoreStringa  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.

        Parameters
        ----------
        criteria : Optional[CRITERIA_TYPE]
            The criteria to evaluate.
        llm : Optional[BaseLanguageModel]
            The language model to use for the evaluation chain.
        normalize_by: Optional[int] = None
            If you want to normalize the score, the denominator to use.
            If not provided, the score will be between 1 and 10 (by default).
        prompt : Optional[BasePromptTemplate]

        r   NrD   rE   normalize_byrd   r!   r   c                 @     t                      j        d||d| d S )N)rD   r   r   rH   )r    rD   r   r!   r6   s       r$   rI   z"RunEvalConfig.ScoreString.__init__q  s/     EGGTh\TTVTTTTTr&   )NN)r'   r(   r)   r*   r   SCORE_STRINGr   r+   rD   r   r   rE   r   r   floatrd   r   r   rI   r7   r8   s   @r$   ScoreStringr   V  s         	 	( )6(BBBB,0(=)000+/X'(///(,huo,,,/3+,333 15,0	U 	U}-	U #5/	U 		U
 	U 	U 	U 	U 	U 	U 	U 	U 	U 	Ur&   r   c                   (    e Zd ZU ej        Zeed<   dS ) RunEvalConfig.LabeledScoreStringr   N)r'   r(   r)   r   LABELED_SCORE_STRINGr   r+   r   r&   r$   LabeledScoreStringr   y  s%         (5(JJJJJJr&   r   )'r'   r(   r)   r*   r   listr<   r   r	   SINGLE_EVAL_CONFIG_TYPECUSTOM_EVALUATOR_TYPEr+   r=   r   r>   BATCH_EVALUATOR_LIKEr/   r,   r0   r1   r?   r   r   rZ   r.   rN   rS   r   r   re   rk   ro   rs   r   rx   r   r   r   r   r   r&   r$   r:   r:   ]   s         F 	d### #!#	
 $ $ $X @Dx%: ;<CCC8=Aht$89:AAA $(M8C='''@$(NHSM(((  $Ix}###B,0Hh()000H: $  L: : : : :& : : :*: : : : :- : : :(
 
 
 
 
/ 
 
 
*N N N N N, N N N,4 4 4 4 4  4 4 44 4 4 4 4' 4 4 4 4 4 4 4 4# 4 4 4 D D D D D* D D DD D D D D
 D D D% % % % %( % % %$
 
 
 
 
( 
 
 
!U !U !U !U !U) !U !U !UFK K K K K[ K K K K Kr&   r:   N)/r*   typingr   r   r   r   r   r   r	   langchain_core.embeddingsr
   langchain_core.language_modelsr   langchain_core.promptsr   	langsmithr   langsmith.evaluation.evaluatorr   r   langsmith.schemasr   r   pydanticr   r   r   (langchain.evaluation.criteria.eval_chainr   ,langchain.evaluation.embedding_distance.baser   rY   langchain.evaluation.schemar   r   )langchain.evaluation.string_distance.baser   r`   dictRUN_EVALUATOR_LIKEr   r   r.   r   r,   r   r:   r   r&   r$   <module>r      sj   ' ' G G G G G G G G G G G G G G G G G G 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 B B B B B B      G F F F F F F F      (7
e$46G$MNN   c]HXg./0	
-t
346 ! ! ! ! ! ! ! !H    *   , 0,OP sJ >? ]K ]K ]K ]K ]KI ]K ]K ]K ]K ]Kr&   