
    ih4                     z   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.y)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                   2    e Zd ZU dZeed<   deeef   fdZ	y)
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                 :    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/dev/engine/venv/lib/python3.12/site-packages/langchain/smith/evaluation/config.py
get_kwargszEvalConfig.get_kwargs0   s@      	 JE3((F5M	      N)
__name__
__module____qualname____doc__r   __annotations__r   strr   r%   r   r&   r$   r   r      s#     "!DcN r&   r   c                   v     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                 V    t         |          }dD ]  }|j                  |d         |S )N)r/   r0   r1   )superr%   pop)r    r!   key	__class__s      r$   r%   zSingleKeyEvalConfig.get_kwargsQ   s2    #%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#'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&y)'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        |   dd|i| y NrD   r   r3   __init__r    rD   r!   r6   s      r$   rI   zRunEvalConfig.Criteria.__init__        G9h9&9r&   N)r'   r(   r)   r*   rD   r   r   r+   rE   r   r   CRITERIAr   r   rI   r7   r8   s   @r$   CriteriarC      se    		 -1(=)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        |   dd|i| y 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      se    	 -1(=)0+/X'(/(5(F(FF 7;	:$]3	:FI	:	: 	:r&   rS   c                   n    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y)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      sE    
	 )6(H(HH+/
HZ(/;?"78?!$(
r&   r   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d<   y)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\      s@    	 )6(E(EE15(-.5	 !%$	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<   y)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      s9    	 )6(8(88+/X'(//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<   y)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     9    		 )6(@(@@+/X'(//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<   y)RunEvalConfig.CoTQArh   r   NrE   rd   ri   r   r&   r$   CoTQArn     rl   r&   ro   c                   4    e Zd ZU dZej
                  Zeed<   y)RunEvalConfig.JsonValidityz\Configuration for a json validity evaluator.

        Parameters
        ----------
        r   N)r'   r(   r)   r*   r   JSON_VALIDITYr   r+   r   r&   r$   JsonValidityrq   &      	 )6(C(CCr&   rs   c                   4    e Zd ZU dZej
                  Zeed<   y)#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                   ^    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.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  s8    
	 )6(A(AA!T!#(D($$r&   r   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.

        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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        |   d||d| y )N)rD   r   r   rH   )r    rD   r   r!   r6   s       r$   rI   z"RunEvalConfig.ScoreString.__init__q  s     GTh\TV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,0(=)0+/X'(/(,huo,/3+,3 15,0	U}-	U #5/	U 		U
 	U 	Ur&   r   c                   0    e Zd ZU ej                  Zeed<   y) RunEvalConfig.LabeledScoreStringr   N)r'   r(   r)   r   LABELED_SCORE_STRINGr   r+   r   r&   r$   LabeledScoreStringr   y  s    (5(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8=Aht$89:A $(M8C='@$(NHSM(  $Ix}#B,0Hh()0H $L:& :*:- :(
/ 
*N, N,4  44' 4 4# 4 D* DD
 D%( %$
( 
!U) !UF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      s    ' G G G 0 < 5 " N * 1 1 B G (7
e$46G$MNN   c]HXg./0	
-t
346 ! !H* , 0,OP sJ >? ]KI ]Kr&   