
    h4                     z   d Z ddlmZ ddl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.    )Sequence)AnyCallableOptional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                 8    i }| D ]  \  }}|dk(  s||||<    |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/eduruby.in/venv/lib/python3.12/site-packages/langchain/smith/evaluation/config.py
get_kwargszEvalConfig.get_kwargs2   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                   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.   r/   r0   )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)   r/   r0   r*   r   r#   __classcell__r5   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.   r/   r0   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 NrC   r   r2   __init__r   rC   r   r5   s      r"   rH   zRunEvalConfig.Criteria.__init__       
 G9h9&9r$   N)r%   r&   r'   r(   rC   r   r   r)   rD   r	   r   CRITERIAr   r   rH   r6   r7   s   @r"   CriteriarB      si    		 -1(=)0+/X'(/(5(>(>> 15	:}-	: 	: 		: 	:r$   rM   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.
        NrC   rD   r   r   r   c                 (    t        |   dd|i| y rF   rG   rI   s      r"   rH   z&RunEvalConfig.LabeledCriteria.__init__   rJ   r$   rK   )r%   r&   r'   r(   rC   r   r   r)   rD   r	   r   LABELED_CRITERIAr   r   rH   r6   r7   s   @r"   LabeledCriteriarO      si    	 -1(=)0+/X'(/(5(F(FF 15	:}-	: 	: 		: 	:r$   rR   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)   rU   r   r   rV   EmbeddingDistanceEnumr   model_configr   r$   r"   r   rT      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   NrD   prompt)r%   r&   r'   r(   r   QAr   r)   rD   r   r	   rc   r
   r   r$   r"   rd   rb      s9    	 )6(8(88+/X'(//3+,3r$   rd   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   NrD   rc   r%   r&   r'   r(   r   
CONTEXT_QAr   r)   rD   r   r	   rc   r
   r   r$   r"   	ContextQArf   
  9    		 )6(@(@@+/X'(//3+,3r$   rj   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.CoTQArg   r   NrD   rc   rh   r   r$   r"   CoTQArm     rk   r$   rn   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"   JsonValidityrp   *      	 )6(C(CCr$   rr   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"   JsonEqualityEvaluatorru   3  rs   r$   rw   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)   rz   r`   r{   r|   r   r$   r"   
ExactMatchry   <  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   N  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   NrC   rD   normalize_byrc   r   r   c                 *    t        |   d||d| y )N)rC   r   r   rG   )r   rC   r   r   r5   s       r"   rH   z"RunEvalConfig.ScoreString.__init__u  s     GTh\TVTr$   )NN)r%   r&   r'   r(   r   SCORE_STRINGr   r)   rC   r   r   rD   r	   r   floatrc   r
   r   rH   r6   r7   s   @r"   ScoreStringr   Z  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   }  s    (5(J(JJr$   r   )&r%   r&   r'   r(   r   listr;   r   SINGLE_EVAL_CONFIG_TYPECUSTOM_EVALUATOR_TYPEr)   r<   r   r=   BATCH_EVALUATOR_LIKEr.   r+   r/   r0   r>   r	   r   rY   r-   rM   rR   r   r   rd   rj   rn   rr   r   rw   r~   r   r   r   r   r$   r"   r9   r9   ]   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$   r9   N).r(   collections.abcr   typingr   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   rX   langchain.evaluation.schemar   r   )langchain.evaluation.string_distance.baser   r_   r*   RUN_EVALUATOR_LIKEr   r   r-   r   r+   r   r9   r   r$   r"   <module>r      s    ' $ 1 1 0 < 5 " N * 1 1 B G (7
	
-t
346   c]HXg./0	
-t
346  D* , 0,OP sJ >? aKI aKr$   