§
    è˜ºhÀ0  ã                   óî   — d Z ddl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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  G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )z!Configuration for run evaluators.é    )ÚAnyÚDictÚListÚOptionalÚUnion)Ú
Embeddings)ÚBaseLanguageModel)ÚBasePromptTemplate)Ú	BaseModelÚField)ÚRunEvaluator)Ú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 )z·Get 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       úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/smith/evaluation/config.pyÚ
get_kwargszEvalConfig.get_kwargs&   sC   € ð ˆØð 	 ð 	 ‰JˆE�3ØÐ(Ò(Ð(ØØ�ØØˆF�5‰MˆMØˆó    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(   r)   r*   )Úsuperr   Úpop)r   r   ÚkeyÚ	__class__s      €r   r   zSingleKeyEvalConfig.get_kwargsG   sC   ø€ Ý‘”×#Ò#Ñ%Ô%ˆàCð 	"ð 	"ˆCØ�JŠJ�s˜DÑ!Ô!Ð!Ð!Øˆr   )r    r!   r"   r#   r(   r   r%   r$   r)   r*   r   r   r   Ú__classcell__©r/   s   @r   r'   r'   9   s£   ø€ € € € € € ØLÐLà#'€M�8˜C”=Ð'Ð'Ñ'ð@à$(€N�H˜S”MÐ(Ð(Ñ(ðð  $€Iˆx˜Œ}Ð#Ð#Ñ#ðBð˜D  c œNð ð ð ð ð ð ð ð ð ð r   r'   c                   ó„  — e Zd ZU dZ ee¬¦  «        Zeee	e
ef                  ed<   	 dZeeeeef                           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	<   	  G d
„ 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 )&ÚRunEvalConfiga  Configuration for a run evaluation.

    Parameters
    ----------
    evaluators : List[Union[EvaluatorType, EvalConfig]]
        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_evaluatorsr(   r)   r*   Úeval_llmc                   ó   — e Zd ZdZdS )úRunEvalConfig.ConfigTN©r    r!   r"   Úarbitrary_types_allowedr   r   r   ÚConfigr9   ‡   s   € € € € € Ø"&ÐÐÐr   r<   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.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 ©Nr?   r   ©r,   Ú__init__©r   r?   r   r/   s      €r   rD   zRunEvalConfig.Criteria.__init__š   ó-   ø€ ð �E‰GŒGÔÐ9Ð9 hÐ9°&Ð9Ð9Ð9Ð9Ð9r   ©N)r    r!   r"   r#   r?   r   r   r$   r@   r	   r   ÚCRITERIAr   r   rD   r0   r1   s   @r   ÚCriteriar>   Š   s°   ø€ € € € € € ð		ð 		ð -1ˆ�(˜=Ô)Ð0Ð0Ñ0Ø+/ˆˆXÐ'Ô(Ð/Ð/Ñ/Ø(5Ô(>ˆ˜Ð>Ð>Ñ>ð 7;ð	:ð 	:Ø$ ]Ô3ð	:ØFIð	:àð	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:r   rI   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.
        Nr?   r@   r   r   r   c                 ó>   •—  t          ¦   «         j        dd|i|¤Ž d S rB   rC   rE   s      €r   rD   z&RunEvalConfig.LabeledCriteria.__init__®   rF   r   rG   )r    r!   r"   r#   r?   r   r   r$   r@   r	   r   ÚLABELED_CRITERIAr   r   rD   r0   r1   s   @r   ÚLabeledCriteriarK   Ÿ   s°   ø€ € € € € € ð	ð 	ð -1ˆ�(˜=Ô)Ð0Ð0Ñ0Ø+/ˆˆXÐ'Ô(Ð/Ð/Ñ/Ø(5Ô(Fˆ˜ÐFÐFÑFð 7;ð	:ð 	:Ø$ ]Ô3ð	:ØFIð	:àð	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:r   rN   c                   óz   — 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<    G d„ 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_metricc                   ó   — e Zd ZdZdS )ú&RunEvalConfig.EmbeddingDistance.ConfigTNr:   r   r   r   r<   rT   Ä   s   € € € € € Ø&*Ð#Ð#Ð#r   r<   )r    r!   r"   r#   r   ÚEMBEDDING_DISTANCEr   r$   rQ   r   r   rR   ÚEmbeddingDistanceEnumr<   r   r   r   r   rP   ³   sˆ   € € € € € € ð
	ð 
	ð )6Ô(Hˆ˜ÐHÐHÑHØ+/ˆ
�H˜ZÔ(Ð/Ð/Ñ/Ø;?ˆ˜Ð"7Ô8Ð?Ð?Ñ?ð	+ð 	+ð 	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+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.StringDistancez¾Configuration 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$   rY   r   ÚStringDistanceEnumrZ   Úboolr   r   r   r   rX   Ç   sd   € € € € € € ð	ð 	ð )6Ô(Eˆ˜ÐEÐEÑEØ15ˆ�(Ð-Ô.Ð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   Nr@   Úprompt)r    r!   r"   r#   r   ÚQAr   r$   r@   r   r	   r`   r
   r   r   r   ra   r_   Ý   s]   € € € € € € ð	ð 	ð )6Ô(8ˆ˜Ð8Ð8Ñ8Ø+/ˆˆXÐ'Ô(Ð/Ð/Ñ/Ø/3ˆ�Ð+Ô,Ð3Ð3Ñ3Ð3Ð3r   ra   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   Nr@   r`   ©r    r!   r"   r#   r   Ú
CONTEXT_QAr   r$   r@   r   r	   r`   r
   r   r   r   Ú	ContextQArc   ì   ó]   € € € € € € ð		ð 		ð )6Ô(@ˆ˜Ð@Ð@Ñ@Ø+/ˆˆXÐ'Ô(Ð/Ð/Ñ/Ø/3ˆ�Ð+Ô,Ð3Ð3Ñ3Ð3Ð3r   rg   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.CoTQArd   r   Nr@   r`   re   r   r   r   ÚCoTQArj   ü   rh   r   rk   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   ÚJsonValidityrm     ó1   € € € € € € ð	ð 	ð )6Ô(Cˆ˜ÐCÐCÑCÐCÐCr   ro   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   ÚJsonEqualityEvaluatorrr     rp   r   rt   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   r[   r   r$   rw   r]   rx   ry   r   r   r   Ú
ExactMatchrv     sb   € € € € € € ð
	ð 
	ð )6Ô(Eˆ˜ÐEÐEÑEØ!ˆ�TÐ!Ð!Ñ!Ø#(Ð˜DÐ(Ð(Ñ(Ø$ˆ˜Ð$Ð$Ñ$Ð$Ð$r   rz   c                   ó:   — e Zd ZU dZej        Zeed<   dZe	ed<   dS )úRunEvalConfig.RegexMatchz¹Configuration 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|   0  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   Nr?   r@   Únormalize_byr`   r   r   c                 ó@   •—  t          ¦   «         j        d||dœ|¤Ž d S )N)r?   rƒ   r   rC   )r   r?   rƒ   r   r/   s       €r   rD   z"RunEvalConfig.ScoreString.__init__W  s/   ø€ ð �E‰GŒGÔÐT h¸\ÐTÐTÈVÐTÐTÐTÐTÐTr   )NN)r    r!   r"   r#   r   ÚSCORE_STRINGr   r$   r?   r   r   r@   r	   rƒ   Úfloatr`   r
   r   rD   r0   r1   s   @r   ÚScoreStringr‚   <  sþ   ø€ € € € € € ð	ð 	ð( )6Ô(Bˆ˜ÐBÐBÑBØ,0ˆ�(˜=Ô)Ð0Ð0Ñ0Ø+/ˆˆXÐ'Ô(Ð/Ð/Ñ/Ø(,ˆ�h˜u”oÐ,Ð,Ñ,Ø/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‰   _  s%   € € € € € € Ø(5Ô(Jˆ˜ÐJÐJÑJÐJÐJr   r‹   )%r    r!   r"   r#   r   Úlistr5   r   r   r   r%   r   r$   r6   r   r   r   r(   r)   r*   r7   r	   r<   r'   rI   rN   r   r   ra   rg   rk   ro   rt   rz   r€   r‡   r‹   r   r   r   r3   r3   O   sx  € € € € € € ðð ð< ?D¸eØð?ñ ?ô ?€J��U˜=¨#¨zÐ9Ô:Ô;ð ð ñ ðXð OSÐ�x  U¨<¸Ð+HÔ%IÔ JÔKÐRÐRÑRØ8Ø#'€M�8˜C”=Ð'Ð'Ñ'ð@à$(€N�H˜S”MÐ(Ð(Ñ(ðð  $€Iˆx˜Œ}Ð#Ð#Ñ#ðBà,0€HˆhÐ(Ô)Ð0Ð0Ñ0ØHð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð:ð :ð :ð :ð :Ð&ñ :ô :ð :ð*:ð :ð :ð :ð :Ð-ñ :ô :ð :ð(+ð +ð +ð +ð +Ð/ñ +ô +ð +ð(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   r3   N) r#   Útypingr   r   r   r   r   Úlangchain_core.embeddingsr   Úlangchain_core.language_modelsr	   Úlangchain_core.promptsr
   Úlangchain_core.pydantic_v1r   r   Ú	langsmithr   Ú(langchain.evaluation.criteria.eval_chainr   Ú,langchain.evaluation.embedding_distance.baser   rV   Úlangchain.evaluation.schemar   r   Ú)langchain.evaluation.string_distance.baser   r\   r   r'   r3   r   r   r   ú<module>r—      s›  ðØ 'Ð 'à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø "Ð "Ð "Ð "Ð "Ð "à BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð
!ð !ð !ð !ð !�ñ !ô !ð !ðHð ð ð ð ˜*ñ ô ð ð,QKð QKð QKð QKð QK�Iñ QKô QKð QKð QKð QKr   